기출 Pairwise Testing

agnusdei·2025년 6월 21일

Software Engineering

목록 보기
28/59

Pairwise Testing (페어와이즈 테스팅)

문제

Pairwise Testing(페어와이즈 테스팅)에 대해 설명하시오.

답변

1. 개념

Pairwise Testing(페어와이즈 테스팅)은 소프트웨어 테스트 기법 중 하나로, 모든 가능한 입력 조건의 조합을 테스트하는 대신 모든 가능한 입력 매개변수의 쌍(pair)이 최소한 한 번 이상 테스트되도록 테스트 케이스를 설계하는 방법입니다. 다른 말로는 All-pairs Testing, Orthogonal Array Testing, 또는 2-way Testing이라고도 불립니다. 이 기법은 완전한 조합 테스트(Exhaustive Combinatorial Testing)의 효율적 대안으로, 테스트 케이스의 수를 크게 줄이면서도 높은 결함 검출률을 유지할 수 있습니다.

2. 역할 및 목적

Pairwise Testing의 주요 역할과 목적은 다음과 같습니다:

  1. 테스트 케이스 수 최적화: 모든 가능한 조합을 테스트하는 것은 현실적으로 불가능한 경우가 많습니다. Pairwise Testing은 테스트 케이스의 수를 효과적으로 줄이면서도 충분한 테스트 커버리지를 제공합니다.

  2. 결함 발견 효율성 향상: 소프트웨어 결함의 대부분은 단일 매개변수 또는 두 매개변수 간의 상호작용에서 발생한다는 경험적 연구 결과에 기반합니다. 따라서 모든 가능한 매개변수 쌍을 테스트함으로써 많은 결함을 효율적으로 발견할 수 있습니다.

  3. 테스트 리소스 절약: 시간, 인력, 비용 등의 테스트 리소스를 효율적으로 활용할 수 있게 합니다.

3. 구조 및 원리

Pairwise Testing의 기본 원리는 다음과 같습니다:

  1. 쌍 중심 접근법: 모든 테스트 매개변수의 가능한 모든 값 쌍이 최소 한 번 이상 테스트되도록 보장합니다.

  2. 직교 배열(Orthogonal Array) 활용: 수학적인 직교 배열 개념을 활용하여 효율적인 테스트 케이스를 생성합니다.

  3. 조합적 접근: 전체 테스트 공간에서 가장 효과적인 테스트 케이스 집합을 선택하는 조합적 알고리즘을 사용합니다.

4. 구성 요소

Pairwise Testing 구현을 위한 주요 구성 요소는 다음과 같습니다:

  1. 매개변수(Parameter): 테스트 대상 시스템의 입력 변수를 의미합니다.

  2. 값(Value): 각 매개변수가 가질 수 있는 가능한 값들입니다.

  3. 테스트 케이스: 각 매개변수에 대한 특정 값의 조합으로, 실제 테스트 실행 단위입니다.

  4. 페어와이즈 테스트 셋: 모든 매개변수 쌍의 모든 값 조합을 최소한 한 번씩 포함하는 테스트 케이스의 집합입니다.

  5. Pairwise 테스트 생성 도구: PICT(Microsoft), ACTS(NIST), AllPairs, Jenny 등과 같은 도구를 사용하여 자동으로 Pairwise 테스트 케이스를 생성합니다.

5. Pairwise Testing 수행 과정

Pairwise Testing을 수행하는 일반적인 과정은 다음과 같습니다:

  1. 매개변수 식별: 테스트할 시스템의 입력 매개변수를 식별합니다.

  2. 매개변수 값 정의: 각 매개변수에 대해 가능한 값을 정의합니다.

  3. 제약 조건 정의: 현실에서 불가능하거나 유효하지 않은 매개변수 조합을 제외합니다.

  4. 페어와이즈 테스트 케이스 생성: 도구를 사용하여 모든 매개변수 쌍의 조합을 커버하는 최소한의 테스트 케이스 집합을 생성합니다.

  5. 테스트 실행 및 결과 분석: 생성된 테스트 케이스를 실행하고 결과를 분석합니다.

6. 종류

Pairwise Testing은 다음과 같은 유형으로 확장될 수 있습니다:

  1. N-way Testing: 2개(Pairwise)가 아닌 N개의 매개변수 조합을 커버하는 테스트입니다.

    • 2-way Testing: 전통적인 Pairwise Testing (모든 매개변수 쌍)
    • 3-way Testing: 모든 가능한 매개변수 3개 조합을 커버
    • 4-way Testing 이상: 더 높은 수준의 상호작용을 테스트
  2. Variable-strength Testing: 일부 매개변수 그룹에 대해서는 더 높은 강도의 조합 테스트(예: 3-way, 4-way)를, 나머지에 대해서는 더 낮은 강도의 테스트를 적용합니다.

  3. Constrained Pairwise Testing: 특정 매개변수 조합에 제약 조건을 적용하여 불가능하거나 의미 없는 조합을 제외합니다.

7. 핵심 용어 정리

  • All-pairs Testing: Pairwise Testing의 다른 이름으로, 모든 가능한 매개변수 쌍의 조합을 테스트합니다.

  • Orthogonal Array Testing: 직교 배열을 사용하여 Pairwise Testing을 구현하는 방법입니다.

  • Combinatorial Testing(조합 테스트): 여러 입력 매개변수의 다양한 조합을 테스트하는 기법의 총칭으로, Pairwise Testing은 그 중 하나입니다.

  • OATS(Orthogonal Array Test Strategy): 직교 배열을 활용한 테스트 전략입니다.

  • IPO(In-Parameter-Order) 알고리즘: Pairwise 테스트 케이스를 생성하는 데 사용되는 대표적인 알고리즘입니다.

  • Coverage(커버리지): 테스트 케이스가 가능한 입력 조합 중 어느 정도를 커버하는지를 나타내는 지표입니다.

8. 특징

  1. 효율성: 전체 조합 테스트에 비해 테스트 케이스 수가 크게 감소합니다.

  2. 효과성: 실제 소프트웨어 결함의 50-90%가 단일 매개변수나 두 매개변수 간 상호작용에서 발생한다는 연구가 있습니다.

  3. 확장성: 2-way에서 3-way, 4-way 등으로 확장이 가능하여 테스트 강도를 조절할 수 있습니다.

  4. 도구 지원: 다양한 자동화 도구가 존재하여 복잡한 계산 없이도 테스트 케이스 생성이 가능합니다.

  5. 수학적 기반: 직교 배열, 조합 이론 등 견고한 수학적 기반을 갖추고 있습니다.

9. Pairwise Testing과 다른 테스트 기법 비교

테스트 기법특징테스트 케이스 수결함 발견 효율성
Exhaustive Testing(완전 테스트)모든 가능한 조합을 테스트매우 많음매우 높음(100%)
Pairwise Testing모든 가능한 매개변수 쌍 조합을 테스트중간높음(대부분의 결함 발견)
Random Testing무작위로 선택된 조합을 테스트사용자 정의낮음-중간
Boundary Value Analysis경계값에 초점적음특정 유형의 결함에 효과적
3-way, 4-way Testing3개 또는 4개 매개변수 조합을 테스트Pairwise보다 많음Pairwise보다 높음

10. 장점과 단점

장점:

  1. 테스트 케이스 수 감소: 완전한 조합 테스트 대비 테스트 케이스 수를 크게 줄입니다.
  2. 높은 결함 검출률: 대부분의 소프트웨어 결함이 2개 이하의 매개변수 상호작용에서 발생한다는 점에서 효과적입니다.
  3. 체계적인 접근: 무작위 테스트보다 체계적이고 수학적으로 검증된 접근 방식입니다.
  4. 자동화 용이성: 다양한 도구를 통해 자동으로 테스트 케이스를 생성할 수 있습니다.
  5. 리소스 절약: 시간, 비용, 인력 등의 테스트 리소스를 효율적으로 사용할 수 있습니다.

단점:

  1. 높은 차수 결함 누락 가능성: 3개 이상의 매개변수 조합에서 발생하는 결함은 검출하지 못할 수 있습니다.
  2. 도메인 지식 요구: 효과적인 매개변수와 값 선택을 위해서는 시스템에 대한 도메인 지식이 필요합니다.
  3. 제약 조건 처리의 복잡성: 매개변수 간 제약 조건이 있는 경우 테스트 케이스 생성이 복잡해질 수 있습니다.
  4. 컨텍스트 의존성 고려 부족: 특정 시퀀스나 상태에 의존하는 결함을 발견하기 어려울 수 있습니다.
  5. 완전한 테스트가 아님: 모든 가능한 조합을 테스트하지 않기 때문에, 일부 결함은 발견되지 않을 수 있습니다.

11. 실무 적용 예시

웹 애플리케이션 로그인 기능 테스트의 예:

매개변수와 값:

  • 브라우저 종류: Chrome, Firefox, Safari, Edge
  • OS: Windows, macOS, Linux
  • 사용자 계정 유형: 관리자, 일반 사용자, 게스트
  • 입력 방법: 키보드, 자동 완성, 복사-붙여넣기
  • 네트워크 상태: 안정적, 불안정, 매우 느림

완전 조합 테스트 케이스 수: 4 × 3 × 3 × 3 × 3 = 324개

Pairwise Testing 테스트 케이스 수: 약 15-20개 (도구 사용 시)

이 예시에서, Pairwise Testing은 324개의 테스트 케이스 대신 약 20개의 테스트 케이스만으로도 모든 매개변수 쌍의 조합을 커버할 수 있습니다.

12. 어린이 버전 요약

Pairwise Testing은 마치 아이스크림 가게에서 모든 맛과 토핑의 조합을 다 먹어보는 대신, 각 맛과 각 토핑을 최소한 한 번씩은 조합해서 먹어보는 것과 같아요. 예를 들어, 바닐라, 초콜릿, 딸기 맛 아이스크림과 견과류, 초콜릿 칩, 과일 토핑이 있다면, 모든 조합은 9가지지만 Pairwise Testing은 3-4개의 조합만으로 각 맛과 각 토핑이 최소한 한 번씩은 만나도록 할 수 있어요. 이렇게 하면 시간과 비용을 아끼면서도 맛의 조합에서 발생할 수 있는 대부분의 문제점을 발견할 수 있답니다!

13. 결론

Pairwise Testing은 소프트웨어 테스트의 효율성과 효과성을 크게 향상시키는 강력한 기법입니다. 특히 테스트 리소스가 제한되어 있고 입력 매개변수의 수가 많은 경우에 유용합니다. 모든 결함을 발견할 수는 없지만, 최소한의 테스트 케이스로 최대한의 결함을 발견하는 데 뛰어난 성능을 보입니다. 실무에서는 Pairwise Testing과 다른 테스트 기법을 상호 보완적으로 사용하여 소프트웨어 품질을 효과적으로 보장할 수 있습니다.

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글