技術・品質・チーム · 中級

テスト:いくつ、どれ、価値がないもの

一行でいうと: ロジックを実行するテストの大多数、いくつかの統合テスト、ごく少数のエンドツーエンドテストに投資する。

三つのレイヤー

ユニット。速く、集中していて、各保存で実行される。ほとんどのリターンはここにある。

統合。本物のデータベースと本物のキューに対して。ユニットテストが見逃すもの——スキーマ、トランザクション、クエリ——を捉える。

エンドツーエンド。高価で壊れやすい。五〜十五のクリティカルパスのみのために確保する。

テストする価値があるもの

エッジケースを持つビジネスロジック、計算、権限、そして以前に壊れたもの。修正されたすべてのバグはテストを受け取る——そうしてカバレッジはパーセンテージではなく正しい場所で成長する。

価値がないもの:データを移動するだけのコード、そしてシミュレーションをテストするほど多くをモックするテスト。

テストの品質

良いテストは一つの明確な理由で失敗し、何が壊れたかを名付ける。不安定なテストはテストがないより悪い——チームに赤を無視するよう教える。

さらに深く

各プッシュで実行する速いテストを夜に実行する重いスイートから分離する。そしてテストが断続的に失敗するとき、高優先度のバグとして扱う——不安定性を容認することは数ヶ月でスイートの全価値を消す。