매우 짧은 개발주기를 반복하면 소프트웨어에서 버그를 제거하는 데 도움이 될 수 있습니까? 올바르게 구현되면 TDD가 가장 효과적으로 잡는 데있어 어떤 버그가 있습니까? 그리고 왜?테스트 주도 개발이 잡는 데 가장 효과적인 버그 유형은 무엇입니까?
미리 감사드립니다.
매우 짧은 개발주기를 반복하면 소프트웨어에서 버그를 제거하는 데 도움이 될 수 있습니까? 올바르게 구현되면 TDD가 가장 효과적으로 잡는 데있어 어떤 버그가 있습니까? 그리고 왜?테스트 주도 개발이 잡는 데 가장 효과적인 버그 유형은 무엇입니까?
미리 감사드립니다.
TDD는 쓰려는 코드를 "소비"한다는 관점에서 생각하게 만듭니다. 이 관점은 개발자 (개발자)가 API 구성 방법 및 구현 요구 사항을 확인하는 방법에 대해 생각할 필요가있는 위치에 배치하는 데 도움이됩니다.
TDD는 같은 지역에서 결함을 식별하는 데 도움이됩니다. 코드가 수행해야 할 작업이 명확한가요? 코드의 불변성 또는 최종 효과를 검증 할 수 있습니까? 성공 기준이 요구 사항에 정의되어 있는지 또는 모호하거나 부재한지 여부
TDD는 또한 테스트를 포어라운드로 가져 오기 때문에 테스트의 적용 범위를 향상시키는 데 도움이됩니다. 그것을 "사실 이후"활동으로 만듭니다. 테스트가 마지막에 발생하면 시간이나 예산 제약으로 인해 또는 개발자의 열정과 동기가 자연스럽게 떨어지기 때문에 테스트가 생략되거나 짧아지는 경향이 가장 큽니다.
"버그"디자인 : 일반적으로 TDD를 수행하는 경우 자연스럽게 테스트 가능한 디자인으로 끝납니다. 결과적으로, 은 커플 링을 줄이기 위해이되어 간단하게 작업하기 쉬운 코드베이스로 이어집니다.
또한 TDD는 특정 상황에서 코너 사례를 더 쉽게 생각할 수 있다는 것을 알았지 만 디자인 이점이 더 중요합니다.
TDD가 가장 차별적으로 잡은 버그는 null 또는 0 값 매개 변수입니다. 값을 고려하지 않고 API를 플러시하는 방법과 마찬가지로이 경우 먼저 테스트를 작성하는 경향이 있습니다. "오, 그냥 거기에 null을 던지면 다음 테스트에서 실질적인 가치를 부여 할 것입니다." 그래서 내 방법은 처음에는 그 특정 엣지 케이스를 처리하도록 작성되었으며, 적색 - 녹색 - 리팩터 프로세스에서 반복적으로 테스트를 실행하면 엣지 케이스가 제대로 작동합니다. TDD를 사용하기 전에 null 또는 0 매개 변수를 상당히 자주 잊어 버릴 것입니다. 이제는 실제로 시도하지 않고 TDD를 적용하는 자연스러운 결과로 처리됩니다.
나는 본다. 특정 버그를 제거하는 데 도움이 될까요? 예 : 산술, 논리, 구문. – Drizzy
@ user354822 : 문법상의 버그는 대개 컴파일러에 의해 잡히게됩니다 ...하지만 적절한 테스트를 거친다면 모든 종류의 버그를 발견 할 수 있습니다. 동시성 결함은 일반적으로 발견하기가 더 어렵습니다. –