テスト管理ツール導入のススメ

[ソフトウェアテスト Advent Calendar 2016](http://qiita.com/advent-calendar/2016/softwaretesting) 22日目の [@e5rijun](https://twitter.com/e5rijun) です。
今回はテスト管理ツールの導入について書きます。

QA組織を作るうえで、テストケースを始めとするテストドキュメントを管理するツールの選定で頭を悩ませた経験がある方は多いと思います。自分は、テスト界隈には開発における GitHub のようなデファクトスタンダードなツールがないと思っています。

よくある話として、マニュアルテストケースの管理で Excel や Google などのオンラインスプレッドシート（これらも広義ではテスト管理ツールと言える）を使っているが、
チーム内でドキュメントやノウハウの共有が難しかったり、ステークホルダーにテストの全容を把握してもらうのが難しかったり、ケースのメンテナンスに工数がかかったり、結局いい感じの修正フォーマットを作るためにマクロ職人になる必要があったりなど、様々なツールの制約による不便を感じることがあると思います。

テスト管理ツールは、そのような課題を解決する手段として用いることができます。

# テスト管理ツール とは
https://en.wikipedia.org/wiki/Test_management_tools 
> Test management tools are used to store information on how testing is to be done, plan testing activities and report the status of quality assurance activities. The tools have different approaches to testing and thus have different sets of features. Generally they are used to maintain and plan manual testing, run or gather execution data from automated tests, manage multiple environments and to enter information about found defects. Test management tools offer the prospect of streamlining the testing process and allow quick access to data analysis, collaborative tools and easy communication across multiple project teams. Many test management tools incorporate requirements management capabilities to streamline test case design from the requirements. Tracking of defects and project tasks are done within one application to further simplify the testing.

本稿で取り扱うテスト管理ツール（以下ツール）の定義は、**「テスト要件管理、テストケース作成、テスト実行、テストレポート など一連のテスト活動を支援するツール」** のことです。

製品は多種多様で、クラウド、プロプライエタリ、オープンソースなどで提供されており、多くが BTS と連携可能であり、CUI, GUI のテスト自動化実行を支援しているものもあります。

# 良いテストケースの条件
そもそも良いテストケースの条件とはなんでしょうか。
[ソフトウェア・テスト PRESS Vol.1](http://amzn.asia/1xc9Ttl) では、以下に当てはまるものが良いテスト仕様書（ここではテストケースと言います）として紹介されています。

> - テスト要件とのトレースがとりやすい ⇒ テスト要件のカバレッジがわかる
- どこに何が書いてあるかわかりやすくする ⇒ テストケースの漏れや重複を起こしにくくする
- 適切な細かさで記載しやすくする ⇒ 誰がやっても同じテスト結果になる
- 修正しやすい ⇒ 追加・変更しやすいテスト仕様
- テスト実施結果(ログ)を残しやすい ⇒ 最新の情報に更新される頻度が早くなる
- テスト消化率のとりやすいしくみがある ⇒ テスト実施の進捗を把握できる

Excel のような Spreadsheet を使用してテストケースを管理する場合は、これらを全ての条件を満たすのはどうしても難しくなってきます。（特に要件とのトレース、テスト実機結果を残す、テスト消化率をとるあたり）
良いテストケースの条件を満たすために、テスト管理ツールの導入するというのはとても良い動機づけになると思います。

# 組織で導入検討すべきかどうかのチェックポイント
冒頭で述べたように、マニュアルテストケースを Excel、オンラインスプレッドシートで管理している組織では、以下のような問題があることをよく聞きます。

- サービスや担当者によって属人化しており、テストケースの種類、フォーマットが異なる。（そのため担当者間でサービスの引き継ぎが困難）
- テストレポートを手動作成している。自作した集計マクロから抽出したテスト実施結果、BTS情報などを手動で整形しているので、時間がかかる且つデータにミスが生じやすい。
- ステークホルダーがテスト内容、結果を俯瞰し辛い。<del>そもそも MS Office を開きたくない</del>
- テストケースの変更履歴や変更の経緯を記録しにくい。
- テストケースのオンラインオンタイムの更新が難しく、随時最新ステータスの把握が難しい。同時編集ができない。（主にExcel）
- テストケースのレビューがしにくい。
- テストケースとバグレポートの紐付けが出来ていない。（そのため機能毎のバグ検出率などの集計できない。）

ツールを導入することで、これらの問題は解決に導くことが出来ます。

# 導入することで期待される効果
ツールを導入することで、例えば以下のようなの効果が期待できます。

* テストケースを始めとする、テストのドキュメントがプロジェクト間で一元管理できる。
* ステークホルダーがツールを通じて、テスト内容とテスト結果が俯瞰することができ、テストの透明性を高めることが出来る。
* 作成したテストケースに手を加えて簡単に再利用できる。
* バグレポート、実行時間、実行者の記録が正確にロギングされる。
* テスト進捗・不具合発生率など、プロジェクト／要件／リリース別の分析ができる。プロジェクトの品質状況を正確に見積もる材料を提供できる。
* BTSの権限を継承できる。(BTS Pluginの場合)

# ツールの選定
いざ導入を検討するとなって、数あるツールから何を選ぶのがよいのでしょうか。
Wikipedia の [List of test management tools](https://en.wikipedia.org/wiki/Test_management_tools#List_of_test_management_tools) で紹介されているのは一部ですが、ここを見て分かる通り 国内/国外・有償/無償 含め本当に数多くのツールが存在しています。

最適なツールの選定は、組織のテストプロセスやその他要因によって決定すべきだと思うので、チーム内でツールの調査するのは勿論ですが、必要に応じてプロジェクトのステークホルダーも巻き込んで議論しましょう。
有償なものはトライアル版などの使用から始めてみて、有用性を十分理解したうえで導入に踏み切りましょう。

**ツールの要件、構成管理と組織のテストプロセスがマッチするかどうか** や、**有償の場合は導入メリットがコストが上回るかどうか** などが意思決定において重要な要素になると思います。

# 代表的なツールの紹介

今回は極一部ですが、自分が試したことがあるツールで BTS Plugin として提供されていて、利用ユーザー数が多く、評価が高いものを紹介します。
（触った感想は、数分しか評価していないものもあるためあまり参考にならないですが...）

| 名称 | 公式URL | 触った感想 |
|:-----------|------------:|:------------:|
| Zephyr       |        https://www.getzephyr.com/ |     JIRA Plugin とエンタープライズ版がある。テスト管理ツールとしてかなり幅広い機能をサポートしている。    |
| Xray     |      http://www.xpand-addons.com/xray/ |    Zephyrと似てるけど、検索が使いやすいのと、コストがより安い。   |
| TestRail       |        http://www.gurock.com/testrail/ |     RedmineライクなUI。いろんな出力形式でレポートとメトリクスがとれる。 |
| Qmetry       |       http://www.qmetry.com/ |    知名度は劣るが、Zephyr、Xray と同じような機能が提供されている。    |
関連リンク

* https://marketplace.atlassian.com/plugins/app/jira/popular?category=Testing+%26+QA
* http://www.redmine.org/projects/redmine/wiki/ThirdPartyTools#Test-Case-Management
* http://www.glintech.com/blog/comparing-xray-and-zephyr-which-jira-test-management-tool-is-for-you.html

# 最後に
ツールを正しく導入して効果的に活用することができれば、必ずQAチームのテスト効率化、組織力向上に結びつくと思います。
もしも、導入を検討する際は、**現状のテストプロセスの問題点、導入した場合のメリット** をしっかり見極めましょう。

また、テスト管理ツールは **テスト手法自体に問題がある場合にはその解決方法にはなりえない。** ということは注意が必要です。
つまり、テストプロセスの BDTPIモデルで言うところの、SR (利害関係者との関係)、TM（テスト管理）の改善が期待できますが、 TP（テスト業務の専門性） の改善についてはその限りではないです。例えばテストカバレッジが低いので品質が悪いみたいな問題はテスト管理ツールを導入が解決策にはなりません。

そして、この記事では具体的なツールの説明は書いていませんが、20日目の miwakai さんが [SquashTMことはじめ。](http://qiita.com/miwakai/items/843c76e50eef7719ae6d) でテスト管理ツールの導入事例とわかりやすい成功体験を書いてくださっているので、興味があればあわせて参考いただけると良いかと思います。