- 테스팅은 결함이 존재함을 밝히는 활동
- 결함이 없다는 것을 증명하는 것이 아니라, 잠재적인 결함에 대한 갯수를 줄이는 것
- Exhaustive Testing(무결점 테스팅)은 불가능
- 모든 경우의 수를 가지고 테스트를 진행하는 것은 불가능, 완벽한 테스팅이 없듯이...
- 모든 조합을 주어진 기간에 하기 힘들기 때문... 60년 동안 테스팅만 한다면 가능 할지도;;;
- 테스팅을 개발 초기 부터 시작
- 개발 초기라도 목표 잡은 테스팅 목표에 맞게 해야 함
- 요구사항 분석서와 개발 문서를 바탕으로 Test Case를 작성하는 과정에서 결함을 발견하는 것(Review)
*인시던트: 결함이 발견하면 그 결함이 Assgin되어 Closed 될 때까지의 일련의 과정을 확인하는 것
- Defact Clustering(결함 집중)
- 결함은 특정 Module에 집중되는 경향이 있음
- 복잡한 구조를 가지고 있는 모듈
- 모듈간에 복잡한 관계를 가지고있는 구조(Tree sticks Interface)
- 높은 개발 레벨 or 최신 버전의 모듈
- re-use하지 않고 새롭게 개발 된 모듈
- 상대적으로 Sizing이 큰 모듈
- 미숙한 개발자가 개발한 모듈
- Pesticide paradox(살충제 파라독스)
- 동일한 TestCase로 반복적으로 테스트를 진행한다면, 새로운 결함을 찾지 못하는 오류를 말함
- 정기적으로 Test Case는 Update를 해야 한다는 의미
- Software Systems Context
- Context에 따라 테스트의 방법과 방식이 달라져야 한다.
- 다른 도메인의 테스트라도 변하지 않은 것이 있음
- 테스트 주요활동에 대한 테스트 프로젝트 계획
- 공식적인 테스트 기법 사용
- 독립적인 테스트 환경
- 효율적이고 효과적인 팀 관리
- 공식적인 테스트 보고서
- Absence-of-errors fallacy(오류 부재의 원인)
- 사용자와 기획 의도에 맞는 제품이 아니라면 품질이 좋다고 볼 수 없다는 의미