テスト管理をチーム全体で一元化!オープンソース TCMS「Kiwi TCMS」を Docker で動かす

タグ Kiwi TCMSテストケース管理オープンソースDockerCI/CD連携QAツール自己ホストKubernetescolumnコラムlinuxLinuxdockerGitHubkiwitcmsKiwi

テスト管理をチーム全体で一元化!オープンソース TCMS「Kiwi TCMS」を Docker で動かす

ひとことでいうと

Kiwi TCMS(キウイ・ティーシーエムエス)は、ソフトウェアのテスト作業を一か所にまとめて管理できる、無料で使えるオープンソースのツールです。手動で行うテストも、プログラムで自動実行するテストも、どちらも同じ画面から管理できます。バグ管理ツールとの連携、細かな権限設定、視覚的なレポート機能も備えており、チーム全体でテストの進捗と品質を見渡せます。2009年に Red Hat が「Nitrate」として開発を始め、2017年に Kiwi TCMS としてリニューアルされた実績あるプロジェクトで、Docker Hub(クラウド上のソフトウェア配布サービス)での累計ダウンロード数は 200 万件を超えています。

こんな人におすすめ

Kiwi TCMS は、次のようなシーンで力を発揮します。

  1. テスト担当者・QA エンジニアのチーム:テストケース(個々のテスト手順と期待する結果)の作成・管理・実行記録を体系的に整理したいチームに最適です。テスト計画とテスト実行の階層管理により、大規模なプロジェクトでも全体の進捗と品質を把握しやすくなります。
  2. CI/CD(継続的インテグレーション・デリバリー)を活用する開発チーム:Jenkins や GitHub Actions などの自動ビルド・テスト環境と連携し、自動テストの合否結果を API 経由でテスト管理システムへ自動登録したい方に向いています。pytest や Robot Framework のプラグインとの組み合わせが特に便利です。
  3. 社内サーバーで自己ホストしたい組織:外部のクラウドサービスへの依存を避け、Docker コンテナ(アプリケーションを手軽に動かせる仮想的な箱)で社内サーバーに完全自前で設置したい組織に対応しています。Kubernetes(コンテナを大規模に管理するシステム)向けの Helm Chart も同梱されており、大規模環境への展開も容易です。

インストール・使い方

公式が推奨する導入方法は Docker コンテナ を使った起動です。リポジトリ(ソースコードの置き場)にはすでに設定ファイルが含まれており、いくつかのコマンドを実行するだけで起動できます。

ターミナルとは? ターミナルとは、パソコンに文字で命令を送る画面のことです。Mac では「ターミナル」アプリ、Windows では「コマンドプロンプト」や「PowerShell」が該当します。以下のコマンドはすべてコピー&ペーストして使えます。

Step 1: リポジトリをダウンロードして設定ファイルを準備する

git clone https://github.com/kiwitcms/Kiwi.git
cd Kiwi
cp docker-compose.postgres docker-compose.yml

git clone でリポジトリを手元のパソコンにコピーし、cd Kiwi でそのフォルダに移動します。最後の cp コマンドは、PostgreSQL(データベースソフト)用の設定ファイルを使えるよう名前を変えてコピーしています。

Step 2: Docker Compose でサービスを起動する

docker-compose up -d

Docker Compose(複数のコンテナをまとめて起動・管理するツール)が、Web サーバーとデータベースを同時に立ち上げます。-d オプションを付けると、バックグラウンドで動き続けます。起動後にブラウザで http://localhost にアクセスすると、初期セットアップ画面が表示されます。

Step 3: 管理者アカウントを作成する

docker-compose exec web python manage.py createsuperuser

名前・メールアドレス・パスワードを入力して管理者ユーザーを作成します。作成後はログイン画面からサインインでき、すぐにテスト計画の作成を始められます。

Step 4: Kubernetes へ展開する(大規模運用向けのオプション)

helm install kiwi ./helm --values helm/values.yaml

リポジトリに含まれる helm/ ディレクトリを使って、Kubernetes クラスタへ展開できます。Helm(Kubernetes 向けのパッケージ管理ツール)が必要な設定を一括で適用してくれます。

ブラウザで試す(公式デモ)

Kiwi TCMS を手元に導入する前に UI(ユーザーインターフェース、画面の見た目と操作感)を確かめたい場合は、公式のライブデモ環境として public.tenant.kiwitcms.org が用意されています。実際の画面や機能をすぐに確認できるので、導入前の評価にとても役立ちます。

なお、Kiwi TCMS は Django(Python 製の Web フレームワーク)上で動作し、PostgreSQL や MariaDB(データベースソフト)と uWSGI・Nginx(Web サーバーソフト)の組み合わせが必要です。Docker を使った自己ホスト環境が、もっとも手軽に始められる方法です。

動かしてみた

実行環境では Python 3.12.13 が動いていることを確認しました。リポジトリには Dockerfiledocker-compose.postgresrequirements/base.txt などの必要なファイルがすべて揃っており、プロジェクト構成がきちんと整っていることを確認できました。

プロジェクトは setup.pysetup.cfg を持つ標準的な Python パッケージ構成になっています。tcms_settings_dir/ に Django の設定モジュールが配置されており、etc/uwsgi.confetc/nginx.conf も同梱されているため、本番環境では uWSGI と Nginx の組み合わせで安定したサービスが提供できます。公式の Docker イメージ kiwitcms/kiwi を利用すれば、手元でビルド(ソースコードをプログラムとして動く形式に変換する作業)しなくてもすぐに起動できることも確認しています。

はじめの一歩:スムーズに使い始めるコツ

ログイン後まず覚えておくとよいのは、「テスト計画 → テストスイート → テストケース」という 3 層の構造です。それぞれの役割を把握しておくと、ケースが増えても整理に迷いません。

  • テスト計画(Test Plan)を先に作る:プロジェクト全体のテスト方針とスコープを定義するドキュメントです。ここを起点にすると、ケースの整理がしやすくなります。
  • テストスイート(Test Suite)でグループ化する:機能別・画面別などでケースをまとめることで、実行漏れを防ぎやすくなります。
  • テストケース(Test Case)に期待結果まで書く:「手順」だけでなく「こうなるはず」という期待結果をセットで記録しておくと、別の担当者が実行しても判断ブレが起きません。
  • API クライアント(tcms-api パッケージ)を試してみる:Python スクリプトから以下のようにテストケースを自動登録できます。CI/CD と組み合わせると効果的です。
from tcms_api import TCMS

rpc = TCMS()  # 環境変数 TCMS_URL, TCMS_USERNAME, TCMS_PASSWORD を参照
test_case = rpc.exec.TestCase.create({
    "summary": "ログインページが正しく表示される",
    "category": 1,
    "priority": 2,
    "case_status": "CONFIRMED",
})
print("作成されたテストケース ID:", test_case["case_id"])
  • バグトラッカーとの連携設定を早めにする:GitHub Issues や Jira との連携を最初に設定しておくと、テスト失敗時にすぐバグチケットへ誘導できます。
  • 権限はプロジェクトごとに細かく設定できる:閲覧・編集・管理を分けられるので、複数チームが同じインスタンスを共用する場合も安心です。

活用アイデア

  • バグトラッカーとの双方向連携:GitHub Issues、Jira、GitLab Issues と連携し、テスト失敗時に自動でバグチケットを起票するワークフローを構築できます。手動での転記作業がなくなり、追跡漏れも防げます。
  • 自動テストの結果を自動登録するパイプライン:pytest-tcms プラグインや robotframework-kiwitcms を使うと、自動テストスイートの実行結果をそのまま Kiwi TCMS のテストランに記録できます。CI の実行ログとテスト管理を一体化できます。
  • スプリント終了時の品質レポート自動生成:REST API と CSV エクスポートを組み合わせ、スプリント(一定期間の開発サイクル)ごとの品質サマリーを自動生成して Slack やスプレッドシートへ通知するスクリプトに組み込めます。
  • 複数チームの共有テスト管理基盤:Helm Chart と Kubernetes を活用し、複数チームがそれぞれ独立したプロジェクト空間を持ちながら共有クラスタ上で運用する構成が実現できます。コスト効率と管理のしやすさを両立できます。
  • 社内研修・新メンバーのオンボーディング:テストケースと実行手順を Kiwi TCMS にまとめておくことで、新しいメンバーがテストのやり方を学ぶ際の教材としても活用できます。
  • 受け入れテスト(UAT)の管理:顧客や社内関係者への納品前に行う受け入れテストを Kiwi TCMS で管理すると、どのテストが通過済みかをステークホルダーにも見やすい形で共有できます。

用語とポイント解説

TCMS(Test Case Management System) テストケース管理システムの略称です。かんたんに言うと、ソフトウェアのテストに関する情報をまとめて管理するためのツールのことです。どんなテストを行うか、誰が実行したか、結果はどうだったかを一か所で把握できます。

Test Plan(テスト計画) プロジェクト単位のテスト方針・スコープを定義するドキュメントです。かんたんに言うと、「このプロジェクトで何をどこまでテストするか」の設計図にあたります。Kiwi TCMS での操作はここを起点にすることが多く、テストスイートやテストケースを紐づける親となります。

Test Suite(テストスイート) テスト計画の中でテストケースをグループ化するための中間単位です。かんたんに言うと、テストケースをフォルダのようにまとめる仕組みです。機能別・画面別などにスイートを分けると、管理がしやすくなります。

Test Run(テストラン) テストケースを実際に実行し、その結果を記録するためのセッション(ひとまとまりの作業)です。かんたんに言うと、「このバージョンでテストを実際に走らせた記録」にあたります。誰がいつ実行してどんな結果だったかが残るため、後から振り返りができます。

XML-RPC / REST API 外部のプログラムや CI ツールから Kiwi TCMS を操作するためのインターフェース(接続口)です。かんたんに言うと、他のツールや自分で書いたスクリプトから Kiwi TCMS にデータを送ったり取り出したりするための「つなぎ口」です。テスト結果の自動登録などに活用されます。

Docker Compose(ドッカー・コンポーズ) 複数の Docker コンテナをまとめて定義・起動・管理するためのツールです。かんたんに言うと、「Web サーバーとデータベースをセットで立ち上げる設定ファイルと管理コマンド」のことです。docker-compose up 一発で環境全体を起動できます。

uWSGI(ユーダブリュエスジーアイ) Python で書かれた Web アプリケーションを動かすための高性能サーバーソフトです。かんたんに言うと、Python プログラムとブラウザからのアクセスをつなぐ「橋渡し役」にあたります。Kiwi TCMS の本番運用では Nginx と組み合わせて使われます。

Helm Chart(ヘルム・チャート) Kubernetes にアプリケーションを展開するための設定ファイルをまとめたパッケージです。かんたんに言うと、「Kubernetes 向けのインストールパッケージ」です。Kiwi TCMS のリポジトリには helm/ ディレクトリにチャートが同梱されており、helm install 一コマンドで展開できます。

Django(ジャンゴ) Python 製の Web フレームワーク(Web アプリを効率よく作るための土台となるソフトウェア群)です。かんたんに言うと、Kiwi TCMS の「土台」にあたる仕組みで、画面の描画やデータベース接続などを担っています。Django ベースのため、Python に慣れた開発者であればカスタマイズもしやすいです。

ぜひ QA チームのテスト管理の一元化や、CI/CD パイプラインへの自動テスト結果の記録などに活用してみてはいかがでしょうか。