원래는 테스트를 작성하는 것이 개발자의 의무이지만, 많은 경우에 / 성숙한 개발자는 이러한 경우가 80 %까지 커버리지를 제공하지 않는 것으로 나타났습니다.
개발자 대신 지정된 프로젝트에 대한 모든 테스트를 작성하는 전담 QA 담당자가 있습니까?
그것에 대해 어떤 단점이 있습니까?
원래는 테스트를 작성하는 것이 개발자의 의무이지만, 많은 경우에 / 성숙한 개발자는 이러한 경우가 80 %까지 커버리지를 제공하지 않는 것으로 나타났습니다.
개발자 대신 지정된 프로젝트에 대한 모든 테스트를 작성하는 전담 QA 담당자가 있습니까?
그것에 대해 어떤 단점이 있습니까?
답변:
테스트 주도 개발에서 테스트는 개발자가 작성해야합니다. 그렇지 않으면 개발자 이외의 사람이 개발을 추진하고 있습니다.
개발자가 아닌 사람에게 테스트를 작성하는 즉시 개발자가됩니다.
TDD에 대한 나의 경험은 테스트 코드를 작성하는 것이 종종 프로덕션 코드를 작성하는 것보다 어렵거나 어렵다는 것입니다. 따라서 우수한 단위 테스트 / 통합 테스트 코드를 작성할 수있는 리소스가 있다면 해당 테스트를 통과하는 프로덕션 코드를 작성해야합니다.
QA의 임무는 완전히 다른 종류의 테스트 (예 : 유용성 / 통합 테스트)를 수행하는 것입니다. 그들은 실제로 코드에 사용 된 기술을 알 필요가 없습니다.
낮은 코드 적용 범위가 걱정되는 경우 개발자를 훈련시켜야합니다. 예를 들어 코드 범위가 증가 할 때까지 새로운 기능에 대한 작업을 중지합니다. 일부 조직에서는 발견되지 않은 코드를 체크인 할 수없는 저장소에 사전 커미트 후크가 있습니다.
마지막으로, '순수한'TTD에는 발견되지 않은 코드가 없어야합니다 (테스트를 먼저 작성하므로). 그러나 더 낮은 코드 적용 범위가 허용되는 경우가 있습니다 (사람들이 그것에 대해 논쟁하지만). 예를 들어 POJO의 게터 / 세터에 대한 테스트 작성은 시간 낭비라고 주장하는 사람들도 있습니다.
이 경우에도 80 %의 보장 범위를 제공하지 않습니다
관리상의 문제 일 수 있습니다.
또는 관련이 없을 수 있습니다.
첫째, 80 %와 100 % 범위의 차이는 혜택이 거의 없기 때문에 많은 비용이들 것입니다.
"범위"는 무엇이든 의미 할 수 있습니다. 코드 줄, 논리 경로 등. 논리 줄이 아닌 코드 줄을 의미한다고 생각합니다.
일부 논리 경로는 "검사로"꽤 잘 테스트됩니다. 코드는 분명하고 if 문이 없으며 복잡성이 매우 낮으며 추가 테스트가 필요하지 않습니다.
20 % 더 많은 테스트가 항상 20 % 더 좋은 것은 아닙니다.
둘째. 관리 문제입니다. 경영진이 100 % 보장 범위를 원할 경우 80 % 적용 범위를 "출시하기에 충분"하지 않고 100 % 적용 범위에 대한 보상 시스템을 마련해야합니다.
더 많은 테스트를 작성하기 위해 QA 담당자를 추가해도 큰 도움이되지 않습니다.
더 많은 테스트를 작성하기 위해 개발자를 추가하는 것은 100 % 테스트 범위에 도달해야합니다.
최소 80 %의 적용 범위가 필요한 경우 몇 가지 작업을 수행해야합니다.
마지막으로 의도 된 실행 경로와 의도하지 않은 실행 경로 간에 차이가 있음을 이해하십시오 . 테스트 주도 코드를 작성하는 과정에서 독립 if 문 쌍이 필요하다는 것을 증명했을 수 있습니다. 결과적으로 사용 가능한 잠재적 인 4 개의 실행 경로 중 2 개에 대한 테스트가 있습니다. 독립적 인 if 문을 하나 더 추가하면 8 개의 실행 경로가있을 수 있습니다 (즉, 기하 급수적으로 증가 함).
TDD가 모든 잠재적 인 실행 경로를 반드시 예측할 필요 는 없으므로 완료 하기 위해 작성해야 할 수도 있지만 해당 경로를 테스트 할 필요 가 없기 때문에 작성되지 않은 많은 테스트가 있습니다. 간단히 말해서, TDD는 적용 범위를 보장 하지는 않지만 존재하는 코드에 대한 이유 를 입증하기위한 적어도 하나의 테스트가 있음을 보증 합니다.