오랜시간동안 테스팅 활동을 진행해 오면서 다양한 테스팅의 일반적인 원리가 적립해 왔는데요
오늘은 이러한 테스팅의 원리 중에서 테스팅의 7대 주요원리에 대해서 알아보도록 하겠습니다.
- 테스팅은 결함이 존재함을 밝히는 활동이다. (Testing shows presence of defects)
- 테스팅은 결함이 존재함을 밝히는 활동입니다. 어떤 환경에서 어떤 시나리오로 프로그램이 동작할때 문제가 발생을 찾는 활동입니다. 그리고 이러한 테스트를 통해 요구사항 만족에 대해 확인하고 개발회사에 자신감을 주게됩니다.
- 완벽한 테스팅은 불가능하다 (Exhaustive testing is impossible.)
- 소프트웨어의 모든 입력값 및 출력값을 조합을 테스트하는 것은 불가능합니다.
- 개발초기에 테스팅을 시작하라. (Early Testing)
- 초기에 테스트를 진행할 경우 미리 문제점을 발견하여 나중에 결함을 발견하고 수정하는 것에 비해 비용 및 시간을 절약할 수 있습니다.
- 여기서 말하는 개발초기는 개발진행과 동시에 요구사항 분석서와 설계서등 개발 중간 산출물을 분석해 테스트케이스를 도출하는 과정을 통해 결함을 발견하는 것을 의미합니다.
- 결함집중 (Defect clustering)
- 이 원리는 결함이 발견되는 모듈에 결함이 집중되어 있는 경우가 많기때문에 결함이 많은 모듈에 좀 더 집중 테스트가 필요합니다.
- 살충제 패러독스 (Pesticide paradox)
- 살충제 패러독스는 살충제를 계속 뿌리면 벌레가 내성이 생겨 죽지 않는 현상입니다. 소프트웨어 테스팅에서도 이러한 현상이 발생하는데요 매번 같은 테스트케이스를 항상 똑같이 돌리면 새로은 결함을 발견할 수 없다는 내용입니다.
- 테스팅은 정황에 의존적이다. (Testing is context dependent)
- 모든 프로그램에 모두 같은 테스트를 하는게 아니라 도메인에 맞게 테스트 전략 및 내용을 수정하여 테스트를 하라는 내용입니다.
- 오류 - 부재의 궤변 (Absence-of-errors fallacy)
- 개발한 시스템이 사용자의 필요와 기대에 부응하지 못하고 쓸모없다면 결함을 찾는 활동도 의미가 없다는 내용입니다.