テスティング技法が注目される背景

ソフトウェアが大規模、複雑になり、テストに要する期間・工数も増大している。しかし、現状は前工程の遅れがテスト工程を逼迫している。
テストをいかに効率よく実施し、品質を確保するかが課題になっている
(どんな言語で作るか、どう作るかは手段であって目的ではない。品質の高いもの(=お客様の要望を実現したもの)を提供できるかどうか。)

最近のテストの考え方

・従来
最終工程でまとめてテストを行い、バグを発見・除去を行う。
→上手くいっていない
・最近
最終工程に限定せず、計画的に適時実施する。上流工程から品質の作り込みを行う。

テスティングとは

・プログラムの振る舞いを、通常は無限に大きいと考えられる実行領域から有限なテストケースの集合を選定し、期待通りか動的に検証すること
無限から有限な領域を切り出す為に、テスティング技法が必要

テスト設計

テストの目的を明確にし、目的を達成するにはどうすれば良いかを設計(工夫すること)すること。
爆発的に増加するテストケースから、必要なテストケースを選定する。

テストケース選定の原理(無限から有限に)

テスト目的…テストで何を検証したいかを明確化する
基準を定める
 ・テスト十分性基準…テスト目的を達成するには、どれだけテスティングを行えば良いかの基準を決める
 →どこまでテストを行えばよいかが分からない
 ・テスト選択基準…テストの目的を達成するには、どのようなテストケースを取り上げれば良いかの基準を決める
 →無駄なケースを取り上げてしまい非効率
テストケース選定…上記の基準に基づきテストケースを選定する
テストケースの有効性の判断…選定したテストケースがテスト目的にあっている判定する

テストの一般原則

原則1:テストは欠陥があることしか示せない
テストは欠陥を発見できるが、欠陥がないことを証明できない
原則2:全数テストは不可能
単純なソフトウェア以外は、すべての条件をテストすることは非現実的である
原則3:初期テスト
ソフトウェアシステム開発のライフサイクルのなるべく早い時期に開始すべき
原則4:欠陥の偏在
欠陥や運用時の故障は、スクや優先順位によりテストの焦点する
原則5:殺虫剤のパラドックス
テストケースを定期的に見直して、改定する必要がある
原則6:テストは条件次第
医療システムのテストは、ECサイトとのテストとは異なる
原則7:「バグゼロ」の落とし穴
バグが0だからといっても、要件を満たしていなければ、そのシステムは役に立たない