약 1 년 전에 나는 9 개월의 휴식을 취할 수있을만큼 운이 좋았다. 나는 그 시간에 C # 기술을 연마하기로 결정했습니다. 나는 많은 프로젝트를 시작했고 TDD를 따르도록 강요했다.
상당히 깨달은 과정이었습니다.
처음에는 힘들었지 만 시간이 지남에 따라 더 테스트 가능한 코드를 작성하는 방법을 알게되었고 (이것은 더 많은 SOLID 코드 인 경향이 있음) 그 과정에서 OO 디자인 기술도 향상 시켰습니다.
이제 나는 노동력으로 돌아 왔고 이상한 것을 눈치 m습니다.
나는 TDD를 따르지 않는 것을 선호합니다.
TDD로 인해 속도가 느려지고 실제로 깨끗한 응용 프로그램을 디자인하기가 더 어려워졌습니다.
대신, 나는 약간 (대규모) 다른 접근법을 채택했습니다.
- 작업의 수직 조각을 선택
- 작동하는 프로토 타입 개발
- 모든 것이 멋지고 깔끔해질 때까지 리팩터링
- 내가 작성한 아름다운 SOLID 및 테스트 가능한 코드에 감사드립니다.
1 단계가 "테스트 대상의 공개 표면을 정의"하지 않았고 2 단계가 "공개 영역에서 bejesus를 테스트"하지 않았 음을 알 수 있습니다. 또한 테스트와 관련된 단계가 없음을 알 수 있습니다. 테스트 가능한 코드를 작성하고 있지만 아직 테스트하지는 않았습니다.
이제 실제로 어떤 종류의 테스트도 수행하지 않았다는 것을 분명히하고 싶습니다. 내가 쓰는 코드가 작동합니다 . 수동으로 테스트하기 때문에 작동합니다.
또한 모든 자동화 된 테스트를 능가하지는 않는다는 것을 분명히하고 싶습니다. 이것은 내 프로세스가 다른 곳입니다. 그리고 이것이 내가이 질문을하는 이유입니다.
이론적으로 TDD. 실제로는 아닙니다.
내 프로세스는 약간 발전했으며 TDD와 테스트가없는 것 사이에서 균형을 잡았으며 매우 생산적이며 합리적으로 안전합니다. 다음과 같이 진행됩니다.
- 테스트를 염두에두고 작동하는 수직 작업 조각을 구현하지만 테스트를 작성하지 마십시오.
- 길을 내려간 경우 (예 : 한 달 후) 해당 슬라이스를 수정해야합니다.
- 작업 단위가 올바른지 확인하는 단위 테스트, 통합 테스트, 동작 테스트 등 작성
- 코드 수정
- 해당 슬라이스를 수정할 필요가없는 경우
- 아무것도하지 마세요
코드를 작성 하기 전에 코드를 수정 하기 전에 테스트 작성의 부담을 간단히 변경함으로써 훨씬 더 많은 작업 코드를 생성 할 수있었습니다. 그리고 테스트를 작성하려고 할 때 훨씬 적은 수의 글을 쓰지만 거의 많은 부분을 차지합니다 (높은 ROI).
이 프로세스가 마음에 들지만 확장이 잘되지 않을까 걱정됩니다. 이 테스트의 성공은 개발자가 변경하기 전에 테스트 작성에 대해 부지런한 노력을 기울입니다. 그리고 그것은 꽤 큰 위험 인 것 같습니다. 그러나 TDD는 매우 위험합니다.
그래서 [BT] DD 지옥에 가겠습니까, 아니면 이것이 일반적인 형태의 실용적인 코딩 및 테스트입니까?
이런 식으로 계속 일하고 싶습니다. 이 프로세스를 장기적으로 작동 시키려면 어떻게해야합니까?
노트 :나는 프로젝트의 유일한 개발자이며 요구 사항 수집, 디자인, 아키텍처, 테스트, 배포 등 모든 것을 담당합니다. 이것이 프로세스가 작동하는 이유라고 생각합니다.
If that slice doesn't need modification
. lizkeogh.com/2012/06/24/beyond-test-driven-development