나는 당신에게 줄 연구 논문이나 통계가 없지만 역사적으로 평균 단위 테스트 범위가 적고 엔드 투 엔드 테스트가 없었던 팀 / 조직에서 일한 경험을 점차적으로 이야기 할 것입니다. 우리가 ATDD (그러나, 아이러니하게도, 더으로, 지금 위치로 줄 이동 하지 전통적인 TDD) 방식을.
특히, 프로젝트 타임 라인이 어떻게 진행되는지 (그리고 여전히 같은 조직의 다른 팀 / 제품에서 진행되는 방식)입니다.
- 최대 4주의 분석 및 구현
- 2 주간의 회귀 테스트, 버그 수정, 안정화 및 릴리스 준비
- 1-2 주간의 알려진 결함 수정
- 2-3 주간의 코드 정리 및 사후 제작 문제 / 지원 (알 수없는 결함 / 예상치 못한 중단)
이것은 어리석은 오버 헤드 처럼 보이지만 실제로는 매우 흔합니다. 많은 조직에서 종종 품질 보증이 누락되거나 비효율적입니다. 우리는 좋은 테스터와 집중적 인 테스트 문화를 가지고 있기 때문에 이러한 문제는 수개월 / 년에 걸쳐 천천히 진행되는 것이 아니라 초기에 발견되어 (대부분) 미리 해결됩니다. 55-65 %의 유지 보수 오버 헤드는 디버깅에 소요되는 시간의 80 %에 비해 일반적으로 수용되는 표준보다 낮 습니다. 이는 일부 단위 테스트와 부서 간 팀 (QA 포함)을 가지고 있기 때문에 합리적 입니다.
우리 팀이 최신 제품을 처음 출시하는 동안 승인 테스트를 개편하기 시작했지만 제대로 작동하지 않았으며 여전히 많은 수동 테스트에 의존해야했습니다. 릴리스는 우연한 승인 테스트와 다른 프로젝트에 비해 매우 높은 단위 테스트 적용으로 인해 다른 것보다 다소 덜 고통 스럽습니다. 그러나 우리는 거의 2 주 동안 회귀 / 안정화에, 2 주 동안 후반 작업 문제에 썼습니다.
반대로, 최초 릴리스 이후의 모든 릴리스 에는 초기 승인 기준과 승인 테스트가 있었으며 현재 반복은 다음과 같습니다.
- 8 일간의 분석 및 구현
- 안정화 2 일
- 0 ~ 2 일의 후반 작업 지원 및 정리
즉, 유지 보수 오버 헤드 55-65 %에서 유지 보수 오버 헤드 20-30 %로 진행했습니다. 동일한 팀, 동일한 제품, 주요 차이점은 승인 테스트의 점진적인 개선 및 간소화입니다.
유지 보수 비용은 스프린트 당 QA 분석가의 경우 3-5 일, 개발자의 경우 1-2 일입니다. Google 팀에는 4 명의 개발자와 2 명의 QA 분석가가 있습니다 (UX, 프로젝트 관리 등은 제외). 60 일 중 최대 7 일이며, 15 %의 구현 오버 헤드로 반올림합니다. 안전한면.
우리는 각 릴리스 기간의 15 %를 자동화 된 승인 테스트 개발에 사용하며,이 과정에서 각 릴리스의 70 %를 회귀 테스트를 수행하고 사전 프로덕션 및 사후 프로덕션 버그를 수정할 수 있습니다.
두 번째 타임 라인이 첫 번째 타임 라인보다 훨씬 정확하고 짧다는 것을 알았을 것입니다. 그것은 사전 승인 기준과 승인 테스트에 의해 가능해진 것입니다. "완료된 정의"를 크게 단순화하고 릴리스의 안정성에 훨씬 더 자신감을 가질 수 있기 때문입니다. 아주 사소한 유지 보수 릴리스 (버그 수정 전용 등)를 수행하는 경우를 제외하고 다른 팀은 지금까지 격주 릴리스 일정에 성공하지 못했습니다.
또 다른 흥미로운 부작용은 출시 일정을 비즈니스 요구에 맞게 조정할 수 있다는 것입니다. 한 번은 다른 릴리스와 일치시키기 위해 약 3 주로 연장해야했으며 더 많은 기능을 제공하면서도 테스트 나 안정화에 추가 시간을 소비하지 않고도 그렇게 할 수있었습니다. 또 다른 시간, 우리는 공휴일과 자원 충돌로 인해 약 1½ 주로 단축해야했습니다. 우리는 더 적은 개발 작업을 수행해야했지만 예상대로 새로운 결함을 도입하지 않고도 테스트 및 안정화에 더 적은 시간을 소비 할 수있었습니다.
내 경험상, 특히 프로젝트 나 스프린트에서 매우 초기에 수행 될 때, 그리고 제품 소유자가 작성한 승인 기준으로 잘 유지 될 때의 합격 테스트는 여러분이 할 수있는 최고의 투자 중 하나입니다. 다른 사람들이 올바르게 지적하는 기존의 TDD와 달리 결함이없는 코드 보다 테스트 가능한 코드 를 만드는 데 더 중점을 둡니다. ATDD는 실제로 결함 을 훨씬 빨리 포착 하는 데 도움이됩니다 . 그것은 매일 완전한 회귀 테스트를 수행하는 테스터 군대를 보유하는 것과 동등한 조직이지만 훨씬 저렴합니다.
ATDD는 RUP 또는 폭포 스타일의 3 개월 이상 지속되는 장기 프로젝트에서 도움이 되나요? 배심원은 여전히 저쪽에 있다고 생각합니다. 내 경험상 장기 실행 프로젝트에서 가장 크고 추악한 위험은 비현실적인 마감일과 변화하는 요구 사항입니다. 비현실적인 마감일로 인해 바로 가기 테스트를 포함하여 바로 가기를 수행하게되며 요구 사항을 크게 변경하면 많은 테스트가 무효화되어 다시 작성해야하고 구현 오버 헤드가 발생할 수 있습니다.
ATDD는 애자일 모델이나 공식적으로 애자일은 아니지만 출시 일정이 매우 빈발 한 팀에게 환상적인 보상을 제공 할 것입니다. 나는 장기 프로젝트에서 그것을 시도한 적이 없다. 주로 그런 종류의 프로젝트에서 기꺼이 시도하려는 조직에 대해 들어 본 적이 없거나 들어 본 적이 없기 때문에 표준 면책 조항을 여기에 삽입하십시오. YMMV와 그 모든 것.
PS이 경우 "고객"의 추가 노력이 필요하지 않지만 실제로 승인 기준을 작성하는 전담 풀 타임 제품 소유자가 있습니다. "컨설팅웨어"비즈니스에 종사하고 있다면 최종 사용자 가 유용한 승인 기준을 작성 하는 것이 훨씬 어려울 수 있습니다 . ATDD를 수행하기 위해서는 제품 소유자 / 제품 관리자가 매우 중요한 요소 인 것 같습니다. 다시 한 번 본인의 경험을 통해서만 말할 수는 있지만 ATDD가 그 역할을 수행 할 사람이 없이도 성공적으로 수행되는 것을 들어 본 적이 없습니다.