daisuzz.log

"ソフトウェアテスト技法ドリル"を読んだ

ユニットテストや、シナリオベースのテストケースのレビューをする機会が増えたため、テスト観点の洗い出しやテストケースの上手な作り方を学ぶ目的で、少し古いですが評判が良かったこちらの本を読みました。

この本では、テストについて点(仕様の怪しい箇所に対する探索的なテスト), 線(値の境界に対するテスト), 面(関連する複数の変数に対するテスト), 立体(関連する変数のパターンの洗い出し), 時間(状態とイベントに対するテスト), 多次元(目的に応じたテスト),という形で分類した上でそれぞれのテストで利用できるテスト技法が紹介されています。

例えば点であれば、システムの仕様について"間", "対象", "類推", "外側", という観点でピンポイントに仕様の怪しいところを深掘りしてテストケースを考えていく、ということが書かれており、そこで利用できる3色ボールペンという技法が紹介されています。

他にも同値分割や境界値分析, デシジョンテーブルといった基本的な技法から、テストケースのパターンを効率よく減らすために使われるペアワイズテストやHAYST法が紹介されていたり、Nスイッチカバレッジなどあまり馴染みのないテスト技法が紹介されています。

個人的には、この本で紹介されているペアワイズテストやNスイッチカバレッジなどのテスト技法が、普段の業務でどれだけ使われているのか気になりました。

ペアワイズテストについては、以下のような記事が書かれていたり、

*ペアワイズ法(ペアワイズテスト)|テスト技法ツールGIHOZ(ギホーズ)|ソフトウェアテスト・第三者検証のベリサーブ

*ペアワイズ法は本当に有効なのか?組み合わせテスト技法と上手に付き合う方法 | DevelopersIO

ペアワイズ法によるテストケース生成ツールを自作した で書かれているようにOSSとしてライブラリが提供されていたり、サービスを提供している企業があるようなので、今でも活用されている技法なのかもしれません。

こちらの本は発売が2010年のため本の中で書かれているツールが古かったり、一部のテスト技法については今ではあまり使われていなそうなものが書かれていますが、全体的にテストを作成するときにどういった観点があるのか、それぞれの観点でどういったテスト技法があるのか全体感を知るには、とても良い本だと思いました。

本の中で演習問題という形式で実際にテスト技法を使う機会がありますが、これだけだと量が足りずに終わってしまうので、この本でテスト技法の概要を理解した上で以下の本を使って手を動かすと良さそうかなと思います。

また、テスト技法と書かれていますがTDDやテスト自動化の話は出てこないので、そういった話が知りたい人は、以下のような本を読む方が良いと思います。