우선 순위를 바로 잡자 ...
고객으로서의 역할에서 주요 관심사 는 단위 테스트가 아닙니다.
소프트웨어를 생산하는 공급 업체를 사용하는 경우 한 가지 방법론을 사용하는지 걱정할 필요가 없습니다. 당신의 목표는 당신의 목표를 달성하는 데 도움이되는 일종의 해결책을 얻는 것입니다. 당신이 신경 써야 할 유일한 것은 그 해결책이 수용 가능하다는 것입니다. 이것이 바로 고객이 원하는 것을 얻을 수 있도록하는 책임에 따라 승인 테스트 를받는 이유입니다. 고객 수용의 중요한 순간에 돈이 회사의 주머니에서 공급자의 주머니로 거래됩니다.
단위 테스트를 제공 가능한 요구 사항으로 요구할 수 있지만 몇 가지 상속 문제가 있지만 가장 심각한 것은 메트릭을 결정할 사전 확실한 방법이 없다는 것입니다.
10 개의 테스트가 있어야합니까? 100 번의 테스트는 어떻습니까? 1000 번의 테스트는 어떻습니까? 실제로 처음에 필요한 테스트 수를 결정하는 것은 매우 어렵습니다. 실제 숫자는 실제로 ... 정지 문제와 같이 결정할 수 없지만 ... 그 문제를 해결하고 있지 않습니다.
단위 테스트가있는 소프트웨어 만 있으면 개발을 계속할 수 있습니다. 단위 테스트는 아직 무엇을 깨뜨 렸는지 알려주지 않지만 코드에 회귀 버그가있는 경우 알려주는 데 적합합니다.
"물론 100 %!" 당신은 생각할 것입니다. 불행히도 그 지표는 오도의 소지가 있습니다. 100 % 코드 적용 범위를 가지고 있어도 예상대로 작동 하는지 확실 합니까? 100 % 적용 범위를 가질 수 있지만 완료되지는 않습니다.
실제로해야 할 일은 탐색 적 테스트입니다. 즉, 물건을 깰 수있는 사람을 찾아서 테스트를하도록합니다. 개발자가 생각하지 못한 버그를 찾기 위해.
또한 필요한 성능 해킹이 있고 테스트하기 어려운 디자인 패턴을 사용하는 경우 (원하는 검색 엔진에서 "singleton"및 "tdd"를 검색하면 몇 가지 예를 찾을 수 있음) 순수한 단위 테스트를 통해 100 % 달성 할 수없는 경우가 있습니다.
제공된 소프트웨어가 작동하기 를 원하며 사양 문서가 유일하게 보증합니다.
더 높은 수준의 테스트 가 필요합니다
사양 문서는 어떻게 든 검증되어야합니다. 각 목표는 명확한 목표와 수용 기준을 가진 공급 업체와 함께 진행되어야합니다. 제대로 작동하는 QA 조직 (예산이 한정되어 있고 범위가 제한된 경우 훌륭한 테스터)은 이러한 승인 기준을 확인하기위한 테스트 사례를 제공합니다. 또한 이러한 승인 기준을 검증 할 사람이 필요합니다.
목표를 확인하는 방법에는 여러 가지가 있으며, 누군가 제정신의 품질, 성능 및 효율성 목표를 설정할 수 없다고 말하면 탐색, 성능 및 유용성 테스트에 대한 크고 무거운 책으로 머리를 맞출 것입니다. 목표를 달성하기가 쉽지만 지식과 의사 소통은 현실적인 목표를 세우는 데 도움이됩니다.
저는 변호사는 아니지만 대부분의 프로젝트 계약 (기본적으로 프로젝트 의 모든 사양 의 어머니 임)을 읽습니다. 일반적으로 허용되는 버그 수를 규정하는 결함 비율 기준이 있습니다. 버그는 보통 심각도를 통해 결정되며, QA에서 발견 한 중단 방지 버그는 내성이 낮고 사소한 결함은 내성이 높습니다. 실제 프로젝트에서는 소프트웨어에 결함이 없어야한다는 것을 요구하기가 어렵습니다. 마감일은 보통 그 연습을 중단합니다. 이러한 상황에서 스코프 협상을 시작해야합니다.
내가 본 대부분의 제공된 소프트웨어는 일반적으로 단위 테스트와 함께 제공되지 않습니다. 공급 업체가이를 제공하기에 충분히 전문적이어야한다고 주장 할 수 있지만, 단위 테스트를 제공하려는 주된 이유는 회귀 버그가 발생하지 않고 리팩토링을 활성화해야하기 때문입니다. 공급 업체와 고객 모두 마감일이 촉박 한 실제 프로젝트에서 범위를 낮추고 단위 테스트는 일반적으로 창 밖으로 나가 필요한 결과물 목록에서 제거합니다.
하이 프로파일 오픈 소스 소프트웨어가 단위 테스트와 함께 제공되는 것은 슬픈 일이지만 전문 소프트웨어 개발자는 그렇지 않습니다.
고객으로서 언제 단위 테스트를해야합니까?
나는 것을 주장 단지 당신이 할 때 진정으로 걱정하는 단위 테스트가 전달 가능한 소프트웨어가 굵은이해야 할 당신이 할 수있는 테스트하는 독립 실행 형 프로그램으로 실행되지 않는 자급 자족 구성 요소는 단위 테스트가되는 경우이다 . 클래스 라이브러리는 단위 테스트와 함께 제공 될 수있는 일종의 제품입니다.