yak shaving life

遠回りこそが最短の道

はじめて学ぶソフトウェアのテスト技法 を読んだ

なぜ読もうと思ったか

ソフトウェアテスト系の書籍をあまり読んでこなかったのでちゃんと読もうと思った。ので、適当に評判が良さそうなやつを買ってみた。

どのような本か

本書は、ソフトウェアテストの必修技法を満載した初心者にもわかりやすい解説書です。最少のテストケースで最大の効果をあげるためのツールを満載した、小さいけれどすごい本。

らしい。(Amazonの紹介ページからのコピペ)

確かにそんな感じはする。が、後半はちょいちょいやり過ぎ感ある(※個人の感想です)ので、本当の初心者は前半を頑張って読んで後半はサラッと流すくらいでいいかもしれない。

書評というか感想

確かに初心者でもわかりやすく色々書いてある本だという印象。ただし基本的にテスト担当者が開発者とは別に居ることを前提に書かれているので、基本的に開発者自身がテストも全て実施するような体制だと若干ピンとこない部分はあるかもしれない。特にSection III。まあそういう場合は流し読みすればいいと思う。

知らないことも結構あったし、知っていることも「あ、これってこういう名前なんだ〜へ〜」とか「こういう分類があるんだ、なるほどなー」みたいな感じで楽しく読めた。せっかくなので印象に残ったところを適当にメモします。

まずテストのレベル。本書では単体テスト、統合テスト、システムテスト、受け入れテストという4つのレベルに分類されている。経験上、テストの分類って統一するのが難しいというか会社やチームによって全然違うと思うのだが、この4定義は結構分かりやすい気がするので、初心者の方はとりあえずこれをベースに覚えておいてもらえばいいのかもしれない。

Section I ではテスト技法1つにつき1章という感じの構成になっている。せっかくなのでそれぞれについて感想を書きます。

同値クラステスト(同値分割)、境界値テスト、デシジョンテーブルあたりはソフトウェア開発者なら漏れなく知っておいてほしい技法という感じなので特にコメントなし。知らない人はこの本読みましょう。

次にペア構成テストというのがあって、「すべてのペアをテストする」ということらしい。こいつは簡単そうに見えて結構大変では…?と思って読み進めていたら、直行表を作ってすべてのペアを網羅するサブセットを探す的な手法が出てきてこれがまあまあややこしかった。でも変数が多くてテストケースの作成が大変な時は一度やってみていいかもしれないなあ。

状態遷移テスト、ドメイン分析テストはそういう名前があるとは知らずにやっている人が多そうな感じ。気合い入れてテスト書く時はこういうことやるよなー、的な。でも名前があるとテストケースを考えるときに思いつきやすくて便利そう。

ユースケーステストはいわゆるE2Eテストとしてやってる人は多そう。フォーマットという意味では途中で出てくるテンプレートが参考になりそうだと思った。今度使ってみようかな。

ここまででSection I 終わり。Section II ではホワイトボックステストということで制御フローテストとデータフローテストの二種類の技法が紹介されている。

制御フローテストの方にはテストカバレッジの定義の話があるので初学者には是非読んでもらいたい。データフローテストの方は正直ちょっとピンと来ないかなあ。うーん。こういうのはコンパイラにチェックしてもらいたい気持ち。

Section III はスクリプトテストと探索的テスト。そういう名前だったのかお前ら!という感じ。とにかくなるべく早い段階でテストケースをしっかり作ってその通りにやるのがスクリプトテスト、逆にテストを実行しながらやるべきことを考えていくのが探索テスト。この二つを組み合わせてやりましょうねーみたいな話。なるほどねえ。

第14章「テストの計画」には普通に良いことが書いてあったので、一部を下記に引用します。

「計画は、手段と目的をたえず調整し続けるという点で、連続的なプロセスである。また、計画は連続的な調整および改善であるという点で、進化的なプロセスとみなすべきである。

なんかもう、テストに限った話じゃないですよね。素晴らしいです。思わず敬語になっちゃうレベル。

Section IV は補足的な感じだけど、15章にある色々な分類はちょっと興味深い。どこまで意味があるかはちょっとわからないけど、ISO 9126とか一回読んでみようかな…と思ったら有料かあ。うーむ。

最後にSection Vがちょろっとだけある。ちょっと短すぎて引用したら中身全部載せるのと同義になってしまいそうなのであえて引用しないでおきますが、真理が書いてました。普遍の真理。要は、本読むだけじゃなくてちゃんと実践しろってことですね。

そんなこんなでダラダラ感想を書いたわけですが、文章も読みやすいしなかなか良い本だと思う。ソフトウェア開発初学者にオススメできる良書だし、僕みたいにテスト系の本あんまり読んでないなーという人の入りとしてはとても良いと思いました。