単体テストの考え方/使い方(タンタイテストノカンガエカタ ツカイカタ)
プロジェクトの持続可能な成長を実現するための戦略
- 著者:
- Vladimir Khorikov/須田智之(ウラジーミル コリコフ/スダ トモユキ)
- 出版社:
- マイナビ出版
- 出版日:
- 2022年12月28日
- ISBN:
- 9784839981723
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
単体 (unit) テストの原則・実践とそのパターン - プロジェクトの持続可能な成長を実現するための戦略について解説。
優れたテストを実践すれば、ソフトウェアの品質改善とプロジェクトの成長に役立ちます。逆に間違ったテストを行えば、コードを壊し、バグを増やし、時間とコストだけが増えていきます。生産性とソフトウェアの品質を高めるため、優れた"単体テスト"の方法を学ぶことは、多くの開発者とソフトウェア・プロジェクトのために必須といえるでしょう。
本書“単体テストの考え方/使い方”では、単体テストと統合テストの定義を明確にします。そして、どのようなテストに価値があるのかを学び、どのテストをリファクタリング、もしくは削除するのか、ということについて考え、そのことがプロジェクトの成長にどう繋がるのかを見ていきます。
C#のコード例で解説しますが、どの言語にも適用できる内容です。
Manning Publishing: Unit Testing Principles, Practices, and Patterns の翻訳書。
目次
第 1 部: 単体 (unit) テストとは?
第 1 章: なぜ、単体テストを行うのか?
第 2 章: 単体テストとは何か?
第 3 章: 単体テストの構造的解析
第 2 部: 単体テストとその価値
第 4 章: 良い単体テストを構成する 4 本の柱
第 5 章: モックの利用とテストの壊れやすさ
第 6 章: 単体テストの 3 つの手法
第 7 章: 単体テストの価値を高めるリファクタリング
第 3 部: 統合 (integration) テスト
第 8 章: なぜ、統合 (integration) テストを行うのか?
第 9 章: モックのベスト・プラクティス
第 10 章: データベースに対するテスト
技書の森解説
テストを書く習慣はあるのに、テストが増えるほどリファクタリングが億劫になる。カバレッジは高いのにバグは減らない。そうした「テストの量は足りているのに質が伴わない」状態を解きほぐすのが、 Vladimir Khorikov による本書の主題です。原著 "Unit Testing: Principles, Practices, and Patterns" の邦訳であり、良いテストとは何かを ROI (投資対効果) の観点から定義し、テストの価値を客観的に測る枠組みを提供します。
ロンドン学派 (モック中心) と古典学派 (実オブジェクト中心) の比較、プロダクションコードの設計がテストの質をどう左右するか、統合テストとの棲み分けなど、テスト設計における長年の議論に著者なりの明確な立場を示している点が特徴です。読んだ人の間では「モックの使いすぎに気づけた」「テストを消す判断ができるようになった」という感想が繰り返し見られます。
テストを書いた経験がある中級者以上に向けた内容であり、テストの書き方を一から学ぶ入門書ではありません。すでにテストを書いているが、その質に疑問を持ち始めたエンジニアにとって、テスト設計の判断基準を一段引き上げてくれる一冊です。
言及 Qiita 記事 (77 件)
たった2つのステップを意識するだけで書けない単体テストがほぼなくなる
♡ 386Java, テスト, JUnit, 読書感想文, レガシーコードテストを書く方針と原則の備忘録
♡ 241テスト, テスト自動化, ユニットテスト, テストコード『単体テストの考え方/使い方』が良すぎた
♡ 169単体テスト, 単体テストの考え方使い方「単体テストの考え方/使い方」を読んでテストの本質を学ぶ(第1部)
♡ 160Ruby, Rails, テスト, 単体テストE2Eテストが大量にあるのは危険かも?膨大化したE2Eテストが及ぼす悪影響
♡ 35アジャイル, 単体テスト, e2e, 自動テスト, 品質レガシーコードにおける単体テストのハードルを乗り越える思考フロー(初心者向け)
♡ 31Java, JUnit, 初心者, unittest, レガシーコードその単体テストは 振る舞い を検証できていますか?
♡ 26Java, テスト, JUnit, unittest, 単体テスト「アジャイルテストの4象限」の使い方
♡ 25アジャイル, テスト自動化, ソフトウェアテスト, テスト計画, アジャイルテスティング機械学習のためのソフトウェアテスト入門
♡ 23Python, テスト, 機械学習, pytest, Kaggle自動テストって何?必要あるの?
♡ 21テスト, 自動テスト, テスト駆動開発
言及 Zenn 記事 (24 件)
フロントエンドにおける「単体テストの考え方/使い方」
♡ 660test, jest「単体テストの考え方/使い方」が主張するたった一つのこと
♡ 115test, unittest単体テストの考え方/使い方 まとめ
♡ 82まとめ, 単体テスト, テスト壊れやすいテストとは? 「単体テストの考え方/使い方」(古典学派)と「実践テスト駆動開発」(ロンドン学派)を読んで考える
♡ 74test, mock, tdd, モック, noaiJest × Testing Libraryを用いた単体テストの考え方/使い方
♡ 41react, test, jest, testinglibrary多層アーキテクチャにおけるテスト戦略 〜 『単体テストの考え方/使い方』を踏まえて 〜
♡ 8単体テスト, 自動テスト, ソフトウェアテスト, テスト設計, テスト戦略チームで「単体テストの考え方/使い方」読書会をしたよ
♡ 6単体テスト, 読書会『単体テストの考え方/使い方』を読んで、ログ出力のテストを「出力値ベースのテスト」にした話
♡ 5python, ユニットテスト, ドメインイベント, テスト設計技術書読書ログ「単体テストの考え方/使い方」
♡ 5技術書, テスト「単体テストの考え方/使い方」勉強会03 〜単体テストの3つの手法〜
♡ 4test
この本に興味がある方におすすめ
この本に関連
関連記事
テスト本ガイド - テスト設計を学べる技術書の選び方
テストの書き方からテスト戦略まで学べる技術書の選び方を紹介。テストピラミッド、TDD の正しい読み方、テストの ROI の考え方を解説します。
「動くコード」と「良いコード」の間にある本
コードが動くようになった後、次に何を学べばよいのか。「動くコード」を「良いコード」に変えるために必要な知識と、それを効率的に学べる本の選び方を解説します。
バグを生むのは知識不足ではなく想像力不足である
バグの多くは、コードを書いた時点で「こういうケースもありうる」と想像できなかったことが原因です。想像力を鍛える読書法と、エッジケースへの感度を高める方法を解説します。