🧪

セルフホストできるテストケース管理システムを開発しています

2024/11/23に公開

テストケース管理システム開発の経緯

皆さんの職場では、ソフトウェア製品のテストをどのように実行していますか?

単体テストやE2Eテストがある程度自動化されている場合でも、最終的には人手によるシステムテストが欠かせません。その際、多くの組織ではテストケースを作成し、それを基にテストを実施していると思います。しかし、そのテストケース管理に不便さを感じたことはありませんか?

私の所属する組織では、以下の図のようなExcelを使ってテストケースを管理しています。

Excelによるテストケース管理
Excelによるテストケース管理
[1]

おそらく、多くの組織で同様にExcelやスプレッドシートが使われているのではないでしょうか?Excelは非常に便利なツールですが、あくまで表計算ソフトであり、テストケース管理のために設計されてはいません。そのため、使い続けるうちに次のような課題が浮かび上がってきます。

  • 長いテスト手順を記載すると、一つのセルが異常に大きくなってしまう
  • 画面内に収まらず、頻繁に横スクロールが必要になる
  • 画像や添付ファイルを扱いづらい
  • 大量のテストケースがあるとファイルが重くなり、動作が遅くなる
  • 誰かが編集中だとファイルがロックされ、他の人が編集できない
  • テスト結果を集計したり、グラフで可視化するのに手間がかかる
  • 共有サーバーのどこに置いてあったか忘れてしまう

こうした理由から、ある程度しっかりシステムテストを実施する場合は、テストケース管理のために最適化された専用ツールの導入が必要だと思います。

既存のツール

私はまず世の中にどのようなテストケース管理ツールがあるか調査しました。それらは大きく分けてオープンソース型プロプライエタリ型に分類できます。

オープンソース型

オープンソース型のツールは無料で利用可能です。例えば、TestLinkkiwiTCMSといったOSSがあります。コードをクローンして自分でサーバーを立てて試してみたところ、テストケースの登録や更新のたびに頻繁なページ遷移が必要で、UIや操作性が若干古いと感じました。

プロプライエタリ型

一方、プロプライエタリ型、つまり有償の製品は洗練されたUIを持ち、モダンで使いやすいものが多いです。例えば、TestRail, Qaseといったものが有名です。デモサイトで試してみたところ、その使いやすさと洗練されたUIに魅力を感じました。

ただし、プロプライエタリ型の製品はSaaS, つまりクラウドで利用する形態のものがほとんどです。一部クラウド版だけでなくオンプレミス版も提供しているものもありましたが、オンプレミス版の料金はクラウド版に比べてかなり高額です。

開発を始める

私の組織ではクラウド型サービスの新規利用には上司や部門への申請手続きが必要で、正直面倒です。それに対し、オンプレミス版やセルフホストして使用するものであれば閉じた環境で使えるので導入は容易です。しかし、既存のオープンソース型ツールはUIや操作性の面で満足できるものはありませんでした。

そこで、直感的でモダンなUIを持ち、セルフホスト可能で、オープンソースのテストケース管理ツールを自分で作り始めました。

できたもの

UnitTCMSというツールを開発しました。開発経緯にある通り、モダンで使いやすくセルフホスト可能なツールを意識して作りました。一つの会社や研究室などの小さい規模でセルフホストして使うケースを主に想定しています。

UnitTCMS
UnitTCMS

GitHubレポジトリはこちらです。

https://github.com/kimatata/unittcms

UnitTCMSの機能

テストケース管理

当たり前ですが、テストケースを管理できます。テストケースはプロジェクト、フォルダにより分類されます。

テストケース管理

添付ファイル

ドラッグアンドドロップで添付ファイルを追加し、テストケースをより詳細に説明できます。

添付ファイル

テストラン実行

一度定義したテストケースはテストランにより何度も繰り返し使用可能です。

テストラン実行

権限管理

プロジェクトにメンバーを追加/削除してチームでのテスト実行をサポートします。

プロジェクト全体を管理する「管理者」、テストの設計を行う「設計者」、テストの実行を担う「報告者」と各メンバーに役割を設定し、権限を細かく管理することができます。

権限管理

その他

多言語(いまのところ、日本語と英語だけ)とダークテーマにも対応しています。

多言語対応とダークテーマ

使用技術

以下のフレームワーク、ライブラリを使用しています。

フロントエンド

技術 用途
Next.js フロントエンドフレームワーク
NextUI UIライブラリー
next-intl 多言語対応
ApexCharts グラフ化

バックエンド

技術 用途
Node.js JavaScriptランタイム
Express APIサーバー
Sequelize ORM
SQLite DB

お試しください

UnitTCMSのデモサイトを用意しています。お気軽にお試しください。

  • PCやタブレットなどある程度横幅のある端末でお願いします
  • デモ環境は少し動作が遅いですが、セルフホストすればもっと高速に動作します

また、より詳細な説明やセルフホスト手順を説明したドキュメントも作成しています。

終わりに

まだまだ作り途中で粗があると思いますが、少しでも興味を持っていただけたら嬉しいです。ツールに関するご質問、バグ報告などありましたらコメントかGitHubのissueにてご連絡ください。PRなども大歓迎です。

脚注
  1. https://docs.catcloud.net/manual/feature/test/suite/create-from-file.html ↩︎

Discussion