정의 및 원리
입력 값을 조합해 테스트 케이스 작성
다른 기법을 이용해 테스트 데이터(입력 값)을 선정한 후 활용 가능(예, 동등 분할, 경계 값 분석)
예제를 통해 알아보겠습니다.
- 시스템 명 : 항공 여행 안내 시스템
- 요구 사항
- 목적지 = 파리, 런던, 시드니
- 좌석 등급 = 퍼스트 클래스, 비지니스 클래스, 이코노미 클래스
- 좌석 위치 = 통로, 창가
절차
- TD1 : 기능 셋 식별
- 항공 여행 안내 시스템
- TD2 : 테스트 컨디션 도출
- TCOND1 : 목적지 - 파리
- TCOND2 : 목적지 - 런던
- TCOND3 : 목적지 - 시드니
- TCOND4 : 좌석등급 - 퍼스트 클래스
- TCOND5 : 좌석등급 - 비즈니스 클래스
- TCOND6 : 좌석등급 - 이코노미 클래스
- TCOND7 : 좌석위치 - 통로
- TCOND8 : 좌석위치 - 창가
- TD3 : 테스트 커버리지 아이템 도출(All Combination)
- All Combinations Testing
- 입력 값의 모든 조합을 모두 테스트
- All Combinations Testing
테스트 커버리지 아이템 |
입력 값 |
테스트 컨디션 |
||
목적지 |
좌석 등급 |
좌석 위치 |
||
TCOVER1 |
파리 |
퍼스트 클래스 |
통로 |
TCOND1, 4, 7 |
TCOVER2 |
파리 |
퍼스트 클래스 |
창가 |
TCOND1, 4, 8 |
TCOVER3 |
파리 |
비즈니스 클래스 |
통로 |
TCOND1, 5, 7 |
TCOVER4 |
파리 |
비즈니스 클래스 |
창가 |
TCOND1, 5, 8 |
TCOVER5 |
파리 |
이코노미 클래스 |
통로 |
TCOND1, 6, 7 |
TCOVER6 |
파리 |
이코노미 클래스 |
창가 |
TCOND1, 6, 8 |
TCOVER7 |
런던 |
퍼스트 클래스 |
통로 |
TCOND2, 4, 7 |
TCOVER8 |
런던 |
퍼스트 클래스 |
창가 |
TCOND2, 4, 8 |
TCOVER9 |
런던 |
비즈니스 클래스 |
통로 |
TCOND2, 5, 7 |
TCOVER10 |
런던 |
비즈니스 클래스 |
창가 |
TCOND2, 5, 8 |
TCOVER11 |
런던 |
이코노미 클래스 |
통로 |
TCOND2, 6, 7 |
TCOVER12 |
런던 |
이코노미 클래스 |
창가 |
TCOND2, 6, 8 |
TCOVER13 |
시드니 |
퍼스트 클래스 |
통로 |
TCOND3, 4, 7 |
TCOVER14 |
시드니 |
퍼스트 클래스 |
창가 |
TCOND3, 4, 8 |
TCOVER15 |
시드니 |
비즈니스 클래스 |
통로 |
TCOND3, 5, 7 |
TCOVER16 |
시드니 |
비즈니스 클래스 |
창가 |
TCOND3, 5, 8 |
TCOVER17 |
시드니 |
이코노미 클래스 |
통로 |
TCOND3, 6, 7 |
TCOVER18 |
시드니 |
이코노미 클래스 |
창가 |
TCOND3, 6, 8 |
- TD4 : 테스트 케이스 도출(All Combination)
- 모든 테스트 커버리지 아이템을 포함하도록 테스트 케이스 생성
- 커버리지 아이템 = 테스트 케이스
테스트 케이스 |
입력 값 |
테스트 커버리지 아이템 |
||
목적지 |
좌석 등급 |
좌석 위치 |
||
1 |
파리 |
퍼스트 클래스 |
통로 |
TCOVER1 |
2 |
파리 |
퍼스트 클래스 |
창가 |
TCOVER2 |
3 |
파리 |
비즈니스 클래스 |
통로 |
TCOVER3 |
4 |
파리 |
비즈니스 클래스 |
창가 |
TCOVER4 |
5 |
파리 |
이코노미 클래스 |
통로 |
TCOVER5 |
6 |
파리 |
이코노미 클래스 |
창가 |
TCOVER6 |
7 |
런던 |
퍼스트 클래스 |
통로 |
TCOVER7 |
8 |
런던 |
퍼스트 클래스 |
창가 |
TCOVER8 |
9 |
런던 |
비즈니스 클래스 |
통로 |
TCOVER9 |
10 |
런던 |
비즈니스 클래스 |
창가 |
TCOVER10 |
11 |
런던 |
이코노미 클래스 |
통로 |
TCOVER11 |
12 |
런던 |
이코노미 클래스 |
창가 |
TCOVER12 |
13 |
시드니 |
퍼스트 클래스 |
통로 |
TCOVER13 |
14 |
시드니 |
퍼스트 클래스 |
창가 |
TCOVER14 |
15 |
시드니 |
비즈니스 클래스 |
통로 |
TCOVER15 |
16 |
시드니 |
비즈니스 클래스 |
창가 |
TCOVER16 |
17 |
시드니 |
이코노미 클래스 |
통로 |
TCOVER17 |
18 |
시드니 |
이코노미 클래스 |
창가 |
TCOVER18 |
- TD5 : 테스트 셋 구성(All Combination)
- 목적에 따라 구분
- TS1 : 통로 쪽 좌석 테스트 - 1, 3, 5, 7, 9, 11, 13, 15, 17
- TS2 : 창자 쪽 좌석 테스트 - 2, 4, 6, 8, 10, 12, 14, 16, 18
- 목적에 따라 구분
- TD6 : 테스트 프로시저 도출(All Combination)
- TP1 : 통로 쪽 좌석 테스트 - TS1과 동일
- TP2 : 통로 쪽 좌석 테스트 - TS2과 동일
커버리지 = (커버된 입력 값 조합 수 / 전체 입력 값 조합 수) * 100%
- TD3 : 테스트 커버리지 아이템 도출(Pairwise)
- Pairwise Testing
- 두 입력 값의 유일한 조합이 테스트 커버리지 아이템
- Pairwise Testing
테스트 커버리지 아이템 |
입력 값 |
테스트 컨디션 |
TCOVER1 |
파리, 퍼스트 클래스 |
(TCOND1, 4) |
TCOVER2 |
파리, 비즈니스 클래스 |
(TCOND1, 5) |
TCOVER3 |
파리, 이코노미 클래스 |
(TCOND1, 6) |
TCOVER4 |
런던, 퍼스트 클래스 |
(TCOND2, 4) |
TCOVER5 |
런던, 비즈니스 클래스 |
(TCOND2, 5) |
TCOVER6 |
런던, 이코노미 클래스 |
(TCOND2, 6) |
TCOVER7 |
시드니, 퍼스트 클래스 |
(TCOND3, 4) |
TCOVER8 |
시드니, 비즈니스 클래스 |
(TCOND3, 5) |
TCOVER9 |
시드니, 이코노미 클래스 |
(TCOND3, 6) |
TCOVER10 |
파리, 통로 |
(TCOND1, 7) |
TCOVER11 |
파리, 창가 |
(TCOND1, 8) |
TCOVER12 |
런던, 통로 |
(TCOND2, 7) |
TCOVER13 |
런던, 창가 |
(TCOND2, 8) |
TCOVER14 |
시드니, 통로 |
(TCOND3, 7) |
TCOVER15 |
시드니, 창가 |
(TCOND3, 8) |
TCOVER16 |
퍼스트 클래스, 통로 |
(TCOND4, 7) |
TCOVER17 |
퍼스트 클래스, 창가 |
(TCOND4, 8) |
TCOVER18 |
비즈니스 클래스, 통로 |
(TCOND5, 7) |
TCOVER19 |
비즈니스 클래스, 창가 |
(TCOND5, 8) |
TCOVER20 |
이코노미 클래스, 통로 |
(TCOND6, 7) |
TCOVER21 |
이코노미 클래스, 창가 |
(TCOND6, 8) |
- TD4 : 테스트 케이스 도출(Pairwise)
- 모든 테스트 커버리지 아이템을 포함하도록 테스트 케이스 생성
테스트 케이스 |
입력 값 |
테스트 커버리지 아이템 |
||
목적지 |
좌석 등급 |
좌석 위치 |
||
1 |
파리 |
퍼스트클래스 |
창가 |
TCOVER1, 10, 16 |
2 |
파리 |
비니지스클래스 |
통로 |
TCOVER2, 11, 19 |
3 |
파리 |
이코노미클래스 |
창가 |
TCOVER3, 10, 20 |
4 |
런던 |
퍼스트클래스 |
통로 |
TCOVER4, 12, 16 |
5 |
런던 |
비니지스클래스 |
창가 |
TCOVER5, 13, 19 |
6 |
런던 |
이코노미클래스 |
통로 |
TCOVER6, 12, 20 |
7 |
시드니 |
퍼스트클래스 |
창가 |
TCOVER7, 15, 17 |
8 |
시드니 |
비니지스클래스 |
통로 |
TCOVER8, 14, 18 |
9 |
시드니 |
이코노미클래스 |
창가 |
TCOVER9, 15, 21 |
- TD5 : 테스트 셋 구성(Pairwise)
- TS : 1, 2, 3, 4, 5, 6, 7, 8, 9
- TD6 : 테스트 프로시저 도출(Pairwise)
- TP : TS과 동일
커버리지 = (커버 된 입력 쌍 조합 수 / 전체 입력 쌍 조합 수) * 100%
- TD3 : 테스트 커버리지 아이템 도출(Each Choice)
- Each Choice Testing
- 입력 값을 최소 한번 이상 테스트
- Each Choice Testing
테스트 커버리지 아이템 |
입력 값 |
테스트 컨디션 |
|
TCOVER1 |
목적지 |
파리 |
TCOND1 |
TCOVER2 |
목적지 |
런던 |
TCOND2 |
TCOVER3 |
목적지 |
시드니 |
TCOND3 |
TCOVER4 |
좌석등급 |
퍼스트 클래스 |
TCOND4 |
TCOVER5 |
좌석등급 |
비즈니스 클래스 |
TCOND5 |
TCOVER6 |
좌석등급 |
이코노미 클래스 |
TCOND6 |
TCOVER7 |
좌석위치 |
통로 |
TCOND7 |
TCOVER8 |
좌석위치 |
창가 |
TCOND8 |
- TD4 : 테스트 케이스 도출(Each Choice)
- 모든 테스트 커버리지 아이템을 포함하도록 테스트 케이스 생성
테스트 케이스 |
입력 값 |
테스트 커버리지 아이템 |
||
목적지 |
좌석 등급 |
좌석 위치 |
||
1 |
파리 |
퍼스트 클래스 |
통로 |
TCOND1, 4, 7 |
2 |
런던 |
비즈니스 클래스 |
창가 |
TCOND2, 5, 8 |
3 |
시드니 |
이코노미 클래스 |
통로 |
TCOND3, 6, 7 |
- TD5 : 테스트 셋 구성(Each Choice)
- TS : Test Case 1, 2, 3
- TD6 : 테스트 프로시저 도출
- TP : TS와 동일
커버리지 = (커버 된 입력 값 수 / 전체 입력 값 수) * 100%
- TD3 : 테스트 커버리지 아이템 도출(Base Choice)
- Base Choice Testing (빈도수가 가장 높거나 초기 값으로 정의된 입력 조합)
- 기본 입력 값으로만 테스트
- Base Choice Testing (빈도수가 가장 높거나 초기 값으로 정의된 입력 조합)
- TD4 : 테스트 케이스 도출(Base Choice)
- 모든 테스트 커버리지 아이템을 포함하도록 테스트 케이스 생성
테스트 케이스 |
입력 값 |
테스트 커버리지 아이템 |
||
목적지 |
좌석 등급 |
좌석 위치 |
||
1 |
런던 |
이코노미 |
창가 |
TCOVER1 |
2 |
파리 |
이코노미 |
창가 |
TCOVER2 |
3 |
시드니 |
이코노미 |
창가 |
TCOVER3 |
4 |
런던 |
퍼스트 클래스 |
창가 |
TCOVER4 |
5 |
런던 |
비즈니스 클래스 |
창가 |
TCOVER5 |
6 |
런던 |
이코노미 |
통로 |
TCOVER6 |
- TD5 : 테스트 셋 구성(Base Choice)
- TS : Test Case 1, 2, 3, 4, 5, 6
- TD6 : 테스트 프로시저 도출(Base Choice)
- TP : TS와 동일
커버리지 = (커버 된 기본 입력 값 수 / 전체 기본 입력 값 수) * 100%
[조합 테스팅 적용 ]
기능 테스팅 : 옵션의 조합을 선택할 수 있는 메뉴 기반의 어플리케이션 테스트
구성 테스팅 : 서로 다른 하드웨어 및 소프트웨어 구성
호환성 테스팅 : 모든 어플리케이션의 조합이 아닌 공존할 수 있는 어플리케이션의 조합 확인
설치성 테스팅 :설치 옵션 조합 확인
'SW_이론 > SW 테스트 설계 향상 교육' 카테고리의 다른 글
결정테이블 테스팅(Cause-Effect Graph, Decision Table Testing) (0) | 2019.08.16 |
---|---|
상태전이 테스팅(State Transistion Testing) (0) | 2019.08.15 |
Pairwise Testing 도구 (0) | 2019.08.15 |
경계값 분석(Boundary Value Analysis) (3) | 2019.08.14 |
동등 분할(Equivalence Partitioning) (0) | 2019.08.14 |