ウェブエンジニア問題集

実装の変更に振り回されないこと

「実装の内部構造を変えただけでテストが壊れる」状態は、リファクタリングを躊躇させるので、テストがあることが逆に開発の足枷になります。

学習者学習者

リファクタしただけでテストが赤くなる…。これってテストが悪いの?それともコードが悪いの?

テストの偽陽性とは

テストの偽陽性とは、テストが失敗したが、実際にはバグがないことを意味します。

偽陽性が少ないことは、リファクタリングの耐性を高めることにつながります。

偽陽性でテストの意味がなくなってしまう

開発でコードを記述していいて、問題あるコードを事前に検知できることがテストの意味ですが、偽陽性が多いと、その信頼性が失われてしまいます。

テストの偽陽性を減らす方法

最終的な結果を確認することで、偽陽性を減らすことができます。

テストが確認すべきなのは「外部から観測できるもの」で、これは大きく3つあります。

  • 戻り値
  • 状態の変化(DBに保存された、オブジェクトのプロパティが変わった等)
  • 外部への呼び出し

区別の基準はシンプルで、「その検証対象を変えたとき、ユーザーや外部システムが気づくか」です。

気づくなら振る舞い、気づかないなら実装の詳細です。