[시리즈 미리보기]
① TestCase-Design 살펴보기 & Data Combination 기능 ◀
② Data Relation & Data Class 기능

Tosca를 똑똑하게 사용하는 방법
자동화 테스트케이스나 매뉴얼 테스트케이스를 만들다 보면 데이터가 점점 많아지고, 데이터 관리도 그에 따라 점점 복잡해집니다. 데이터의 활용은 테스트의 품질과도 직결되는 부분이기 때문에 QA라면 데이터를 어떻게 관리하고 활용할지 계획하는 것은 필수입니다. Tricentis Tosca에서 제공하는 TestCase-Design기능은 데이터를 테이블 형식으로 한 곳에서 관리하여 QA들이 Data-Driven 관점에서 테스트 플랜을 더 효율적이고 간편하게 설계할 수 있도록 도와줍니다. 이 글에서는 TestCase-Design기능이 어떻게 효율적인 테스트 설계를 가능하게 하는지 소개하겠습니다.

0. TestCase-Design 살펴보기 👀
TestCase-Design은 엑셀 또는 DB에 테스트 데이터를 정리하는 것과 같이 테이블 형태(TestSheet)로 데이터를 저장합니다. TestSheet는 개념적 구조인 Logical Attribute와 입력 데이터로 구성된 Physical Attribute로 이루어져 있습니다. 엑셀 또는 DB 사용과 비교했을 때 데이터를 별도로 관리할 필요가 없이 Tosca 내에서 데이터를 관리하며, 개발된 자동화 테스트케이스 템플릿에 바로 적용 가능하다는 이점이 있습니다. 또한 데이터베이스에 대한 쿼리를 몰라도 데이터를 추가, 삭제 그리고 수정할 수 있습니다.

그림1. TestCaseDesign에 정의된 데이터

그림2. TestCase-Design의 데이터를 템플릿에 연결
이러한 이점을 바탕으로 TestCase-Design은 데이터 중심 테스트(Data-Driven Testing)를 더 효율적으로 할 수 있도록 도와줍니다. 다음으로는 TestCase-Design이 제공하는 핵심 기능을 살펴보겠습니다.
TestCase-Design의 핵심 기능 3가지
1. Data Combination (데이터 조합)
TestCaseDesign에서는 다양한 속성의 입력 데이터들을 서로 조합할 수 있는 기능을 제공합니다. 각각의 조합된 데이터 세트는 서로 격리된 하나의 테스트케이스로 바로 생성이 가능하기 때문에 데이터만 잘 정리해두면 한 번에 수많은 테스트케이스를 생성할 수 있습니다. 그렇다면 Tosca가 기본으로 제공하는 4가지 조합방식은 무엇이 있는지 소개해드리겠습니다.
1) All Combinations
TestSheet에 정의된 데이터의 모든 가능한 조합을 생성합니다. 모든 경우의 수를 테스트하기 때문에 커버리지를 최대한으로 가져갈 수 있다는 장점이 있지만, 테스트 시간이 오래 걸리기 때문에 효율성이 감소할 수 있습니다.
Attribute |
성별 |
나이 |
취미 |
Instance |
남성, 여성, 중성 |
10대, 20대, 30대 |
골프, 테니스, 수영 |
[예시]
모든 경우의 수(모든 Instance 수)를 조합해야 하기 때문에 (남성, 10대, 골프), (남성, 20대, 골프), (남성, 30대, 골프), (남성, 10대, 테니스) 등등 위의 예시에서 3^3 = 27개의 테스트 케이스가 산출됩니다.

그림3. All Combination
2) Orthogonal
Orthogonal 조합은 각각의 입력 데이터들이 조합에 한 번씩만 사용되기 때문에 다른 방식들에 비해 가장 적은 수의 테스트 조합을 생성합니다. 입력 테스트 값이 방대하다면 테스트 시간 단축을 위해 고려할 수 있는 방식입니다.
Attribute |
성별 |
나이 |
취미 |
Instance |
남성, 여성, 중성 |
10대, 20대, 30대 |
골프, 테니스, 수영 |
[예시]
(남성, 10대, 골프), (여성, 20대, 테니스), (중성, 30대, 수영)와 같이 첫 번째 Instance는 첫 번째끼리 두 번째는 두 번째끼리 한 번만 조합이 됩니다. Instance 수만큼 3개의 테스트 케이스가 생성됩니다.

그림4. Orthogonal
3) Pairwise
Pairwise조합은 대부분의 결함이 두 개 요소의 상호작용에 의해 야기된다는 관찰에 기반하는 테스트 방식입니다. 모든 값의 쌍을 한 번 이상 테스트하여 최대한 커버리지를 늘리면서도 조합 수가 많지 않아 효율적이라는 장점이 있습니다. 이 때문에 테스트에서 가장 많이 사용하는 조합이기도 합니다.
Attribute |
성별 |
나이 |
취미 |
Instance |
남성, 여성, 중성 |
10대, 20대, 30대 |
골프, 테니스, 수영 |
[예시]
일단, 3가지 Attribute에서 두 개의 쌍을 먼저 매칭합니다. 그럼 경우의 수는 (성별, 나이) (나이, 취미) (성별, 취미) 이렇게 조합이 될 수 있습니다. 각각의 조합은 9가지이므로 3^3 = 27개의 경우의 수가 나오지만 Pairwise기법은 모든 요소를 최소한으로 조합하면서도 모든 요소가 한 번씩은 조합에 포함이 되는 것이 핵심입니다.
(남성, 10대)
(여성, 20대)
(중성, 30대)
(남성, 골프)
(여성, 테니스)
(중성, 수영)
(10대, 골프)
(20대, 테니스)
(30대, 수영)
(여성, 30대) ← 여기서 남성, 30대가 아니라 여성, 30대가 올 수도 있음!
이렇게 조합을 하면 10개의 테스트 케이스가 생성이 되고 적어도 모든 요소가 한 번씩은 조합이 되기 때문에 최소한의 조합으로 빠른 테스트를 할 수 있습니다. 조합에 대한 구성은 알고리즘에 따라 다를 수 있습니다.

그림5. Pairwise
4) Linear expansion
Linear expansion 조합은 가장 빈번하게 사용되는 조합으로 제대로 동작하지 않을 시 시스템 위험도가 높은 메인 기능 위주의 테스트 방식입니다.
Attribute |
성별 |
나이 |
취미 |
Instance |
남성, 여성, 중성 |
10대, 20대, 30대 |
골프, 테니스, 수영 |
[예시]
주어진 예시에서 (남성, 10대, 골프)가 가장 중요한 필수 입력 데이터라고 가정하겠습니다. 그렇다면 (남성, 10대, 골프)는 반드시 조합이 되어야 합니다. 나머지 조합은 아래와 같이 (필수 데이터 + 필수 데이터 + 필수가 아닌 데이터)로 조합하면 됩니다.
(남성, 10대, 테니스)
(남성, 10대, 수영)
(여성, 10대, 골프)
(중성, 10대, 골프)
(남성, 20대, 골프)
(남성, 30대, 골프)
그럼 총 7개의 테스트 케이스가 생성됩니다.

그림6. Linear expansion
주의할 점은 어느 하나의 조합 방식이 뛰어나게 좋다고는 말할 수 없다는 것입니다. 환경에 따라 최적의 테스트 조합 방식은 다를 수 있기 때문에 전체적인 시스템과 요구 사항에 대한 분석이 중요합니다.
