요구 사항을 이해하고 코드를 이해하며 동의하는지 확인하는 경우를 제외하고는 테스트 케이스를 올바르게 작성하는 것 외에는 테스트 케이스가 올바른지 확인할 수 있는 방법이 없습니다 . 테스트 스위트를 사용하는 요점은이 작업을 한 번만 수행하면된다는 것입니다. 그때부터 테스트를 다시 실행하고 테스트를 통과했는지 확인할 수 있습니다. 반면 테스트 스위트가 없으면 항상 열심히 집중해야합니다. 즉, 코드베이스에 무언가를 할 때마다. 그러나 당신이 처음부터 옳은 일을하도록해야한다는 근본적인 문제는 여전히 남아 있습니다. 컴퓨터는 단순히 그 일을 우리에게 덜 해줄만큼 지능적이지 않습니다.
따라서 (1) 테스트 스위트가 불완전한 경우이를 확인할 수있는 간단한 방법은 없습니다. 코드 적용 범위 분석은 일부 코드 줄이 실행되지 않았 음을 증명할 수 있습니다. 즉, 제품군에 어떤 방식으로 결함이 있지만 결함이 얼마나 심각하지 않은지, 그리고 그것이 충분하다는 것을 결코 증명할 수는 없습니다. 100 % 코드 적용 범위에서도 모든 관련 상태를 보장 할 수는 없습니다시스템의 운동이 수행 될 수 있고, 존재할 수있는 조합 상태의 수 때문에 임의의 현실적인 시스템에 대해 완전한 상태 커버리지를 달성 할 수 없다. 테스트 케이스를 점검하여 검사하려는 항목을 확인하는 것이 올바른지 확인하는 좋은 방법 중 하나는 테스트를 작성하고 실제로 실패했는지 확인하고 코드를 작성 / 변경 한 다음 테스트가 통과하는지 확인하는 것입니다. 따라서 테스트 중심 개발에 대한 열의는 개별 테스트가 올바른 일을 수행 할 수 있다는 것을 확신 할 수있게하며, 그런 식으로 전체 코드베이스를 작성하면 대규모 시스템에서도 비슷한 수준의 신뢰를 얻을 수 있습니다.
(2) 테스트 스위트는 일반적으로 요구 사항이 변경 될 때마다 불충분하게됩니다 . 추측 할 필요는 없습니다. 고객이 특정 동작 변경을 원하고 변경 전후에 테스트가 성공하면 특정 입력 / 출력 관계를 실행하지 않은 것이 분명합니다.
테스트 범위가 없거나 범위가 무엇인지 모르는 레거시 시스템의 경우 공식적인 증거는 없지만 경험에서 말하면 (부모의 조언 : 개인적인 의견이 따릅니다!) 테스트에서 압도적으로 가능성이 높습니다. 입니다 하지 충분한. 테스트가 사실적이며 선택적인 품질 향상이지만 실제로는 필요하지 않은 활동으로 간주 될 때 테스트가 코드 기반을 유지하도록하는 인센티브가 불완전하고 체계적이지 않은 경향이 있습니다. 없어요