본문 바로가기

테스트이론/소프트웨어 테스팅

조합적 상호작용 테스팅

조합적 상호작용 테스팅, 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