天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

「ソフトウェア品質を高める開発者テスト」を読んだ

を読んだので、印象に残った部分と感想を書いていきたいと思います。

本の概要

一言で言うと「バグが出る前に品質を作り込むためにはどうしたらいいか」ということが書いてある本です。
本書では品質の作り込みとして、Shift left(=上流品質の向上)という観点から解説をしています。

印象的だった箇所

hotspot

パレートの法則ソフトウェアテストの七原則の一つである欠陥の偏在は知っていましたが、直近の変更回数が多い個所(=hotspot)にソフトウェアのバグが偏在していることが多いという話は初耳で、今まであまり着目していなかった観点なので、学びがありました。

組み合わせテストを極力減らす

「そもそも組み合わせテストはコストがかかるので多数の組み合わせテストをやるのは望ましくない(特にマニュアルでやるのは望ましくない)」「組み合わせでバグが出たときに組み合わせテストが足りなかったとふりかえることが多いが、そもそも組み合わせテストが必要な構造になっているのが問題だったりしないか考えるのも大事では?」という話がありました。
言われてみれば当たり前なのですが、我に立ち返って考えてみると、組み合わせテストを無くすための努力に割いている時間よりも、組み合わせテストの選定に頭を抱えている時間が長いことに気が付き、自分の行動を見直すきっかけになりました。

リアルすぎるコラムや実例

現場で出てくる例が多数あるのですが、この内容がかなりリアルで、ソフトウェア開発の闇を感じる内容でした。。(あくまでも筆者の体感ということですが、コンサルタントした99%の現場は書籍内に出ているような現場であるということ...)
実例の幾つかは自分の現場にも当てはまるような内容があったり、苦い記憶が思い出されるような内容もあったりで、共感もありました。*1
「ゼロイチで考えてしまった結果、臭いものに蓋をしてしまう」というのは、自分の場合テストに限らずやってしまいたくなるので、少しでも今より良い方向に倒せないのか、常に考え続けたいと思いました。

統合テストを重視して(単体テストシステムテストを間引き)上手くいった話

最初に見出しを見たときは「え?」と思いましたが*2、読んでみると面白い内容でした。
ざっくり言うと、統合テストを重視したテスト戦略を取ると、Pre-condition状態を作るコスト(Mock/Stubを作るコスト)が最小限になるような、テスト容易性が高くなる設計が意識できるようになるという話だったのですが、確かにこれは統合テストを重視すると、より意識が向きやすくなると感じました。
スタンダードな戦略ではないので、現場で実行する場面は直ぐに訪れないと思いますが、一つの引き出しとして持っておきたいです。

豊富なエビデンス

高橋寿一さんの本の特長の一つである、豊富なエビデンスは今回も健在でした。
要件の明確さ(テスト可能な要件かどうか)が不具合件数に与える影響、プログラムの大きさと複雑度の関係にまつわるデータは、本書を通して初めて知りました。
他にも、以前Code Complete(下巻)を読んだ時に驚いた、レビューで欠陥検出率が高い話なども記載されていました。

全体を通した感想

自分がテストの勉強をしていこうと考えてまず最初に読んだ本が、「知識ゼロから学ぶソフトウェアテスト(改訂版)」だったのですが、この本が良著で、ソフトウェアテストの奥深さと解説の分かりやすさに驚きました。
そして本書は、その「知識ゼロから学ぶソフトウェアテスト(改訂版)」の著者である高橋寿一さんの最新作ということで、期待値が高かったのですが、安定の解説の分かりやすさ*3で、期待していた通り、楽しみながらすらすらと読んでいくことができました。
前回同様、推奨する参考文献の量も他の書籍と比べると圧倒的で、今後の学習の道しるべになるのでありがたいです。

知識ゼロから学ぶソフトウェアテスト 【改訂版】

知識ゼロから学ぶソフトウェアテスト 【改訂版】

  • 作者:高橋 寿一
  • 発売日: 2013/12/10
  • メディア: 単行本(ソフトカバー)

aki-m.hatenadiary.com

*1:例えば、キャプチャー・リプレイの自動化は現場で何度も検討されていました

*2:本書をはじめ一般的に良しとされている戦略とはずれているため。筆者自身も本書のコンセプトからずれていることは文中に記載してあります

*3:分かりたすさを重視している関係上、若干言い切りが強い部分というのもありますが...