Flying Cat Penguin

ゆるゆる仕事、ソフトウェアテスティング関連のことについて綴ります。

「xUnit Test Patterns: Refactoring Test Code」(2007年)

ユニットテストのテストパターンで有名な書籍です。
今回はこれを流し読みしてみました。
基本的にユニットレベルの自動テストについての内容でしたが下記の内容が興味深かったです。

[テスト自動化戦略]

  • 開発プロセス:コードの開発に使用するプロセスがテストにどのように影響するか。
  • お客様のテスト:「何が行われたか」の最終的な定義として作成する必要がある最初のテスト。
  • 単体テスト:設計を段階的に実行し、すべてのコードが確実にテストされるようにするテスト。
  • テスト容易性の設計:設計をテストしやすくするパターン。これにより、テスト自動化のコストを削減します。
  • テストの構成:テストメソッドとテストケースクラスを整理する方法

[壊れやすいテストの根本的な原因]

  • インターフェース
  • 動作
  • データ
  • コンテキスト

また、本書で紹介されている"test smells" のが印象的でした。

[コードの臭い]
- あいまいテスト     
- 条件付きテストロジック
- テストが難しいコード 
- テストコードの複製
- 本番 環境でのテストロジック

[振る舞いの臭い]
- アサーションルーレット      
- 不安定なテスト
- 壊れやすいテスト 
- 頻繁なデバッグ      
- 手動介入  
- 遅いテスト

[プロジェクトの臭い]
- バグが起きがちなテスト
- テストを書かない開発者      
- 高いテストメンテナンスコスト
- 生産でのバグ

[テストケースクラスの作成方針]

  • 機能毎に作成する
  • フィクスチャ(状態や事前条件:テストコンテキスト)毎に作成する

テストアーキテクチャという話が出てくると、
基本的にこういった自動テストフレームワークはすでに具体的に考えられているので大変参考になります。
特にテストケースクラスの作成方針は、手動であってもテストアーキテクチャ設計においては重要なものだと感じました。

本書は、「パターン」の紹介ということもあり、悩んだときにリファレンス代わりにまた読んでみようと思います。。

参考
ACM Learning Center
xUnit Test Patternsから学ぶ12個のユニットテストの原則 - Qiita