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을 선택하는 테스트.
-
이 기법은 거의 모든 테스트에서 직관적으로 사용됨.

• 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일때 사용함.


페어-와이즈 테스팅과 수동 테스트 케이스 선택의 장단점을 비교하여 소프트웨어 테스팅의 효율성과 품질을 분석했습니다. 페어-와이즈 테스팅은 효율적인 테스트를 제공하면서도, 결함 유발 조건에서도 상당한 오류 탐지율을 보였습니다. 반면에 수동 테스트 케이스 선택은 특정한 시나리오나 경험에 의존하여 선택된 테스트 케이스들로 제한적인 테스트 범위를 가질 수 있습니다.
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 또는 타스크로 기술한 것으로 기본흐름, 대안흐름에 대해 작성함.
• 이러한 흐름을 테스트 시나리오로 활용하여 테스트를 수행함.
• 기본 흐름 뿐 아니라 대안흐름 및 예외흐름에 대해서도 반드시 테스트가 수행되어야 함.