Redcaseをリリース前手動テスト管理に使う
理由はいくつかありますが、私のチームではリリース前に定型的な項目で機能網羅的なテストを手動で行っています。数自体は大したことありませんが、手動であることも相まって昔ながらのExcel管理票が大活躍している領域です。なお、このリリース前テストをチームでは「疎通テスト」と呼称しています。
このような種類のテストがなかなか自動化していかないのは、過渡期だから仕方が無いとしても、項目の管理や実行の管理など、実施そのものではない部分でもう少し楽ができないかな、と思ってテスト管理ツールを導入してみました。ツールの選定と導入した時のポイントについてまとめてみます。
テスト管理ツールとは
困ったときのWikipedia。文章力が落ちていくのを感じます。
ざっくり言うと、テストの実施以外の部分で自動化できそうな集計やテストケースの再利用なんかを支援しましょう、というツールです。実施結果についてのレポーティングや他の開発支援ツールとの連携ができるようになっていることが多いようです。
リリース前テストを定型的なテストケースを使ってやっている場合、テスト管理ツール導入には以下のようなメリットを感じることができると思います。
- テストケースの管理
- 実行計画(ロードマップ、バージョンなど)の管理
- テスト実行記録の管理
- 実行結果のレポーティング(途中経過でも大丈夫)
何事も簡単になったり省力化されていくことは良いことです。
テスト管理ツールあれこれ
で、まずは導入するツールを選定しないことにはただの妄想です。デファクトスタンダードなものを含めていくつか調べてみました。
TestLink
テスト管理ツールで検索するとこれがまず出てくる程度にはデファクトかな、と思います(私は使ったことないですが)。オープンソースのテスト管理ツールの代表格で、インターネット上にも情報が豊富です。日本語化対応もされています。
TFS
Application Lifecycle Managementの一環としてテスト管理機能があります。Visual Studio Test Professionalを使えるようであれば、テスト管理の自動化と実行記録取得(バグ報告などに必要なやつ)支援機能など、かなり充実した機能を使うことができます。もちろん天下のMSさんなので日本語対応。
Redcase
Redmineにテスト管理機能を追加するプラグインです。まだまだ最低限の機能しかありませんが、最近でもそこそこ活発に機能追加を行っています。日本語の情報も少なく、また安定版になる前の情報が多いため、インストールのハードルが高そうに感じるのが難点です。日本語にも非対応。
Redcaseを使ってみる
さんざっぱらdisっといてなんですが、選ばれたのはRedcaseでした。
選んだ理由は、
- Redmineとのシームレスな管理が可能
- 連携システムを増やしてシステム構成を複雑にしたくない
- VS Test Professional会社で持ってない
といった辺りです。
特にプロジェクト管理的に、Redmineのロードマップが重要な役割を果たしているので、ロードマップごとのテスト管理のしやすさ、開発プロセスふまえて運用開始に持っていくまでのハードルの低さを考えると、もうRedcaseしか選択肢がなかった状態です。
プラグインのインストール
事前に色々と調べている最中ではインストール時にはまり要素が多いという印象でしたが、安定版では特に迷うことなく、redmineの通常のやり方でプラグインのインストールを完了できました。特筆すべきことはありません。
プラグインのインストール後、「ロールと権限」から新たに追加されたロールの設定をします。ここは後から変更も可能なので、まずは何も考えずにすべてチェックしておきます。
また、新しいトラッカー「TestCase」が追加されているので、テスト管理を行うプロジェクトで利用するようにしましょう。
そうすると、プロジェクトに「TestCase」タブが追加されます。
テストケースを作ってみる
テスト管理を行うため、まずはテストケースを作成していきます。追加されたトラッカー「TestCase」のチケットを作成してください。
ここで一点注意事項です。TestCaseトラッカーに関連づけられたフェーズは、テストケースの状態であってテスト実行の状態ではありません。各ステータスの意味合いは、おおよそ以下のような感じだと思います。
- New=作ったばかりで未レビュー
- In Progress=実行が必要なテストケース
- Obsolete=もう実行する必要がないテストケース
こうして作ったテストケースはTestCaseタブで提供される機能で管理します。
実行セットを作ってみる
TestCaseタブは以下のような画面構成になっています。作成したテストケースに対してManagementタブで、管理方針を決めていきます。
まずは、Test suitesと呼ばれるテストケースのまとまりから。シナリオや機能など、テストケースを分類する単位と思えばほぼ間違いないかと思います。作ったばかりのテストケースは「.Unsorted」に分類されています。テストスイートは新たに作成することも可能です。必要なテストスイートを作って、テストケースを分類しましょう。テストケースの移動はドラッグアンドドロップで実行できます。
次に、Execution suiteと呼ばれる実行するテストスイートの管理です。このExecution suiteでまとめた単位で実行記録をしていきます。操作感はだいたいTest suitesと同じ。実行スイートを作ってTest suitesからテストケースをドラッグアンドドロップで移動します。なお、Test suitesで作成したスイートごと移動するのは不可能な模様。これがバグなのか仕様なのかは不明です。
Environmentは実行環境の管理です。ここについては、システム連携などをしている所も特にないので、単なる一覧的な利用法をでない部分ではあるかな、と。とりあえず、私のチームではまだデフォルトだけです。
実行してみる
実行スイートの整理がすんだら、Executionタブを見てみましょう。このタブでは、テストの実行記録をつけていきます。
Execution suiteとバージョン、環境を選んでください。左下に実行スイートがツリー形式で表示されます。スイートにぶら下がっているテストケースを選択すると、右側にテストケースの情報と実行状態記録用の入力コントロールが表示されます。テスト結果の「Passed」と「Failed」以外はチームのルール次第で運用が変わるかな、という所ですね。
ちなみに、現在のところFailedのテスト実行結果からチケットを自動で起票したり、コメントにチケット番号を入力したら自動でリンクされたりとかの機能はないようです。せめて後者でもあるとテスト失敗の場合の不具合との関連がしやすくなるので良いのですが。。。
レポートを見る
テストの実行記録をつけたら、Reportタブを見てみましょう。実行スイートや環境、ロードマップなどを変更すると、実行記録に応じて進捗状態をレポーティングしてくれます。レポーティングも奇麗ですし、各種レポートやテスト項目などをダウンロードすることもできます。
実際のプロジェクトで使う
で、実際のプロジェクトでどういう構成になっているかというと、プロジェクト配下にサブプロジェクトとしてテスト管理プロジェクトを作成しました。テストケースのようにいつまでもクローズしないチケットを親プロジェクトの中に入れておきたくなかったというのが主な理由です。
また、私たちの開発プロセスでは、リリースごとにredmineのバージョンを追加してロードマップとして管理しています。疎通テストは、このリリースごとに実施するので、サブプロジェクトでもロードマップが参照できるように共有する必要があります。これでテスト項目のチケットを管理するプロジェクトを分けながら、親プロジェクトと関連を取りながらテスト管理が可能となります。
前述した通り、テスト失敗時の親プロジェクトへのバグチケット起票が自動化できるめどが立っていないので、この辺りの関連付けなどの運用は手作業から模索していくことになります。ある程度プロセスが固まってから自動化を考えた方が良さそうですし。今の所は、テスト結果がNGだったらバグチケットを起票して、エビデンスなど添付が必要なものは起票したチケットに添付、バグチケットの関連チケットに対してテストケースのチケットを関連づける、というのを考えています。(というか自動化できそう。。。)
まとめ
手動でやらないと仕方ないと思うような所も、周辺の作業などに対してツールでサポートできる領域がまだまだありそうですね。運用を経て、これからどういう活用になっていくのかがちょっと楽しみです。