アドベントカレンダー10日目
こんにちは。リリカルです。
前回は、テスト設計をすることでテスト分析のアウトプットが良い感じに成形されるという話をしました。より掘り下げてみていきます。
良い感じに調整するってどういうこと?
まず疑問に思うのはここです。テスト設計で一体何をしているのか。
私は大きく以下の二つがあると思っています。
- 他にもテストすべきところがないか考える(発想を広げる)
- テストしすぎているところがないか考える(収束させる)
逆に言うと、まったくテスト設計をしなければ本当はテストすべきだったことが漏れてしまうかもしれないし、あるいはテストしすぎてしまうかもしれません。そして、これらの問題はテスト分析や実装のプロセスで解決する問題ではありません。どちらも、テスト設計で考える部分です。
あくまでテスト分析ではテスト対象に関する情報やテストに対する要求をインプットにしてテスト条件を洗い出しているにすぎません。テスト分析のアウトプットを使って、より詳細な検討を行う必要があります。
例えば、テスト分析の結果「機能Aに関するテスト」というのが項目の一つにあったとしましょう。ここでテスト設計せず「機能Aに関するテスト」をやろうとしたらどうなるでしょう?おそらく、機能Aの仕様書を読んで必要と思われるテストを実行することになるでしょう。そして、この方法では、少なくとも初心者がテストした場合はほぼ確実にテストが漏れます。
なぜでしょうか?その理由は、この方法では「有則・無則のうち無則の部分のテストが検討されないことが多い」からです。
有則・無則についてはインターネットで検索していただければ情報が出てくると思いますが、要するに有則は仕様として定義されている領域なのに対し無則は仕様で定義されていない領域です。有則の領域では期待結果が存在するのに対し、無則の領域には期待結果が存在しません。「則」が「無い」わけです。
経験者であれば、無則であっても必要なテストがどのようなものかある程度見当がつくので補完することができます。しかし、特に初心者の場合はそこまで考慮できないことが多いです。テスト設計では、そこで発想を助ける工夫をします。例えばシステムの入力・出力といった一般的な構造のモデル図を描いてみたりして、考えられるノイズはないか、入力・出力のパターンはこれで全部かなど頭を使います。ゆもつよメソッドの論理的機能構造、HAYST法のラルフチャートなどがこれにあたります。また、マインドマップのように発想自体を支援するツールを使うというのも一つの手です。少なくとも、ただExcelの表とにらめっこしているだけではなかなか発想も広がらないのではと思います。
ここまでが、発想を広げる方ですがテスト設計ではもう一つ、テストしすぎているところがないか考える(収束させる)ということを行う必要があります。こちらについてはまた次回触れていきます。