はじめて学ぶソフトウェアのテスト技法
https://gyazo.com/223ab4dadbed5b194e9b78edf403e529
もう一冊の本よりも詳細で、かつ実践的な感じ。演習問題もあるので実際にテスターとしてテストの設計に関わる人はこれを読むと良さそう。理解できない箇所もあったのが、易しい方の本と一緒のタイミングで読んだのでテストについてはなんとなく概要がつかめたように思う。
個別の手法やテクニックについては今知る必要、理解する必要をあまり感じないので気になった点と分からなかった点をそのまま残す。
テストとは
テストとは、テストされるソフトウェアの品質を測定して改善するためにテストウェアをエンジニアリングし、利用し、保守しながら、同時抵抗的にすすめるライフサイクルプロセスである。
ブラックボックステストとは、要件や仕様にもとづいてテストを実施する戦略を意味します。ホワイトボックステストとはテスト対象ソフトウェアの内部パス、構造、実装にもとづいて、テストを実施する戦略を意味します。
テストは通常、テストケース設計も含めて、4つの異なるレベルで実施されます。それは単体テスト、統合テスト、システムテスト、受け入れテストです。
同値クラステスト
同値クラステストは、十分なテストカバレッジを保ちながら、テストケースの数を管理可能な程度に減らすための技法の1つです。
同値クラスは、モジュールで同等に処理されるデータ、あるいは同じ結果を返すデータの集合を意味します。クラスの中のどのデータも、テストという観点からは、他のデータと「同じ値」と見なせるわけです。
境界値テスト
同値クラステストは十分に有用ですが、境界値テストの考え方を導き出してくれたことが、その最大の功績です。
境界値テストは、十分なテストカバレッジを保ちながら、テストケースの数を管理可能な程度に減らすための技法の1つです。
境界値テストは境界に注目するテストです。理由は単純で、境界にはたくさんの血管が潜んでいるからです。
各境界について、境界上の値、境界のすぐ下の値、境界のすぐ上の値を1点ずつ選んで、テストケースを作ります。「すぐ下」と「すぐ上」には相対的な意味があり、「すぐ」がどれくらいかはデータの単位に依存します。
デシジョンテーブルテスト
デシジョンテーブルは、システムが実装しなければならない複雑なビジネスルールを記録するために用いられます。それに加えて、テストケースを作成する際の指針としても使えます。
条件は様々な入力条件を表しています。アクションとは、入力条件の様々な組み合わせの結果、実行される処理のことです。各ルールは一意な組み合わせを定義しており、その組み合わせが満たされると、ルールに関連付けられrたアクションが実行(起動)されます。
各ルールに対して、テストケースを少なくとも1つ作成する必要があります、ルールの条件が2値であれば、各組み合わせに対して1つのテストケースを用意すればおそらく十分でしょう。一方、条件が値の範囲で定義される場合は、範囲の下端と上端の両方のテストを考える必要があります。
ペア構成テスト・直交表
これちょっと難しかった
直交表は数字の入った2次元の配列で、次のような興味深い属性を持っています。配列から任意の2つの列を選ぶと、列のペアをどう選んでも、値のすべてのペアの組み合わせがそこに現れるのです。
直交表を使って、テストケースを割り当てるのは理解できたけど、なぜ直交表を使えばいいのか、があまり分からない
テストの組み合わせの数が非常に大きいときはペア構成テスト
ペア構成テストでは、すべての値のすべての組み合わせをテストするのではなく、変数値のすべてのペアをテストします。このやり方だと、作成・実行しなければならないテストケースは大幅に減ります。
直交表はテストケースの最小のサブセットを定義するのに使えるらしい
状態遷移テスト
状態遷移図をつかって、テストすべき状態、イベント、アクション、遷移を明確にしてテスト作業の指針とする
システムのふるまいを元にテスト設計する
ドメイン分析テスト
ドメイン分析は、複数の変数を同時にテストするための技法です。ドメイン分析が有効な理由は、すべての変数のために個別のテストケースを作成するのは多すぎてできないこと、ある変数はしばしば相互作用を持つこと、これにより変数を一つ一つ独立にテストしてもバグを検出できないため。
ドメイン分析は、同値クラステストや境界値テストを、n次の多次元に拡張して一般化したものです。同値クラステストや境界値テストと同様に、境界値が不正確に定義・実装された状況を見つけるのが目的です。
ホワイトボックステストの手順
テスト対象ソフトウェアの実装を分析する
テスト対象ソフトウェアのパスを識別する
テスト対象ソフトウェアの特定のパスを実行するような入力を求める
テストを実行する
実際の出力結果と期待する出力値を比較する
テスト対象ソフトウェアが正常に機能しているかどうかを判定する
ホワイトボックステストのカバレッジ
ステートメントカバレッジ(レベル1)
モジュール内のすべてのステートメントが少なくとも一回は実行される
これはかなりカバレッジとしては低い
ブランチカバレッジ(100%デシジョンカバレッジ)
すべての条件判定に対して、新都議を少なくとも一回ずつ評価する
100%コンディションカバレッジ
100%デシジョン/コンディションカバレッジ
100%複合コンディションカバレッジ
100%パスカバレッジ
探索的テストの利点
探索的テストは、次に実行すべきテストケースが事前に決定できず、むしろ1つ前に実行したテストとその結果に従って選択すべき場合に、高い価値を持つ
探索的テストは、開発プロセスの早期段階で、短い時間内に製品の品質についての端的かつ迅速なフィードバックを即席で構わないからして欲しい、と求められた場合に役立つ
スクリプトテストが「疲弊」つまりエラーをあまり検出できなくなった場合に、スクリプトテストを補完するものとして役立つ