はじめに
Reactが公式で推奨しているReact Testing Library
というテスト用のライブラリがあります。
このライブラリは Testing Trophy
という考え方に基づいて開発されており、Reactのテスト方針を考えるにあたってぜひとも抑えておきたい内容になります。
本記事ではこの Testing Trophy
について、簡潔に解説していきます。
Testing Trophyとは
React Testing Library
の開発者であるKent C. Dodds氏が提唱している、どのテストを重視すべきであるかをトロフィーの形で表現した考え方のことを指します。
テストの種類
Testing Trophyでは、テストは次の4種類に分けられます。
-
静的テスト(Static)
- コードを作成するときにタイプミスや入力エラーを検出するテスト
-
単体テスト(Unit)
- 個々の独立した部品が期待通りに動作することを確認するテスト
-
結合テスト(Integration)
- 複数の部品が調和して動作することを確認するテスト
-
E2Eテスト(End to End)
- ユーザーのように振る舞うロボットがアプリをクリックしていき、正しく機能するかを確認するテスト
トロフィーの見方
トロフィーは下図のように表現され、下から上に進むにつれて、
- 開発コストが大きくなる
- テストの実装速度が遅くなる
- ソフトウェアの信頼性が高まる
という特徴を持ちます。
重要なのは、コスト/速度
と信頼性
のトレードオフであり、トレードオフのバランスが優れているほどトロフィー内の体積が大きく表現されております。
結論
Testing Trophy
では、Integrationが最もコスト/速度
と信頼性
のバランスに優れており、テスト実装の労力の大半はここに費やすべきであると結論づけられております。
React Testing Library
もIntegrationの実装を重視した設計となっているので、Reactアプリのテスト方針を考える際には、この点を意識しておきたいです。
最後に
今回はTesting Trophy
について、重要なポイントを簡潔にまとめて解説しました。
参考にしたKent氏の記事は最後に記載しておくので、興味があれば是非こちらも確認してみてください。
以上
参考文献