特に、私は次の点に興味があります。
テストケースが間違っている(または古くなっている)ため、修復(または破棄)する必要があることをどのようにして知っていますか?つまり、テストケースが無効になったとしても、テストケースが通過して沈黙する可能性があるため、ソフトウェアが正常に動作していると誤って信じる可能性があります。では、テストスイートのこのような問題をどのようにして実現するのでしょうか。
テストスイートが十分ではなく、新しいテストケースを追加する必要があることをどのようにして確認しますか?これは要件の変更と関係があると思いますが、テストスイートの妥当性をチェックするための体系的なアプローチはありますか?
短い答え:次のコードカバレッジやコード品質ツールなど、テストケースの品質を維持するのに役立つ既知のツールを使用します。Cobertura、PMD、Sonarなど、プログラムの重要なコンポーネントが十分にテストされていない場合に気付くのに役立ちます。また、統合テストを記述します。これは、何か問題が発生したときに最初に壊れる可能性が最も高いテストです。
長い答え:
テストケースが間違っている(または古くなっている)ため、修復(または破棄)する必要があることをどのようにして知っていますか?つまり、テストケースが無効になったとしても、テストケースが通過して沈黙する可能性があるため、ソフトウェアが正常に動作していると誤って信じる可能性があります。では、テストスイートのこのような問題をどのようにして実現するのでしょうか。
テストスイートがもはや十分ではなく、新しいテストケースを追加する必要があることをどのようにして知っていますか?これは要件の変更と関係があると思いますが、テストスイートの妥当性をチェックするための体系的なアプローチはありますか?
最初の質問に対して私が書いたのは、2番目の質問に対する回答の一部です。ここに次の点も追加します。
sureテストケースを正しく作成する方法はありません。ただし、要件を理解し、コードを理解し、同意することを確認することで、テストケースを作成するときに集中できます。テストスイートを使用することのポイントは、これを一度だけ実行する必要があり、それ以降はテストを再実行してテストが成功することを確認するだけですが、テストスイートがないと、本当に集中する必要があります常時、つまり、コードベースに対して何かをするときはいつでも。しかし、そもそも正しいことをしていることを確認しなければならないという根本的な問題は残っています。コンピュータは、その仕事から私たちを解放するのに十分にインテリジェントではありません。
したがって、(1)テストスイートが不完全な場合、それを確認する簡単な方法はありません。コードカバレッジ分析は、一部のコード行が実行されないことを証明できます。つまり、スイートには何らかの欠陥がありますが、その欠陥の程度は深刻ではなく、十分であることを証明することはできません。 100%のコードカバレッジを使用しても、システムの関連するすべてのstatesが実行される保証はありません。存在する可能性のある状態の組み合わせの数のため、現実的なシステムでは完全な状態カバレッジは実現できません。テストケースが少なくともチェック対象のチェックに対して正しいことを確認するための1つの優れた手法は、テストを記述し、テストが実際に失敗することを確認し、コードを作成または変更して、テストが成功することを確認することです。したがって、テスト駆動開発の熱意:個々のテストが正しいことを確実に行うことができ、コードベース全体をそのように作成すれば、大規模システムでも同様のレベルの信頼を得ることができます。
(2)テストスイートは通常不十分になりますいつでも要件が変更されます-推測する必要はありません。顧客が特定の動作の変更を望んでいて、変更の前と後の両方でテストが成功する場合、その特定の入出力関係を実行していないことは明らかです。
テストカバレッジがない、またはカバレッジがわからないレガシーシステムについては、正式な証拠はありませんが、(親の助言:個人的な意見が続きます)経験から言うと、テストは圧倒的に可能性が高いですnotで十分です。テストが事後の、オプションの、品質を向上させるが、それほど必要ではないアクティビティと見なされる場合、テストがコードベースに遅れないようにするインセンティブがないため、テストは不完全で体系的でない傾向があります。ありません。