- TDD 의미에서 단위 테스트 에 대해 이야기하고 있습니다. (자동화 된 "통합"또는 테스트라고하는 것은 아닙니다.)
- 테스트가없는 (C ++) 코드와 같은 레거시 코드 (Michael Feathers의 레거시 코드로 효과적으로 작업하기 참조 )
- 또한 레거시 코드는 다음과 같습니다. 지난 10-5 년 동안 우리 팀이 협력해온 코드이므로 변경해야 할 사항을 어디에 두어야하는지에 대한 좋은 아이디어가 있습니다.
- 우리 는 나중에 나왔거나 단위 테스트 (일반적인 응용 프로그램 특정 컨테이너, 문자열, 네트워크 도우미 등)에 "자연스럽게"적합했던 일부 모듈에 대해 단위 테스트를 실시했습니다 (부스트 테스트를 통해 ).
- 아직 적절한 자동 수락 테스트가 없습니다.
최근에는 3 가지 새로운 사용자 대면 기능을 구현할 수있는 "즐거움"이있었습니다.
그 각각은 내가 변경 해야하는 코드 부분, 1-2 시간 동안 변경 해야하는 (작은) 코드를 구현하는 데 1-2 시간, 앱을 확인하는 데 1-2 시간이 걸리는 데 약 1-2 시간이 걸렸습니다. 그 후에 올바르게 달려서해야했습니다.
이제 작은 코드를 추가했습니다. (각 기능마다 하나의 방법과 몇 개의 전화 회선이 있다고 생각합니다.)
(에 제안 된 방법 중 하나를 통해이 코드 밖으로 인수 분해 WEwLC을 했을 단위 테스트는 메이크업 감각을 텐데 그래서 () 및 완전한 동의어 반복하지) 쉽게 하지 많은 경우, 다른 2-4시간을 촬영. 이것은 각 기능에 50 % -100 %의 시간을 추가했을 것입니다.
- 코드에 대해 이해하기 위해 단위 테스트가 필요하지 않았습니다.
- 수동 테스트는 코드가 앱의 나머지 부분에 올바르게 통합되어 있는지 테스트해야하기 때문에 동일한 양의 작업입니다.
, 부여 하면 나중에, "누군가가"함께 와서 코드, 그는 감동을, 이론적으로 그 단위 테스트에서 몇 가지 이점을 가질 수있다. (이론적으로 테스트 된 코드 아일랜드는 테스트되지 않은 코드의 바다에 살 것입니다.)
따라서 이번에는 단위 테스트를 추가하는 데 어려움을 겪지 않기로 결정했습니다. 테스트중인 항목을 얻기위한 코드 변경은 기능을 올바르게 ( 정확하게 ) 구현 하기위한 코드 변경보다 훨씬 더 복잡했을 것 입니다.
이것이 강력하게 결합 된 레거시 코드에 일반적인 것입니까? 나는 게 으르거나 팀으로서 잘못된 우선 순위를 설정합니까? 아니면 오버 헤드가 너무 높지 않은 물건 만 테스트하는 것이 신중합니까?