単体テストの考え方/使い方(Vladimir Khorikov 著) - ブックレビュー

Amazon アソシエイトリンク

評価サマリ

詳細は後述

  • 🌟: 1
  • ⭐: 0.5
  • ❗: 条件付きまたはごく一部に問題あり
項目 評価
得られること 単体テストをいかにして書くか、モックの使い所、テストの視点からみたヘキサゴナルアーキテクチャ
推奨読者 ソフトウェアアーキテクチャを考えることになった中堅以降
推奨読者レベル 中堅に近いジュニアから中堅
非推奨読者レベル ジュニアには難しいかもしれない。DDDやヘキサゴナルアーキテクチャに対して何ら知識を有していない場合も難しいかもしれない。
推奨度 🌟🌟🌟🌟🌟
わかりやすさ 🌟🌟🌟
正しさ 🌟🌟🌟🌟⭐
役立ち度 🌟🌟🌟🌟🌟
必要な前提知識 xUnitやRSpecなどテストコード記述の経験、ソフトウェアテストに対するざっくりとした理解、クリーンアーキテクチャとヘキサゴナルアーキテクチャの概要、DDDの一部の用語についての概要

概要

Amazon: 単体テストの考え方/使い方

   
発売日 2022/12/28
ページ数 416
サイズ 23.4 x 18.2 x 2.5 cm
著者 Vladimir Khorikov 著/須田 智之 訳
ISBN Tom Hombergs
定価(税込) 4,488円

目次

  • 第1部: 単体(unit)テストとは?
    • 第1章: なぜ、単体テストを行うのか?
    • 第2章: 単体テストとは何か?
    • 第3章: 単体テストの構造的解析
  • 第2部: 単体テストとその価値
    • 第4章: 良い単体テストを構成する4本の柱
    • 第5章: モックの利用とテストの壊れやすさ
    • 第6章: 単体テストの3つの手法
    • 第7章: 単体テストの価値を高めるリファクタリング
  • 第3部: 統合(integration)テスト
    • 第8章: なぜ、統合(integration)テストを行うのか?
    • 第9章: モックのベスト・プラクティス
    • 第10章: データベースに対するテスト
  • 第4部: 単体テストのアンチ・パターン
    • 第11章: 単体テストのアンチ・パターン

評価

得られること

まず前提として、この本に書かれていることは一部を除いて私が実践できていた内容でした。テストに関する文献は、はじめて学ぶソフトウェアのテスト技法テスト駆動開発ぐらいしか読んだことがなく、テストコードの書き方に関しては完全に我流です。そんな私の我流で実践できているので、日々いかにすれば良いテストコードになるかを考えてコーディングしている人なら到達するであろう内容です。

ただ、一つ断っておかないといけないのは、私はDDDやクリーンアーキテクチャなどに対して十二分な理解があり、それを前提としてテストコードも書いていることです。この本はヘキサゴナルアーキテクチャ(クリーンアーキテクチャ)について、よいテストコードを書くにはプロダクションコードがどうあるべきかというアプローチで言及しています。そのため、「クリーンアーキテクチャがドメインレイヤはDB非依存、フレームワーク非依存というけどメリットがわからない」という人にとっては理解を助ける新たな視点となるかもしれません。

モックに関しても使いどころがわかるようになるでしょう。少なくとも、UseCase(ApplicationService)にRDBにアクセスするRepositoryをDIしてモックするようなやり方に疑問を持っているなら、この本なりの回答が載っています(ご安心ください、モックするなと書いてあります)。

また、全般的に単体テストのテストコードの良い書き方を理解でき、「第4章: 良い単体テストを構成する4本の柱」や「第6章: 単体テストの3つの手法」でテストコードに対する解像度が上がるはずです。ちなみに、この第4章と第6章は我流でやってきた私にとって、感覚で理解していたことに名前づけと分類がされたという意味で得るものがありました。

推奨読者

以下のような人におすすめです。

  • ある程度テストはかけるが、テストコードの良し悪しがわからない人
  • 何を単体テストとして書き、何を統合テストとして書くかわからない人
  • モックの使いどころがわからない人
  • ヘキサゴナルアーキテクチャ(クリーンアーキテクチャ)のドメインレイヤが他レイヤに対して非依存にするメリットがわからない人
    • この本の全てが役に立つわけではないですが、理解する一助になるはずです

推奨読者レベル、非推奨読者レベル

ある程度はテストコードを記述した経験が必要でしょう。

また、ヘキサゴナルアーキテクチャやドメインレイヤについての言及があるため、それらを全く知らないか設計スキルが高くない人には理解できない部分があるかもしれません。

そのため、中堅に近いジュニアから中堅レベルを推奨としています。シニアにとっては実践していることが大半ではないかと思います。

推奨度、わかりやすさ、正しさ、役立ち度

項目 評価
推奨度 🌟🌟🌟🌟🌟
わかりやすさ 🌟🌟🌟
正しさ 🌟🌟🌟🌟⭐
役立ち度 🌟🌟🌟🌟⭐

非常にわかりやすいというわけでもないので、わかりやすさは3にしています。

また、RailsエンジニアとしてはRSpec使ってたらしない苦労だなぁというような部分があったり、賛同できない部分も一部あったので正しさと役立ち度を下げています(私はprivateメソッドは必要と思うならテスト書けば良い派で「テストしたいならクラス分けろ」はテストのためにプロダクションコードを歪めているという解釈派閥なのだ)。

必要な前提知識

推奨読者レベル、非推奨読者レベルにも書いていますが、xUnitやRSpecなどテストコード記述の経験、クリーンアーキテクチャとヘキサゴナルアーキテクチャの概要、DDDの一部の用語についての概要について知っている必要があるでしょう。

また、単体テストや統合テストという二分類が出てきますが、この分類も含めてソフトウェアテストに関するざっくりとした理解はあった方が良いでしょう。

まとめ

この本を読めば、かなり真っ当にテストコードを書けるようになると思います。きちんと考えてコードを書いていれば自然と身に付く内容ばかりですが、まだ身についていないならショートカットになるでしょう。

Amazon: 単体テストの考え方/使い方