CS/SoftwareEngineering

테스팅 기법

east-wind 2025. 4. 14. 23:09

블랙박스 테스트

 

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