技術・品質・チーム · 中級
テスト:いくつ、どれ、価値がないもの
一行でいうと: ロジックを実行するテストの大多数、いくつかの統合テスト、ごく少数のエンドツーエンドテストに投資する。
三つのレイヤー
ユニット。速く、集中していて、各保存で実行される。ほとんどのリターンはここにある。
統合。本物のデータベースと本物のキューに対して。ユニットテストが見逃すもの——スキーマ、トランザクション、クエリ——を捉える。
エンドツーエンド。高価で壊れやすい。五〜十五のクリティカルパスのみのために確保する。
テストする価値があるもの
エッジケースを持つビジネスロジック、計算、権限、そして以前に壊れたもの。修正されたすべてのバグはテストを受け取る——そうしてカバレッジはパーセンテージではなく正しい場所で成長する。
価値がないもの:データを移動するだけのコード、そしてシミュレーションをテストするほど多くをモックするテスト。
テストの品質
良いテストは一つの明確な理由で失敗し、何が壊れたかを名付ける。不安定なテストはテストがないより悪い——チームに赤を無視するよう教える。
さらに深く
各プッシュで実行する速いテストを夜に実行する重いスイートから分離する。そしてテストが断続的に失敗するとき、高優先度のバグとして扱う——不安定性を容認することは数ヶ月でスイートの全価値を消す。