[QCの基本]要件カバレッジ
これは2013年12月12日にHPのサイトで公開したブログ記事の転載です。QCの要件とテストのトレースを取れる機能の使い方をゆもつよメソッドのやり方を具体例にして説明したものです。ふりかえると、自分はテスト分析とテスト設計が別のモジュールで管理されているというQCのコンセプトに影響をうけてるんだなぁと思います。QCはこのコンセプトをちゃんと1990年代からツールとして実装していて、これ考えた人ってすごいなぁと思います。HPに行けばその人と会えるかと思ったのですが、結局無理そうです。
-------
QCの目玉機能である「要件カバレッジ」についてです.
要件カバレッジとは以下のようなUIで表示される要件から見たテストの状況を確認するグラフです.
この例はデジカメのテストで,「海外日時設定」という機能に対して,テスト分析を行い,テスト要件(JSTQBで言うところのテスト条件)をリストしているものです.
例えば,「海外日時設定」に対して「ボタン操作」というテストカテゴリから見ると,以下の...
サマータイム設定の保存
自宅場所の選択肢表示順
訪問先場所での自宅場所の選択
etc...以下省略
といったテスト要件が必要だということが列挙されています.
(ちなみに,このようにテスト条件をテストカテゴリ毎に分類して列挙するテスト分析方法は,私(ゆもつよ)が提唱しているやり方です.これ関しての詳しい解説は JaSSTでのパネル や この論文(英語) を確認してください)
テスト要件に対しては,テスト計画で作ったテストが紐づいています.例えば「訪問先場所での自宅場所の選択」というテスト要件に対しては3つのテストが紐づいています.
3つのテストの実行結果(テストインスタンスの最終結果)は1つが合格(Passed),一つが未実行(No Run),一つが失敗(Failed)となっています.
そして要件カバレッジにはサマリされてFailedのテスト要件が1つある,というように表現されています.
これは,「海外日時設定」という機能を確認するには,表示や入力チェック,ボタン操作などといったカテゴリに分類できるテスト要件(テストしなければならないこと)があり,これらのテスト要件(全部で27のテスト要件が紐ついている)を全部テストすることで十分にテストをしたと言える..ということが一目で把握できるということです.
「海外日時設定」をクリックすると下図のように,この機能の要件カバレッジが把握できます.
27のテスト要件に紐づいているテストは全部で42個あり,59.52%のテストが実行した結果Passedになっているが,15個のテストが未実行であるということがこのグラフから読み取れます.
また,円グラフをクリックするとテストの一覧へドリルダウンでき,そこをクリックすると各テストの詳細を確認することもできます.
下図の例は,No runのテストの一覧を見ているところです
このように,テストの進捗が要件ベースで確認できるのがQCの大きなメリットです.
ただし,QCは要件ベースで確認するための便利な道具に過ぎず,本質的には要件とテストのトレースを取れるようにテストを作っていくようにしなければなりません.
まず,テストケースを作るにはテスト分析とテスト設計という作業があることを理解し,その順序でテストケースを作っていくことが必要です.なぜならテスト要件はテスト分析のアウトプットで,テストはテスト設計のアウトプットというようにそれぞれの作業でのアウトプットを分けることがQCのメリットを引き出すからです.
テストを作るにはテスト分析,テスト設計という2つの作業があることを無視し,テスト要件という中間成果物を作らず,テストケースまで完成した後から要件と紐づけ(トレース)を始めようとすると,どのテストがどの要件に紐つくのか整理していくのに非常に工数がかかってしまいます.下手すると時間内に紐つけが終わりません.
そうなるとトレースを取るのをあきらめてしまう可能性もあり,テストと要件との紐付ができないという問題になってしまうのです.テストと要件(及び仕様)とのトレースが取れないプロジェクトも日本にはたくさんありますが,原因はテスト要件の識別をせず,いきなりテストケースを作ることが多いからです.
また,要件カバレッジのためにテスト要件を列挙していくのは,テストケースを作ったり実行したりする前に仕様のバグを見つけやすくなります.これは機能,テストカテゴリ毎にテスト条件を列挙する際に,そのテスト条件の期待結果まで必ず考えるようになり,期待結果の抜け漏れが減るからです.
まとめると要件カバレッジを取るようにすることで以下のメリットが享受できます.
・要件ベースのテストの進捗が分かる
(QCを使うとリアルタイムで把握できる)
・要件ベースの期待結果の抜け漏れや不整合をテスト実行より前に識別できる
サポートありがとうございます。これをカテにこれからも頑張ります。