-
소프트웨어 테스트의 개요
-
정의
- 기대되는(Expected) 수행 결과를 무한 실행 도메인(Infinite Execution Domain)에서 적절히 선택된(Selected) 유한(Finite) 테스트 케이스를 통하여 프로그램의 수행 결과를 동적(Dynamic)으로 검증하는 것
Expected |
사용자의 기대치, 명세, 묵시적 요구 사항, 합당한 기대치 |
Selected |
테스트 집합의 선택 기준에 따라 효과가 크게 달라짐 |
Finite |
한정된 자원과 일정 대비 무한한 테스트 요구 사항 사이의 Trade-off 고려가 필요 |
Dynamic |
비확정된 시스템 상태에 따라 입력에 대한 프로그램의 실행 |
-
목적
- 프로그램에 잠재된 오류의 발견
- 기술적인 기능 및 성능의 확인
- 사용자 요구 사항 만족도 향상
-
제품에 대한 신뢰도 향상
-
중요성
구분 |
내용 |
기준 |
테스트의 일관성 |
테스트의 목적 달성을 위한 테스트 수행 횟수 |
테스트 타당성 기준 |
테스트의 구성 |
테스트의 목적 달성을 위한 테스트 케이스 선택 |
테스트 선택 기준 |
-
테스트 관련 용어
- 오류(Error) : 계산된 결과와 정확한 결과 사이의 차이
- 결함(Fault/Defect) : 프로그램에서 잘못된 단계, 프로세스나 데이터의 정의로, 기능 불량의 원인
- 장애(Failure) : 결함의 부정확한 결과로, 즉 시스템이 제공하는 서비스에서 관찰된 원하지 않은 결과를 의미
- 착오(Mistake) : 잘못된 결과를 만드는 인간의 행위
-
테스트 주요 이슈
-
소프트웨어 테스트의 법칙
- 개발자가 자기 프로그램을 직접 테스트하지 않음
- 테스트 케이스는 기대되는 표준 결과를 포함
- 예측 오류나 기대되지 않는 결함이 있다는 가정 하에 테스트 계획 수립
- 추가 결함이 발견될 확률은 이미 발견된 결함 수에 정비례
- 개발 시 노력 분포도 40%(분석/설계) : 20%(개발) : 40%(테스트) 규칙을 제안할 정도로 테스트의 중요성 및 집중도를 요구