LoginSignup
7
6

「単体テストの考え方/使い方」を読んで、オレオレ単体テストから卒業しよう

Posted at

単体テストの考え方/使い方を読んでみました。

良い単体テストとはなにか?を定めて、どのような単体テストを書けばよいかを説明した良本でした。
関数型アーキテクチャーがなぜ単体テストで優れているのかの説明も興味深かった。

個人的に気になったトピックを箇条書きにしておきます。内容については、本を読んでください。

  • 単体テストには、古典派とロンドン派があるが、この本では一貫して古典派を推奨。ロンドン派は、ダメな例的なかわいそうな扱い。
  • ロンドン派には細かい粒度でテストできる良さがあるが、著者の言う、よい単体テストではない。
  • コード網羅率や分木網羅率はテストコードの質が良いことの指標にはならない。
  • リグレッションに対する保護、リファクタリングへの耐性、迅速なフィードバックを同時には満たせない。二つを満たすと三つめが満たせない。
  • 出力値ベース・テストは、状態ベース、コミュニケーションベースのテストよりも、リグレッションに対する保護、リファクタリングへの耐性、を低コストで実現できる。
  • 関数型アーキテクチャーに移行することは、出力値ベース・テストを行いやすくできる。
  • 観測可能な振る舞いと実装の詳細を区別すること。
  • ヘキサゴナル・アーキテクチャー(外側がアプリケーションサービス層、外部アプリケーションとやり取りをする。コントローラ。中側が、ドメイン層(ビジネスロジック)。関数アーキテクチャの関数になる部分。
  • 単体テストでは、ドメイン・モデル/アルゴリズムをテストする。統合テストでは、コントローラをテストする。
  • 統合テストは、単体テストよりも保守コストが高い。ハッピーパスと単体テストでテストできない異常ケースを行う。
  • モックに置き換える依存は、管理下にない依存

関係ありそうなQiitaの記事

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6