コードのバグやロジックの変更などの理由で実際には一致しない、または機能しなくなった古い単体テストを管理するための最良の方法を理解しようとしていますか?それらをすべてスキップして、現在のロジックに合うように変更しますか?
たとえば、それらのテストがあなたによって書かれていなかった場合、そして今あなたはコードを修正する責任があります。先に進む前に、これらのテストを更新して合格するまで、まだ時間がかかりますか?
または単にそれらをスキップしますか?ありがとう。
コードのバグやロジックの変更などの理由で実際には一致しない、または機能しなくなった古い単体テストを管理するための最良の方法を理解しようとしていますか?それらをすべてスキップして、現在のロジックに合うように変更しますか?
たとえば、それらのテストがあなたによって書かれていなかった場合、そして今あなたはコードを修正する責任があります。先に進む前に、これらのテストを更新して合格するまで、まだ時間がかかりますか?
または単にそれらをスキップしますか?ありがとう。
古いユニットテストは役に立ちません。それらを使用したい場合は、それらを更新してください。
もちろん、あなたはそれらを通過させるために時間をかける必要があります。なぜその仕事を捨てるのですか?
TDDの全体的な考え方は、すべてのテストに常に合格することです。「ねえ、この単体テストが失敗しても大丈夫だ」と言い始めた瞬間から、TDDは役に立たない。はい、ある程度の規律が必要ですが、最終的にはそれだけの価値があります。
テストが失敗した場合、次の 3 つのオプションがあります。
新しいコードを記述する前に、すべてのテストに合格する必要があります。テストが失敗した場合は、すぐに修正するか、変更を元に戻す必要があります。そうしないと、テストが失敗したときに、それが 1 分前に行った変更によるものなのか、それとも単なる誤警報なのかを確信できません。
失敗したテストを無視することは、暗黒面への道です。それらを十分に長く無視すると、さらに多くのテストが失敗してテスト スーツが腐敗し、その価値が失われ、テストを破棄する必要があります。そして、テストスイートに頼れなくなったとき、本番コードの設計を改善することを躊躇し、本番コードも腐敗し始めます。最後に、本番コードを維持することはもはや不可能であり、それも破棄して書き直す必要があります。
たとえば、それらのテストがあなたによって書かれていなかった場合、そして今あなたはコードを修正する責任があります。先に進む前に、これらのテストを更新して合格するまで、まだ時間がかかりますか?
テストを更新します。
しかし、最初に私はそれらを壊した開発者を追い詰めますそして...まあここにいくつかのインスピレーションがあります。
私が同じような状況に陥るたびに、時代遅れのテストは存在しないと思うほど急いでいます。結果として、私はコードをレガシーコードと見なし、作業している機能に対してのみ新しいテストを作成します。
テストが失敗することは決して受け入れられません。システムは、すべてのテストに合格しない可能性を拒否する必要があります。または、少なくとも、テストが失敗すると、テストが失敗する原因となった開発者に対する優先作業タスクがトリガーされます。
時間の経過とともに、テストは特に成熟した製品では時代遅れになります。せいぜい、それらは単にコードを実行するのに役立ちます。失敗することもありますが、通常は、そもそもなぜ書かれたのかとは関係のない理由で失敗します。廃止されたテストを破棄するかどうかについては、自分の判断で判断する必要があります。時々枯れ木を切り落とさなければ、テストが完了するのに時間がかかりすぎるので、10,000のテストがあります。
テストカバレッジツールは、特定のテストを維持する価値があるかどうかを判断するのに役立ちます。
そこでは、次の 2 つの状況が考えられます。