[소프트웨어 공학] 구조 기반 테스트
구조 기반 테스트
- 명세 → Black Box
- 구조 → 프로그램 코드 : White Box
- Statement Testing, Branch Testing, Decision Testing
Statment Testing
- 문장 : Test Coverage Item
- 100%의 문장 커버리지 : 프로그램 내의 모든 문장들을 적어도 한 번씩 접근하여 테스트
- 문장 커버리지 = 실행된 문장 / 전체 문장
절차
- 대상 프로그램에 해당하는 제어 흐름 그래프 작성
- 모든 실행 가능 기본 블록들을 지나가는 프로그램 경로 집합 식별
- 입력 데이터 식별, 기대 출력 식별
문제점
- 실행 불가능 한 블록이 존재하는 경우 100% 블록 커버리지 달성 불가능할 수 있음
- 문장 테스팅은 일부의 상황만 판별하기 때문에 완벽하지 않음
1
2
3
4
5
6
7
8
int file_write(char * fpath){
File *fp;
if(fpath != null)
fp = fopen(fpath, "w");
puts("Hello World!", fp);
fclose(fp);
return 0;
}
- fpath null인 경우 테스트 안하면 오류 생김
- → 이를 보완하기 위한 것이 분기 테스트
Branch Testing
- 분기가 테스트 커버리지 아이템
- Test Coverage Item : Branch or Edge
- 100% 분기 커버리지 : 모든 간선 실행 시
분기 커버리지를 만족하면 문장 커버리지 만족
Decision Testing
- 테스트 커버리지 아이템 : 결정 (True, False)
- 결정 : Decision, 조건 : Condition
- 조건 : 논리 연산자가 없는 경우
- 결정 : 논리 연산자 있는 경우 /
1
2
3
4
if(x < 0 && y > 0)
x += y;
else if(x == 0)
y = 0;
- Condition : 3개 , Decision 2개
- Test Coverage Item : 4개 (True, False 조합)
Decision Testing vs BranchTesting
※ ISTQB 에서는 Branch Testing과 구별하지 않음, 다만 29119에서는 구분함
- 결정문을 가지지 않는 경우 분기 테스트의 테스트 케이스 집합과 결정 테스팅의 테스트 케이스 집합이 동일하지 않을 수 있음
This post is licensed under CC BY 4.0 by the author.