テストの観点として、システムが要求や仕様通りに動くことは最低要件であり、より品質を高めるためにはシステムの構造を評価する構造テストが重要になってきます。構造テストの知識について理解しておくと、効率良く品質を作り込めるでしょう。そこで本稿では、「構造テスト」の定義と、活用されるテスト技法についてご紹介していきます。
- もくじ
1.ソフトウェアの内部構造を検証する「構造テスト」
1-1 構造テストとは
構造テスト(構造ベースドテスト)とは、コードやアーキテクチャ、データなどのシステム内部の構造を元にテストケースを作成していく手法です。定義によってはホワイトボックステスト技法と同一とされる場合もあります。
構造テストは、設計書や仕様書で示されたソフトウェアの内部構造を起点とし、発生しうるパターンや条件分岐の網羅性を上げることに焦点が置かれています。実施済みのテストがテスト対象システムの構造をどの程度網羅できたか計測し、その網羅度を向上させるために構造テストが実施されることもあります。
1-2 構造テストの対象範囲
構造テストは、ホワイトボックステストの性質が強く、単体テスト寄りの手法だと思われがちです。
しかし、システムテストなどのテスト工程の終盤で実施されることもあります。
単体テストの場合はコード、システムテストではメニューや画面などの構造をベースにテストを行います。
2.構造テストのテスト技法
構造テストで活用されるテスト技法は、ソフトウェアの構造をベースにテストを設計する手法です。実施するテストがテスト対象であるソフトウェアの構造の何割を網羅できているかを検証します。具体的には、ホワイトボックステストで活用されるコードカバレッジ技法のように、コード上の分岐条件や判定結果などを根拠に測定を行います。この章では、代表的な網羅度の計測方法について4つご紹介します。
ホワイトボックステストのコードカバレッジについての詳細はこちらをご確認ください。
2-1 条件テスト
個別の分岐条件の網羅に対応した技法です。条件によって導かれた結果判定には着目せず、純粋に条件単体の真偽の網羅を測定します。
上記のように、2つの入力値をテストすれば、個別の分岐条件は、両方とも真と偽を網羅しますが、複合条件の判定は偽のみしかテストされません。そのため、実際には条件テストの技法のみでは行われず、次以降の技法が使われます。
2-2 判定条件テスト
個別の分岐条件の網羅だけでなく、判定の網羅にも対応した技法です。そのため、ホワイトボックステスト技法におけるブランチカバレッジも網羅します。
上記の例では、条件テストとテストケース数が変わりませんが、通常、条件テストよりも件数が増加することが多く、より厳格なテストになるため、ある程度重要性の高いシステムに利用されます。
2-3 改良条件判定カバレッジ(MC/DC)テスト
改良条件判定カバレッジ(MC/DC)テストは、判定条件テストに加え、ある分岐条件の真偽を変更すると複合条件の判定が変わるケースをすべてテストする技法です。判定条件テストよりさらにテストケースの件数を多く、厳格になるため、不具合が人命に関わるようなシステムなどに利用されます。
2-4 複合条件テスト
各個別条件の真偽の組合せをすべてテストする技法です。ホワイトボックステストのマルチコンディションカバレッジと同様の考え方になります。テストケース数が非常に多くなってしまうため、代わりに改良条件判定カバレッジテストを採用されることが多いです。
まとめ
本稿では、構造テストの概念や利用できるテスト技法についてご紹介しました。
構造テストは、システムが仕様や設計に即しているかを確認するホワイトボックステストの性質が強く、システムの構造をベースに条件分岐や判定を適切に網羅できるように設計されます。
テスト対象となるシステムがどの程度の安全性が必要なのかに合わせて適切なテスト技法を選択することが重要です。効率良く必要十分な構造テストを実現しましょう。
参考URL
- テスト技術者資格制度 Advanced Level シラバス日本語版 テクニカルアナリスト|ISTQB(http://jstqb.jp/dl/JSTQB-Syllabus.Advanced_TTA_Version2012.J02.pdf)
- JSTQB-TTAシラバスのお勉強-第2章「構造ベースドテスト」(1)|ソフトウェアの品質を学びまくる2.0(http://www.kzsuzuki.com/entry/tta02)