Computer Science/학부 및 대학원 과목

[소프트웨어 공학] 소프트웨어 테스트원칙

꾸준희 2015. 11. 8. 16:16
728x90
반응형


소프트웨어 테스트원칙



1. 테스팅은 결함이 존재함을 밝히는 활동이다

- 테스팅은 결함이 없음을 증명하기 위한 활동이 아니다. 결함을 발견 해냈을 때, 그것은 성공적이라고 말할 수 있다. 

- 결함이 발견되지 않았다고 해서 해당 소프트웨어에 결함이 없다고 증명된 것은 아니다.


2. 완벽한 테스팅은 불가능하다.

- 한 프로그램은 무한 경로, 무한 입력값, 무한 타이밍이 존재한다.

- 완벽한 테스팅을 하기 위한 노력 대신, 리스크가 큰 영역에서 효율적인 테스트를 하는 것이 중요하다.


3. 테스팅은 개발 초기에 시작된다.

- 테스트 활동은 소프트웨어 생명주기와 함께 하며 각 생명주기 단계의 상응하는 목적을 달성하기 위한 테스트를 수행한다.

- 결함은 일찍 발견할 수록 소요되는 인적, 기간적 리소스가 줄어들고, 개발 후반부에 발견될 결함을 예방할 수 있다.


4. 결함 집중

- 결함은 소수의 특정 모듈에 집중되어 발생한다. 같은 리소스를 들여 결함 1개가 발생한 A모듈, 결함 5개가 발생한 B모듈이 있다면 B모듈에서 더 많은 결함이 발견될 확률이 높다.


5. 살충제 패러독스(Pesticide Paradox)

- 동일한 테스트 케이스로 테스트를 반복하면 새로운 결함을 발견하지 못할 것이다.

- 정기적으로 테스트 케이스를 리뷰하고 새로운 테스트 케이스를 추가하는 것이 필요하다.


6. 테스팅은 정황(Context)에 의존적이다.

- 테스트는 테스팅 되는 대상에 따라 다른 방법으로 접근하는 것이 필요하다.

- 안전을 중요시 하는 보안 소프트웨어와 재미와 흥미를 추구하는 게임 소프트웨어는 다른 방법으로 테스트 되어야할 것이다.


7. 오류-부재의 궤변

- 개발된 시스템이 사용성이 지나치게 낮거나 처음 요구사항을 만족하지 못한다면, 결함을 모두 제거 했다 하더라도 품질이 높다고 볼 수 없다.

- 잔여하는 결함 수가 품질을 보장하는 것은 아님


728x90
반응형