조합적 상호작용 테스팅, Comvinatorial 테스팅이라고 하며 보통 CIT라고 한다.
CIT가 적용되는 예제
비행기 티켓 예약 시스템을 예로 든다
항공사 - 제주
도착지 - 오사카 혹은 도쿄
출발 - 5/20
도착 - 5/27 또는 5/28
전체 조합의 개수 2*2*2로 8가지
이 경우는 조합적인 상태작용을 테스트할 정도로 복잡한 시스템이 아니라고 할 수 있다
하지만 인천공항에 드나드는 모든 항공사를 대상으로 항공사들이 출항하는 모든 도시에 대해 아무런 제약 조건 없이 모든 가능한 입력의 조합을 계산해보고 싶다고 하면 적어도 18억 개에 가까운 조합의 개수가 필요하다. 그러므로 종합적인 폭발이 일어난다
테스팅할 떄 발생하는 문제는 가능한 모든 조합을 모두 테스트하는 것이 너무 비싸다는 점
→ 해결책? T개의 파라미터 사이에 가능한 모든 상호작용은 테스트 되도록 한다. 이렇게 T개의 파라미터 사이에 모든 인터랙션을 포함하는 테스트 방법을 커버링 어레이를 구한다 라고 한다
CIT
CIT Problem은 수학적인 조합론의 문제이다
조건
K개의 파라미터에 대해서 각각의 파라미터가 가질 수 있는 값들이 모두 주어졌을 때
풀이
해당 프로그램에 대해 T만큼의 힘을 가지는 커버링 어레이를 구하되, 그 커버링 어레이의 크기를 최대한으로 줄인다
목표
가장 적은 수의 테스트 입력만을 사용해서 가능한 모든 조합을 실행하는 것
실질적으로 테스팅에서 가장 많이 사용하는 것은 T가 E인 경우, 즉 주어진 파라미터 중에 모든 파라미터 쌍 사이에 가능한 모든 조합을 테스트하는 CIT 문제이다. 자주 사용되기 때문에 페어와이즈 테스팅이라고 불린다. 이것을 많이 사용하는 이유는 파라미터 두 개 사이에 상호작용으로부터 발생하는 오류가 전체 오류의 상당 부분을 차지하기 때문이다.
위의 예제를 다시 보자
비행기 티켓 예약 시스템을 예로 든다
항공사 - 제주
도착지 - 오사카 혹은 도쿄
출발 - 5/20
도착 - 5/27 또는 5/28
Airline | City | Out | Return |
Jeju | Osaka | 20 May | 26 May |
Jeju | Osaka | 20 May | 27 May |
Jeju | Osaka | 21 May | 26 May |
Jeju | Osaka | 21 May | 27 May |
Jeju | Tokyo | 20 May | 26 May |
Jeju | Tokyo | 20 May | 27 May |
Jeju | Tokyo | 21 May | 26 May |
Jeju | Tokyo | 21 May | 27 May |
먼저 항공사와 대상 도시 사이의 인터랙션을 보면 두 가지 옵션이 있다. 따라서 제주와 오사카, 제주와 도쿄 두가지의 인터랙션이 있다
항공사와 나가는 날 사이에는 마찬가지로 제주항공이 고정된 반면 5/20, 5/21 출발의 두 가지 옵션이 있다. 돌아오는 날 사이에도 5/26, 5/27 도착의 두 가지 옵션이 있다.
방문하려고 하는 도시와 출발하는 날짜 사이의 인터랙션을 살펴 보면, 오사카로 가되 20일 출발, 21일 출발 옵션. 도쿄로 가되 26일 도착, 27일 도착
날짜 사이의 인터랙션은, 20일 출발하는 경우 26일 27일 도착. 21일에 출발하는 경우 26,27일 도착.
표로 정리하면
Airline | City | Out | Return |
Jeju | Osaka | 20 May | 27 May |
Jeju | Osaka | 21 May | 26 May |
Jeju | Osaka | 20 May | 26 May |
Jeju | Osaka | 21 May | 27 May |
Jeju | Tokyo | 21 May | 26 May |
Jeju | Tokyo | 20 May | 27 May |
개발한 어플리케이션이 특정 웹브라우저에서 정상작동하는지 알아보기 위해 모든 옵션 사이의 인터랙션을 테스트하기 보단 Pairwise Interaction 환경을 구축하여 테스트하는게 좋다
'테스트이론 > 소프트웨어 테스팅' 카테고리의 다른 글
테스트 적합도 (0) | 2021.04.21 |
---|---|
조합적 상호작용 테스팅과 제약조건 (0) | 2021.03.18 |
등가 파티션 (0) | 2021.03.08 |
블랙박스 테스팅 (0) | 2021.03.08 |
테스트 불가능한 프로그램 (0) | 2021.03.07 |