ソフトウェアテスト技法の分類
現実のソフトウェアの仕様は複雑です。 複雑な仕様に対するテストケースを力技で用意すると、テストケース数が膨大になったり、テスト観点にぬけもれが発生します。 テスト技法と学ぶことで、テストケースを効率的かつ網羅的に整理できるようになります。
このレクチャーでは、テスト技法の必要性について具体例を使って説明し、テスト技法の大まかな分類について解説します。
目次
テスト技法はなぜ必要か
テスト技法は、
- テストケースを抜けもれなく洗い出すため
- テストケースの数を効率的に絞り込むため
に用いられます。
テストケースの数を効率的に絞り込む例を挙げます。
- 年齢を入力して18歳以上を成年、そうでない場合は未成年
と判定するプログラムをテストする場合を考えましょう。 このプログラムを手当たり次第にテストすると、
- 0歳のとき、未成年
- 1歳のとき、未成年
- …
- 17歳のとき、未成年
- 18歳のとき、成年
- …
- 100歳のとき、成年
のように、年齢を1歳ずつ増やして動作を確認することになります。 このような方法では、網羅率は上がりますがテストケースの数が膨大になってしまいます。
この場合の効率的なテストは、未成年と成年の境目である17歳と18歳をテストすることです。 これは、同値分割法というテスト技法によるテストケース削減の例です。
このように、テスト技法によって、網羅的かつ効率的なテストケースを作成することができます。
テスト技法の大分類
テスト技法はホワイトボックステストとブラックボックステストに大別できます。
- ホワイトボックステスト:ソフトウェアの内部構造を知っている状態で実施するテストです。条件分岐などの処理が正しく動作しているかを確認します
- ブラックボックステスト:ソフトウェアの内部構造を知らない状態で実施するテストです。テスト対象の入力と出力に注目して、仕様通りに動作しているかを確認します
ホワイトボックステストの分類
ホワイトボックステストには、制御フローテストとデータフローテストの2つがあります。
- 制御フローテスト:命令文の実行や条件分岐が意図したとおりに動作しているかを確認します
- データフローテスト:ソフトウェア内部で使用されている変数の値が意図した通りに変化しているかを確認します
ブラックボックステストの分類
ブラックボックステストには、次のような分類があります。
- 同値分割法:プログラム中で同じように扱われる入力値をグルーピングして、各グループの代表値だけをテストする手法です
- 境界値分析:以上/以下などの入力値の境界の付近を重点的にテストする手法です
- デシジョンテーブルテスト:条件の組み合わせを表形式で整理し、それぞれの状況で期待される結果をテストする手法です
- 状態遷移テスト:システムの状態の変化を状態遷移表と状態遷移図で整理する手法です
- ペアワイズテスト:入力値の組み合わせの中で重要なペアを選び出し、テストの組み合わせを絞り込む手法です
まとめ
複雑な仕様をテストするときには、テスト技法を用いて網羅的で効果的なテストケースを作成するスキルが役に立ちます。 このレクチャーでは、テスト技法の役割と大まかな分類について解説しました。
- テスト技法は大きく「ホワイトボックステスト」と「ブラックボックステスト」に分類できます。
- ホワイトボックステストとブラックボックステストの違いは、テスト対象の内部構造に注目するかどうかです
- ホワイトボックステストには、制御フローテスト・データフローテストがあります
- ブラックボックステストには、同値分割法・境界値分析・デシジョンテーブルテスト・状態遷移テスト・ペアワイズテストがあります
これ以降のレクチャーで各テスト技法を掘り下げて理解していきましょう