블랙박스 테스트
1. 구문(Syntax)
- 입력 데이터가 사전에 정의해 놓은 데이터 유형에 부합하는지(valid), 아닌지(invalid)를 분류한 뒤 예상되는 결과를 테스트
- 블랙박스 테스트 방법 중 가장 간단
2. 동등 분할(Equivalence Partitioning, 동치 분할)
- 입력 데이터를 중심으로 테스트 케이스를 만들어 테스트하는 방법
- 입력 조건에 부합하는 데이터와 부합하지 않는 데이터의 개수를 균등하게 설정하여 테스트 케이스를 작성
3. 경계값 분석(Boundary Value Analysis)
- 입력 조건의 중앙 부근의 값보다는 경계 지점의 값에서 오류 발생의 확률이 높은 점을 감안하여 입력 조건의 경계값을 테스트 케이스에 반영하여 테스트 하는 방법
- 범위 바깥의 값과 경계값으로 테스트 수행
- 동치 분할 방법이 입력 데이터에 초점을 맞춤으로 인해 분석에 일부 단점이 있는 것을 보완하기 위한 방법
4. 원인-효과 그래프(Cause-Effect Graphing)
- 입력 데이터 간의 관계와 입력을 원인으로 출력을 효과로 보아 입력이 출력에 영향을 미치는 상황을 체계적으로 분석함으로써 효과가 높은 테스트 케이스를 선정하여 테스트
- 동등 분할과 경계값 분석 방법이 입력 환경의 복잡성을 충분히 반영하지 못하는 문제점을 보완한 테스트 방법
5. 비교(Comparison)
- 프로그램의 형상 통제를 통해 축적한 여러 버전의 프로그램에 동일한 검사 데이터를 통해 점검하여 동일한 결과를 얻을 수 있는지 비교하는 식으로 테스트하는 방법
6. 오류 예측(Error Guessing)
- 과거에 축적한 경험 데이터나 테스트 수행자의 전문성을 보완하여 테스트에 반영하는 방법
- 테스트 방법이 누락하기 쉬운 오류를 경험과 감각으로 찾아내는 방법
7. 의사 결정 테이블(Decision Table)
- 입력 데이터 및 출력 데이터의 값ㅇ 참과 거짓으로 결정되는 경우 모든 경우의 수를 확인하는 방법
- 입력 데이터값이 적은 수의 조건일 경우에 유효
8. 상태 전이도(State Transition Diagram)
- 테스트 상황에 따라 유효한 상태 전이와 유효하지 않은 상태 전이를 수행하도록 테스트 케이스를 설계
화이트박스 테스트
1. 문장 커버리지 (Statement Coverage) | 모든 코드를 최소 1번 이상 실행하도록 테스트 | if 문이 있는 함수에서 모든 문장을 실행하도록 입력을 만듦 |
2. 분기(선택, 결정) 커버리지 (Branch Coverage) | 모든 조건의 참/거짓 분기를 실행 | if (x > 0) 의 경우, x > 0 참, 거짓 모두 테스트 |
3. 조건 커버리지 (Condition Coverage) | 복합 조건의 각 조건식이 참/거짓이 되는 경우를 모두 테스트, 결정 커버리지보다 강력하지만 포함하지는 않음 | if (a > 5 && b < 3) → a, b 각각 참/거짓 조합 확인 |
4. 조건/결정 커버리지 (Condition/Decision Coverage) | 전체 조건식 뿐만 아니라 개별 조건식도 참/거짓이 되도록 수행 | |
5. 변경 조건/결정 커버리지 (Modified Condition/Dicision Coverage) | 모든 분기와 조건의 조합을 고려하나 모든 조합을 테스트하는 대신 테스트가 필요한 중요한 조합을 찾아내서 수행(각각의 파라미터가 적어도 한 번 최종 결과에 영향을 줌) | |
6. 경로 커버리지 (Path Coverage) | 프로그램의 모든 실행 경로를 테스트 (가장 완전한 방법) | 모든 루프, 조건, 분기를 따라 가능한 모든 경로 테스트 |
7. 루프 테스트 (Loop Testing) | 반복문이 0회, 1회, 여러 회 실행되도록 테스트 | for (int i = 0; i < n; i++) → n=0, n=1, n>1 |
8. 데이터 흐름 테스트 (Data Flow Testing) | 변수의 정의→사용 흐름을 따라 테스트 | x를 정의하고 사용하기까지 중간에 문제가 생기진 않는지 검사 |
9. 다중 조건 커버리지 (Multiple Condition Coverage) | 모든 조건식의 가능한 조합을 테스트 (조건 커버리지보다 더 세분화) |
'CS > SoftwareEngineering' 카테고리의 다른 글
테스트 목적에 따른 분류 (0) | 2025.04.17 |
---|---|
형상 관리 도구 (0) | 2025.04.17 |
정적/동적 다이어그램 (0) | 2025.04.16 |
GoF 디자인 패턴 (0) | 2025.04.16 |
응집도(Cohesion)/결합도(Coupling) (0) | 2025.04.16 |