출처: KOCW 강의, 소프트웨어검증 Chapter 14. Model-Based Testing, 건국대학교 유준범, 2013년
시스템 명세 및 설계에 사용되는 모델은 구조(struture)를 가지는데, 이는 시스템의 대표적인 동작을 선택하는 데 유용한 정보이다. 구조적 테스팅에서 언급된 "커버리지" 개념을 명세 및 설계 모델에 적용하여 실제 동작을 모델에 명시된 동작과 비교하는 테스트 케이스를 고안할 수 있다.
유한 상태 머신에서 테스트 케이스 도출(Deriving Test Cases from Finite State Machines)
어떤 이커머스 웹사이트의 "유지보수" 기능에 대한 비정형적 명세(Informal Specification)가 다음과 같다고 가정하자.
아래와 같이 상응하는 유한 상태 머신(FSM) 모델이 작성되었다고 가정하자.
다음은 위 FSM을 기반으로 생성된 테스트 케이스 예이다.
FSM은 다음 두 가지 용도로 활용될 수 있다.
- 테스트 경로 선택을 안내(모델에 커버리지 기준을 적용)
- 관측된 각 동작이 올바른지 판단하는 테스트 오라클 구축
철저한 테스트스위트 생성을 위해 다음과 같은 상태 전환 커버리지 기준을 적용할 수 있다.
- 상태 커버리지(State coverage): 모델 내 모든 상태는 최소 한 개의 테스트 케이스에 의해 방문되어야 한다.
- 전환 커버리지(Transition coverage): 상태 간 모든 전환은 최소 한 개의 테스트 케이스에 의해 통과되어야 한다(가장 일반적으로 사용되는 기준)
- 단일 상태 경로 커버리지(Single state path coverage): 각 상태에 도달하는 모든 부분 경로(subpath)를 최대 한 번씩 탐색한다.
- 단일 전환 경로 커버리지(Single transition path coverage): 각 전환에 도달하는 모든 부분 경로를 최대 한 번씩 탐색한다.
- 경계 내부 루프 커버리지(Boundary-interior loop coverage): 상태 머신의 각 고유 루프(each distinct loop)는 최소, 중간, 최대 또는 다수의 횟수로 실행되어야 한다.
제어 흐름 그래프 및 데이터 흐름 그래프로부터 테스트 케이스 도출(Deriving Test Cases from Control and Data Flow Graph)
시스템 명세나 모델에 결정(decisions) 구조와 순차(sequential) 논리가 모두 존재할 경우, 프로그램 소스 코드에 커버리지를 적용하는 것처럼 유사한 플로우그래프 기반 테스트를 할 수 있다.
어떤 이커머스 웹사이트의 “배송 주문 처리” 기능에 대한 비정형 명세가 다음과 같다고 가정하자.
상응하는 제어 흐름 그래프(CFG)을 다음과 같이 작성하였다.
아래는 CFG에 커버리지 기준을 적용하여 생성한 테스트케이스 예이다.
노드 적정성 기준(Node adequacy criteria): CFG에서 사각형으로 표현된 모든 노드가 적어도 한 번은 포함되도록 테스트케이스 생성
케이스 | 최소주문 | 배송지 | 운송수단 | 고객타입 | 결제수단 | 동일주소 | 유효카드 |
TC-1 | No | 해외 | 항공 | 비즈니스 | 신용카드 | No | Yes |
TC-2 | No | 국내 | 항공 | 개인 | 신용카드 | - | No(취소) |
브랜치 적정성 기준(Branch adequacy criteria): CFG에서 화살표로 표현된 모든 분기가 적어도 한 번은 포함되도록 테스트케이스 생성
케이스 | 최소주문 | 배송지 | 운송수단 | 고객타입 | 결제수단 | 동일주소 | 유효카드 |
TC-1 | No | 해외 | 항공 | 비즈니스 | 신용카드 | No | Yes |
TC-2 | No | 국내 | 육상 | - | - | - | - |
TC-3 | Yes | - | - | - | - | - | - |
TC-4 | No | 국내 | 항공 | - | - | - | - |
TC-5 | No | 해외 | 육상 | - | - | - | - |
TC-6 | No | - | - | 교육기관 | 청구서 | - | - |
TC-7 | No | - | - | - | 신용카드 | Yes | - |
TC-8 | No | - | - | - | 신용카드 | - | No(취소) |
TC-9 | No | - | - | - | 신용카드 | - | No(미취소) |
요약
- 모델은 추상화에 유용하다. 명세 및 설계 과정에서 모델은 핵심 기능을 강조하고 세부 사항은 생략함으로써 복잡한 아티팩트에 대해 사고하고 소통하는 데 도움을 준다. 모델은 구조를 전달하고 한 번에 한 가지에 집중할 수 있도록 도와준다.
- 모델을 체계적인 테스트에 활용할 수 있다. 일반적인 모델 기반 테스트 기법은 상태 머신(state machines), 결정 구조(decision structures), 흐름 그래프(flow graphs), 문법(grammars)을 기반으로 한다. 하지만 다른 모델에도 동일한 접근방법을 적용할 수 있다.
'개발생명주기단계별 > 분석_분석 V&V' 카테고리의 다른 글
책 발췌 – 정적 테스팅에 관하여 by Everett and McLeod (3) | 2024.01.01 |
---|---|
책 발췌 – CRUD 테스팅 by Lewis (1) | 2023.11.20 |
책 요약 – 서비스 인터워킹 프로토콜의 테스트스위트 설계 샘플 by NAIK (0) | 2022.10.24 |
페이퍼 요약 – UML 시퀀스 다이어그램 기반 테스트케이스 생성 by Rhmann (0) | 2022.07.11 |
페이퍼요약 – 자동차 시스템의 피처 지향 요구사항 확인 by Zhou (0) | 2019.05.13 |