バグを修正する場合、最初に特定のバグで失敗するテストを記述し、次にテストが合格するまでコードを修正することをお勧めします。これはTDDのプラクティスに従っており、良いプラクティスであると想定されていますが、実装に非常に近い不可解なテストを作成する傾向があることに気付きました。
たとえば、ジョブが送信され、特定の状態に到達し、中止され、再試行されたときに問題が発生しました。このバグを再現するために、スレッド同期、多くのモックなどを含む大規模なテストが作成されました...それは仕事をしましたが、コードをリファクタリングしているので、このマンモスを削除するだけで非常に魅力的です新しいデザインに合わせるには、本当に多くの作業が(再び)必要になります。そして、1つの特定のケースで1つの小さな機能をテストするだけです。
したがって、私の質問:再現が難しいバグをどのようにテストしますか?実装をテストし、リファクタリングと可読性を損なうものを作成しないようにするにはどうすればよいですか?