レポート「知識ゼロから学ぶソフトウェアテスト」
読書レポートシリーズ、今回はこちらの本です。
テストに関する知識がほとんどなかったので文字通り知識ゼロから学ぶのがいいだろうと思いチョイスしました。
要約
ソフトウェア開発におけるテストとは何かに始まり、その目的と手法、実際の運用方法を解説しています。
より具体的にはホワイトボックステスト、ブラックボックステスト、非機能テスト、テストの運用といった構成でソフトウェアテストの基礎知識について説明されています。
想定読者としてはテストエンジニアとして仕事を始めたばかりの新人といったところかと思いますが、専任のテストエンジニアだけではなく、テストコードを書くことで品質を上げたい開発者にとっても最初の1冊として良いのではないかと思います。
面白かった章とその理由
第3章「エンジニアがもっともよく使う手法 ーブラックボックステストー」が個人的には面白かったです。
ホワイトボックステスト(カバレッジテスト)については第2章において、全てのソフトウェアテストの基礎となるものだが実務において必ずしも有用でよく使われるとは限らないという説明がされています。
これに対しブラックボックステストは現在ほとんどのソフトウェアテストの現場で行われている手法であり、著者の方が在籍していた会社では全体の80%以上をブラックボックステストを使ってテストしていたとのことでした。
特に同値分割法と境界値分析法はブラックボックステストの中でも基本中の基本であり、もっともよく使われる手法です。基礎的かつ最も現場でよく使われるということは最優先でマスターしておくべき手法であるといっていいでしょう。
この2つについては難しい概念ではないのですが、こうした書籍などで体系として学んでいれば実際にテストを書く際にもその知識が有効に働くのではないかと思いました。
また、この章ではデシジョンテーブルテストと状態遷移テストについても説明しています。その内容について詳細に書くことはしませんが、著者の方がよく使う説明として、
もし入力ダイアログボックスがあれば境界値テストを行う
↓
もし複数の入力ダイアログボックスがあればデシジョンテーブルテストを行う
↓
もしダイアログボックスの遷移があれば状態遷移テストを行う
というものがあります。テストというのは要はこれだけやればいいのだ!ということのようです。細部まで理解しようとすると難しい分野だと思いますが、とりあえずこうしたざっくりした認識で大枠をとらえるというのは学習の初期段階では有効だと思いました。
理解できなかった章とその理由
「探索的テスト」はよくわかりませんでした。
「探索的テストとはソフトウェアの理解とテスト設計とテスト実行を同時に行うテストである」ということでしたが、いまいちピンときませんでした。
テストケースをいちいち書くよりも実際にソフトウェアに触れながらバグを探していく、というようなことなので想像するにゲーム開発におけるデバッグのようなスタイルなのかなと思いましたがどんなもんでしょうか。
仕事に活かせそうな知識、活かせそうな状況と活かし方
まだ仕事をしていないのであまり偉そうには書けないのですが(2回め)やはりブラックボックステスト、特に同値分割と境界値分析の部分はすぐにでも活かせそうな知識かなと思います。特に同値分割のテストケースを扱った部分では非常に強いテストケースと実践的なテストケースを比較しているのですが、これが非常にわかりやすく書かれていました。
テストケースはもちろん強いに越したことはないのでしょうが、工数とトレードオフになるのでいかに少ないテストケースで広い範囲をカバーできるか、ということを考慮しつつ作成する必要があるということがよくわかりました。
まとめ
とりあえずソフトウェア開発におけるテストとは何か、ということを一回りできるチュートリアルツアーとしては良い本だと思いました。
どういう種類のテストがあって、それぞれどんなことをするかが一通りわかるので全くの初心者はこれを一番最初に読んで全体感をつかんでおくと良いと思います。
反面、詳細までは入り込んでいないので個別の言語や開発環境におけるテストの書き方やツールの使い方などは、他の本やサイトで学ぶか、自分で実践していく必要があるでしょう。
テストに関する書籍は少ないように感じているので、決定版みたいな本があれば読んでみたいと思っています。