2010-06-29 3 views

답변

5

TDD는 쓰려는 코드를 "소비"한다는 관점에서 생각하게 만듭니다. 이 관점은 개발자 (개발자)가 API 구성 방법 및 구현 요구 사항을 확인하는 방법에 대해 생각할 필요가있는 위치에 배치하는 데 도움이됩니다.

  • 요구 사항 :

    TDD는 같은 지역에서 결함을 식별하는 데 도움이됩니다. 코드가 수행해야 할 작업이 명확한가요? 코드의 불변성 또는 최종 효과를 검증 할 수 있습니까? 성공 기준이 요구 사항에 정의되어 있는지 또는 모호하거나 부재한지 여부

  • 사용 편의성. 최종 사용자가 필요로하거나 미래에 통합 할 다른 코드를 얻기 위해 작성하려는 코드를 효과적으로 사용할 수 있습니까?
  • 테스트 가능성. 디자인에서 액세스 가능한 데이터 또는 개체를 기반으로 코드를 검증 할 수 있습니까? 상황이 정상적으로 작동하는지 확인할 수 있습니까?
  • 가장자리 경우. 엣지 케이스의 존재를 확인함으로써 엣지 케이스를 식별하고 대응하는 것이 더 쉽습니다. 엣지 케이스가 게임에서 늦게 자르면 디자인을 다시 생각하기보다는 기존 디자인에 적응시키려는 경향이 있습니다.
  • 예외 처리. 테스트 사례 작성을 시작하면 오류 또는 예외 조건에 응답 할 수있는 영역을 실현하기 시작합니다. 이것은 예외 처리 전략, 던져 넣을 예외의 종류, 포함 할 정보 등을 계획하는 데 도움이 될 수 있습니다.

TDD는 또한 테스트를 포어라운드로 가져 오기 때문에 테스트의 적용 범위를 향상시키는 데 도움이됩니다. 그것을 "사실 이후"활동으로 만듭니다. 테스트가 마지막에 발생하면 시간이나 예산 제약으로 인해 또는 개발자의 열정과 동기가 자연스럽게 떨어지기 때문에 테스트가 생략되거나 짧아지는 경향이 가장 큽니다.

1

"버그"디자인 : 일반적으로 TDD를 수행하는 경우 자연스럽게 테스트 가능한 디자인으로 끝납니다. 결과적으로, 은 커플 링을 줄이기 위해이되어 간단하게 작업하기 쉬운 코드베이스로 이어집니다.

또한 TDD는 특정 상황에서 코너 사례를 더 쉽게 생각할 수 있다는 것을 알았지 만 디자인 이점이 더 중요합니다.

+0

나는 본다. 특정 버그를 제거하는 데 도움이 될까요? 예 : 산술, 논리, 구문. – Drizzy

+1

@ user354822 : 문법상의 버그는 대개 컴파일러에 의해 잡히게됩니다 ...하지만 적절한 테스트를 거친다면 모든 종류의 버그를 발견 할 수 있습니다. 동시성 결함은 일반적으로 발견하기가 더 어렵습니다. –

0

TDD가 가장 차별적으로 잡은 버그는 null 또는 0 값 매개 변수입니다. 값을 고려하지 않고 API를 플러시하는 방법과 마찬가지로이 경우 먼저 테스트를 작성하는 경향이 있습니다. "오, 그냥 거기에 null을 던지면 다음 테스트에서 실질적인 가치를 부여 할 것입니다." 그래서 내 방법은 처음에는 그 특정 엣지 케이스를 처리하도록 작성되었으며, 적색 - 녹색 - 리팩터 프로세스에서 반복적으로 테스트를 실행하면 엣지 케이스가 제대로 작동합니다. TDD를 사용하기 전에 null 또는 0 매개 변수를 상당히 자주 잊어 버릴 것입니다. 이제는 실제로 시도하지 않고 TDD를 적용하는 자연스러운 결과로 처리됩니다.

+0

'Null Object' 패턴을 사용하고 있습니까? – Gutzofter

+0

@Gutzofter : 예, 있습니다. 그것은 내 즐겨 찾기 중 하나입니다. –

+0

"매끄러운"것으로 보입니다. – Gutzofter

관련 문제