Katsuyaのひとりごと。

怠惰で短気で傲慢なつぶやきを

読書記録 - 『単体テストの考え方/使い方』

読んだ本

www.amazon.co.jp

動機 - 単体・結合テストについての網羅的な知識が欲しかった

単体テストがどういうテストでどういった観点があるのかは雰囲気でなんとなく知っているけれど、効果的な単体テストとはとか、結合テストとの棲み分けをどうするかみたいな知識が全然なかったのでそのへんを補完したかったです。 また、インターネット上でテストについて調べても結合テストについて書かれているサイトは驚くほど少なく、これは書籍を当たるしかないという思いもありました。

構成 - 第2部で単体テスト、第3部で結合テストとしてそれぞれ何をどう書けば良いのかわかる

  • 第1部(1〜3章)は単体テストの定義やテストに対する学派などについて書かれています。
    • 主にモックの取り扱いで分かれている学派については絶対に念頭に置いておくべき内容だと思いました。
  • 第2部(4〜6章)は良い単体テストを書くための4本柱、手法、モックの扱い方、リファクタリングについて書かれています。
  • 第3部(7〜10章)は結合テストのスコープ、テストする際のモックとDBの扱いについて書かれています。
  • 第4部(11章のみ)は単体テストアンチパターンについて書かれていて、中でもプライベートメソッドに対するテストは不要であることに言及しています。

要点 - 観察可能な振る舞いに対して単体テストを書く

  • 単体テストとは下記3つを満たすもの。それ以外はすべて結合テスト
    • 1単位の振る舞いを検証する
    • 実行時間が短い
    • 他のテスト・ケースから隔離された状態で実行される
  • 良い単体テストを構成する4本の柱
  • 観察可能な振る舞いに対してテストを書く(↔実装の詳細)
  • 副作用とコントローラを排除する
    • MVCとかで言うコントローラのこと
  • 結合テストはシステムが「プロセス外依存」と統合した状態での機能をテストするのが役割

自分の中での本書の立ち位置・感想

タイトルに単体テストって書いてあるからてっきり単体テストがメインで結合テストについてはさらっとだけ触れるのかと思ってましたが、そんなことはありませんでした。 むしろ単体テストの位置づけや目的を理解することは自ずから結合テストのそれらを理解することに繋がるのだということがはっきり理解できました。

テストに関する思想からプラクティス、アンチパターンに至るまで網羅的に書かれているので、読書会があったら真っ先に取り上げたい本だなと思いました。

テストについて学びたかったらまず読むべき1冊として挙げたいです。 ただそれなりに内容が濃いので、初学者の入門書としてはちょっとだけ重いかも。

次のアクション

  • テスト戦略についての書籍を当たる
  • 現場で結合テストやE2Eテストの量が肥大化してる原因を探る
  • 積極的に単体テストを書き、同時に何を結合テストで書くべきかを論理的に説明できるようにしておく