TestRailはレガシープロジェクトのテスト管理を救えるのか。

これはQiita Engineer Festa 2024のキャンペーンテーマである[「そうだ！TestRailを使ってみよう！！」 ](https://qiita.com/official-events/5100659e9b4ffbcb941b)の記事です。

# はじめに

TestRailはブラウザ上で動作するテスト管理ツールです。

https://www.techmatrix.co.jp/product/testrail/

最初にこのツールを見た瞬間、真っ先に「あのレガシープロジェクト[^1]のテスト管理用エクセルもどうにかできるのかな？？？」と思いました。
該当のプロジェクトは長期の運用に加えて事情が複雑だったこともあり、テスト管理用のエクセルは地獄のようになっていました。書ける範囲だと以下のような状態だったと記憶しています。

* 長い時間とたくさんの人の知見が集積されたマクロにより、テスト項目の組み合わせが自動生成される（されない機能もあるので、それは人力で作る）
* 生成された項目から（プロジェクトを知っている人なら納得できるが、初見だとまずわからない判定基準により）テスト項目の要不要を選り分けている
* 機能ごとにテスト項目表の「確認内容」部分が細分化されている

かなり簡易に再現するとこんな感じのはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321603/6a83e26f-55c3-e095-ab8b-e70771f530f0.png)
		
実際は操作部分の箇所と確認項目部分はもっと複雑ですし、これが数百行あります。再現している最中に胸が苦しくなってきました。
マトリクス表ともデシジョンテーブルとも違うと思っているのですが、これは…何表なんでしょう…。

なお、この表は開発工程で必要になるもので、開発部隊が自分たちで作った機能を自分たちでテストするためのものです。QAが使用するものではありません。

# エクセル管理による限界

よくありがちなのが、最新版がわからないとか、複数人がローカルで編集してしまったからエクセル同士のマージ作業で心が死ぬとかでしょうか。思い出して「あれはほんと無駄な時間だったな」としみじみしてしまいました。
ぱっと見ても進捗率もわかりにくいし、テスト項目のやり残しがあったりして、管理が厳しいと感じることはとても多かったです。

# TestRailを使ってみる

一番大きな単位が`プロジェクト`で、その下に`テストケース`と、テストケースの集合である`テストスイート`、テストの実行結果である`テストラン`が管理されています。
最初説明を見ずに始めたので字面が似すぎて混乱したのですが、これさえ頭に入っていれば問題なく使い始められると思います。

テストの一覧もすごく見やすいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321603/b78025af-02c5-83ef-485c-f44f5a86f543.png)

ブラウザからアクセスすれば常に最新版ですし、複数人で編集してもコンフリクトすることはありません。

あとすごく良いなと思ったのが、サンプルプロジェクトに作業負荷を出しているグラフがあったことです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321603/7a07b852-f0c1-bf5c-3ace-16190925b9ae.png)

これは自分がプロジェクトに所属している時にめちゃくちゃ欲しかった機能です。エクセルだと誰が何のテストをどのくらいしているのか全然わからなかったので、手伝ってほしくてもリソースの空きがわからず全員疲弊しているというやばい状況でした。

# 良い！と感じたところ

作業負荷グラフ以外にも、デモサイトを使ってみて良いと感じたところを列挙します。

## テストの修正履歴が残る

テストケースごとに、いつ、誰がどこを変更したのかすぐわかるようになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321603/013689a9-9efb-1717-1387-53c0b290f3da.png)

仕様変更や機能追加により、確認項目の変更や、テストの前提条件を変更することがあります。このような場合、履歴を備考欄等に残すのが最適ですが、`テストケースに変更がある時＝作業が他にも山程ある時`なので、「後で書く」のまま放置されがちです。

修正履歴がわからないと、後々見返した時にテストケースの正しさを確認するのが困難になりますが、TestRailだとテストケースごとに履歴がわかるのですごく良いです。欲を言えばGitのように変更時にコメントが残せるとさらに便利だと思いました。

## テストスイート・テストランに説明を記載する欄がある

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321603/59bf89d2-ff4d-bbc9-d1cb-cce4954beb33.png)

きちんとしたテスト計画書であればいざ知らず、自分たちで作った部分を自分たちでテストする時は「なにを確認するためのテストなのか」「どのタイミングで実施するべきなのか」「なぜこのテストを実施したのか」といった共通認識のような箇所はアンドキュメントになりがちです。テストスイートごとに目的が文章として残せるのは地味だけれど嬉しいと思いました。

## Markdownが使える

一部フィールドにMarkdownが使えます。

https://docs.testrail.techmatrix.jp/testrail/docs/801/user-guide/getting-started/editor-formatting-reference/

`期待する結果`で試してみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321603/30629c5f-3b3e-1c19-7b79-37ee6f4723b0.png)

期待通り`code` になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321603/b493a1c6-7b34-6e38-a39d-10ef821e007f.png)

エクセルにありがちな「確認内容の項目にレスポンスボディが書いてあるが、読みにくい」という問題が解消できます。これはむちゃくちゃ嬉しいです！ただ、リスト記法と合体させてコードブロックを使おうとするとうまくいかなかったので、改善を期待しています。

# 厳しい…！と感じたところ

逆にこれは厳しいと感じたところを列挙します。

## フォーマットが結構ガチガチ

フォーマットに統一性が持たせられるため、テスト対象ごとに確認項目やテストの粒度が異なるといった問題は確実に減ります。逆を言うと融通が利かないので、最初に述べたエクセル管理表くらい複雑になるとテストケースが作れなくなります。
複雑な表は作れなくても良いのですが、もう少し項目の細分化ができれば嬉しかったです。
デモサイトだから難しいのかも…と思ったのですが、他のレビューを見ても「複雑な表は作れない」ということは言及されていたので、TestRailの仕様でそうなっているようです。

## `テストケース`と`テストスイート`と`テストラン`が横に並ぶと字面で区別がつかない

誇張抜きでTestRailを使う上で一番大きな障壁はこれだと思っています。
慣れの問題ではあるのですが、最初はぱっと見て区別がつかないので使っていてむちゃくちゃストレスが溜まりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321603/45559ef8-408d-945b-c2da-eb4be22d610c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321603/3877b6e0-a6b4-6d9d-6dd3-273b21582c10.png)

TestRailのレビュー記事を見ると、用語が難しいと書いている方が何人かいたのですが、字面を変えるだけでもだいぶ印象が違うと思います。
テストスイートはJSTQBのテキストを読んだことがあるか、JUnitあたりで使ったことがある人でないと混乱しそうです。

アクティビティでは色分けされていてわかりやすいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321603/2962530c-93fa-1bbd-a051-bb24952afea3.png)

## テストケースを連続で追加する時に画面遷移がある

テストケースは連続で追加できるのですが、追加するたびに画面遷移が発生するので、前に作った項目と見比べられないのと、待ち時間がストレスになります。エクセルは全部同じブックで完結するので、それと同じ感覚でテスト項目を作ろうとするとつらいです。

# 結局あのレガシープロジェクトのテスト管理はTestRailで救えたのか

救えなかったと思います。

TestRailを使っての印象ですが、Webアプリやスマホアプリといった、提供する機能が明確なソフトウェアのテストとは非常に相性がよいと感じました。一方で、今回のように機能が複雑で、フリーフォーマットでないとテスト項目の作成が難しい場合[^2]には向いていません。

* 複雑な表がフリーフォーマットで作れる
* 表を操作するスクリプトを書ける、かつ会社内外で広く使われている

という条件を満たそうとすると、どうしても秘伝のエクセルに頼らざるを得ません。
当時TestRailと出会っていたとしても、限られたリソースで脱エクセルではなく、テストの自動化を進めるほうに軍配が上がったと思います。

# どんなプロジェクトなら向いているのか

新規プロジェクトや、テスト項目をTestRailに落とし込めるプロジェクトであれば、是が非でも採用を検討すべきだと思います。将来に負債を残さないという点と、テスト項目の管理のしやすさでは圧倒的にTestRailが良かったです。

# おわりに

かなり色々書いたのですが、使い心地がとても良かったのと、今まで知らなかったサービスを知ることができたので、この記事を読んでくださった方はぜひデモサイトを触ってみてください。

https://www.techmatrix.co.jp/product/testrail/demo_site.html

[^1]: 過去に所属していた会社のプロジェクトです。紆余曲折を経て、現在はプロジェクトの運用は終了しています。
[^2]:そういう複雑なソフトウェアは使うのが難しいのでどのみち淘汰されたほうがいいという考えはないものとします。