Specification-based Test Design

김명윤·2024년 6월 19일

Test Design

  • Test Basis
    Body of knowledge used as the basis for the design of test cases
    (requirement specification, design specification, source code, etc.)
    테스트 케이스를 설계하는 데 사용되는 지식의 본체를 의미합니다. 이는 요구사항 명세서, 설계 명세서, 소스 코드 등 다양한 문서와 자료를 포함할 수 있습니다.

테스트 설계는 테스트 케이스를 만드는 과정

  • Test cases
    preconditions + inputs + expected results
    특정 테스트 시나리오를 실행하기 위한 구체적인 조건, 입력값, 예상 결과 등을 포함하는 문서

Specification-based Techniques

  • Black box testing, Behavioral testing 라고도 함.
  • 요구사항 및 명세서 기반의 테스트
  • SW의 내부 구조에 대한 지식은 필요 없음.
    • 테스터는 소프트웨어가 해야 하는 일에 집중하며, 그것이 어떻게 작동하는지에는 집중하지 않음.
  • 일반적인 절차
    • 요구사항 또는 명세서 분석
    • Valid/Invalid input 선택
    • Input에 따른 예상결과 정의
    • 테스트 구현 (테스트를 위한 프로그램, 데이터 준비 등)
    • 테스트 수행
    • 예상결과와 실제결과 비교하여 테스트 결과 판정

  • 소프트웨어 개발프로세스의 모든 단계에 적용 가능함.

  • 아무리 테스트를 해도 실제로 코드의 얼마가 테스트되었는지는 알 수 없음.
  • 많은 결함을 찾기 위해 Input의 모든 가능한 조합을 하고자 하겠지만, 완전한 테스팅은 불가함. 따라서 일부의 조합만 테스트 할 수 밖에 없음.
  • But, 기법 적용을 통해 Random하게 생성된 것보다 효과적/효율적인 테스트케이스 도출이 가능함

Specification-based Techniques

Equivalence Partitioning Testing (동등분할 테스팅)
• Boundary Value Analysis Testing (경계값 분석 테스팅)
• Combinatorial Testing (조합 테스팅)
• Decision Table Testing (의사결정테이블 테스팅)
• State-Transition Testing (상태전이 테스팅)
• Use case Testing (유스케이스 테스팅)

Equivalence Partitioning

  • 명세서를 기준으로 여러 가능한 Input에 대해 동일한 결과를 갖는 값들을 하나의 equivalence class (또는 partition)로 구분하고, 각 class별로 input을 선택하는 테스트.

  • 이 기법은 거의 모든 테스트에서 직관적으로 사용됨.

  • Domain 분석을 통해 Valid/Invalid class로 decompose하는 것이 핵심.

    • 유효 클래스: 시스템이 수락하고 올바르게 처리해야 하는 입력 범위 또는 집합.
    • 무효 클래스: 시스템이 거부하거나 오류로 처리해야 하는 입력 범위 또는 집합.
  • 적절한 coverage를 만족하면서 체계적으로 테스트케이스 개수를 줄일 수 있음. (positive test + negative test)

• Equivalence Partitioning Coverage

Boundary Value Analysis

• 결함은 경계값에서 많이 나타난다는 것에 착안한 방법임.
• Min-1, Min, Min+1, Normal, Max-1, Max, Max+1
• Exception handling 확인에 좋음

  • BVA
    • 입력 범위의 경계를 테스트하여 입력 공간의 끝부분에서 발생할 가능성이 있는 오류를 발견하는 데 집중
    • 4n+1 개의 테스트 케이스
  • Robustness Testing
    • 예상치 못한 입력에 대해 시스템이 얼마나 잘 처리하는지 평가
    • 6n+1
  • Worst Case Testing
    • 시스템이 극한 조건에서 어떻게 작동하는지, 예를 들어 극한 입력이나 불리한 환경 조건에서 평가
    • 5^n
  • Robustness Worst Case Testing
    • 극단적이고 예상치 못한 입력을 얼마나 잘 처리하는지 평가
    • 7^n

Combinatorial Testing

• 하나의 결과에 영향을 미치는 여러 Parameter의 조합을 테스트함.
• Interdependent Parameter일때 사용함.


  • Full Combination은 현실적으로 불가한 경우가 대부분임.

  • 일반적으로 가장 많이 쓰이는 것은 pair-wise testing.

    • 2개 요소의 상호작용에 대한 테스트가 결함을 보다 많이 발견한다는 경험에 기반
    • 테스트 대상 아이템의 모든 parameter에 대하여 두 개 parameter의 모든 가능한 값의 조합
    • 그러나, 2-wise(pair-wise)외에도 3-wise, 4-wise, 5-wise 등 다양한 커버리지가 사용됨

페어-와이즈 테스팅과 수동 테스트 케이스 선택의 장단점을 비교하여 소프트웨어 테스팅의 효율성과 품질을 분석했습니다. 페어-와이즈 테스팅은 효율적인 테스트를 제공하면서도, 결함 유발 조건에서도 상당한 오류 탐지율을 보였습니다. 반면에 수동 테스트 케이스 선택은 특정한 시나리오나 경험에 의존하여 선택된 테스트 케이스들로 제한적인 테스트 범위를 가질 수 있습니다.

Pair-wise Testing (using orthogonal array)

Decision Table Testing

  • 시스템이 구현해야 하는 복잡한 비즈니스 규칙을 Condition에 따른 Action Table로 구성하여 테스트케이스 개발

  • 조건(Conditions): 만족해야 하는 입력 또는 조건입니다.
  • 행동(Actions): 조건에 따라 발생해야 하는 출력 또는 행동입니다.
  • 규칙(Rules): 특정 행동을 유도하는 조건의 조합을 정의합니다.

State-Transition Testing

  • State-Transition diagram은 시스템의 행위(Behavior)를 state (node)와 transition (edge)로 표현함. (Finite State Machine (FSM)이라고도 함.)
  • State-Transition diagram을 기반으로 각 state 또는 state를 발생시키는 event, state간의 transition의 수행을 만족하는 테스트를 수행함.
    • 각 state를 최소한 한번 이상 수행하는 테스팅
    • 각 transition을 최소한 한번 이상 수행하는 테스팅
    • Transition의 path를 고려한 테스팅

Use case Testing

사용자(또는 다른 시스템)와 시스템 간의 상호 작용을 설명하는 일련의 단계 또는 시나리오를 기반으로 한 테스트 방법

• Use case는 사용자 (또는 다른 시스템)와 시스템 간의 상호 작용을 일련의 step 또는 타스크로 기술한 것으로 기본흐름, 대안흐름에 대해 작성함.
• 이러한 흐름을 테스트 시나리오로 활용하여 테스트를 수행함.
• 기본 흐름 뿐 아니라 대안흐름 및 예외흐름에 대해서도 반드시 테스트가 수행되어야 함.

profile
김변

0개의 댓글