소프트웨어 테스트원칙
1. 테스팅은 결함이 존재함을 밝히는 활동이다
- 테스팅은 결함이 없음을 증명하기 위한 활동이 아니다. 결함을 발견 해냈을 때, 그것은 성공적이라고 말할 수 있다.
- 결함이 발견되지 않았다고 해서 해당 소프트웨어에 결함이 없다고 증명된 것은 아니다.
2. 완벽한 테스팅은 불가능하다.
- 한 프로그램은 무한 경로, 무한 입력값, 무한 타이밍이 존재한다.
- 완벽한 테스팅을 하기 위한 노력 대신, 리스크가 큰 영역에서 효율적인 테스트를 하는 것이 중요하다.
3. 테스팅은 개발 초기에 시작된다.
- 테스트 활동은 소프트웨어 생명주기와 함께 하며 각 생명주기 단계의 상응하는 목적을 달성하기 위한 테스트를 수행한다.
- 결함은 일찍 발견할 수록 소요되는 인적, 기간적 리소스가 줄어들고, 개발 후반부에 발견될 결함을 예방할 수 있다.
4. 결함 집중
- 결함은 소수의 특정 모듈에 집중되어 발생한다. 같은 리소스를 들여 결함 1개가 발생한 A모듈, 결함 5개가 발생한 B모듈이 있다면 B모듈에서 더 많은 결함이 발견될 확률이 높다.
5. 살충제 패러독스(Pesticide Paradox)
- 동일한 테스트 케이스로 테스트를 반복하면 새로운 결함을 발견하지 못할 것이다.
- 정기적으로 테스트 케이스를 리뷰하고 새로운 테스트 케이스를 추가하는 것이 필요하다.
6. 테스팅은 정황(Context)에 의존적이다.
- 테스트는 테스팅 되는 대상에 따라 다른 방법으로 접근하는 것이 필요하다.
- 안전을 중요시 하는 보안 소프트웨어와 재미와 흥미를 추구하는 게임 소프트웨어는 다른 방법으로 테스트 되어야할 것이다.
7. 오류-부재의 궤변
- 개발된 시스템이 사용성이 지나치게 낮거나 처음 요구사항을 만족하지 못한다면, 결함을 모두 제거 했다 하더라도 품질이 높다고 볼 수 없다.
- 잔여하는 결함 수가 품질을 보장하는 것은 아님
'Computer Science > 학부 및 대학원 과목' 카테고리의 다른 글
GLUT의 윈도우 기능 (0) | 2015.11.22 |
---|---|
[소프트웨어 공학] StateDiagram(상태 다이아그램) 이란 ? (0) | 2015.11.13 |
[소프트웨어 공학] 소프트웨어 테스팅의 종류 (0) | 2015.11.08 |
[인공지능] 엔트로피(Entropy) 와 정보이득(Information Gain) 계산 (10) | 2015.11.08 |
[인공지능] Machine Learning - Decision Trees (머신러닝 결정트리) (0) | 2015.11.08 |