4.3.1.4 상태 전이 테스팅
▶ 상태 전이 테스팅 (state trasition)
- 이벤트, 액션, 상태, 가드, 상태전이 사이의 관계를 검증.
- 시스템/SW의 상태 기반 행위가 명세화(글자로 쓰여있던)된 내용과 일치함을 검증.
- 상태기반 시스템의 결함은 상태, 상태전이, 가드, 이벤트 결함 등으로 분류.
- "구현이 잘못된 경우"와 "명세가 잘못된 경우"의 결함으로 구분.
- 모델(명세)상의 결함 -- > 인스펙션, 정적 분석으로 결함 발견.
>> 초기 상태 누락
>> 전이 또는 액션의 누락
>> 가드를 "전이" 대신 상태에 표기
>> 가드의 중복 또는 불일치
- 구현상의 결함 -- > 테스트를 통해 결함 발견
>> 여분/ 누락/ 훼손 상태(extra/ missing/ corrupt state)
>> 액션이 틀리거나 누락됨
>> 스니크 패스(sneak paths), 트랩 도어(trap doors)
- 설계할 때 의도하지 않았으나 발생하여 정상적인 작동에 손상을 주는 경로.
- 상태 다이어그램 표기법
구성요소 | 설명 | 표기법 |
상태 | 하나 또는 그 이상의 이벤트를 기다리는 시스템의 독립적인 모드 | 원으로 표기, 원안에 상태명 표시 |
전이 | 이벤트에 의해 현 상태에서 다른 상태로의 이동 또는 변경 | 화살표 형태의 선(link)으로 표시하며 상태와 상태를 연결함 |
이벤트 | 상태의 전이를 유발하는 요인 | 전이와 같이 표시하며 이벤트 이름을 표시함 (eg.ev 취소 >> 취소 이벤트) |
가드 | 상태 전이 조건 | 이벤트와 함께 표시,'[ ]' 안에 조건이나 값으로 표시 (eg. ev 금액투입 [투입금액 < 가격] ) |
액션 | 상태 전이와 함께 시스템 또는 소프트웨어가 동작하는 행위나 출력 | 이벤트 뒤에 ' / '로 구분 후 표시 (eg. ev 음료 버튼 선택 / 잔액 반환() ) |
- 상태: [대기], [금액 투입], [음료 선택]
- [대기] 이벤트 : ev 금액투입[투입금액 < 가격], ev 금액투입[투입금액 >= 가격]
- [금액 투입] 이벤트 : ev 취소, ev 금액투입[투입금액 >= 가격], ev 금액투입[투입금액 < 가격]
- [음료 선택] 이벤트 : ev 취소, ev 음료버튼 선택
▶ 상태전이 테스트 케이스 절차
- 상태-이벤트 테이블 구성
- 전이 트리 구성
- 반응(Legal, 또는 유효(Valid)) 테스트 케이스 구성
- 무반응(Illegal, 또는 비유효(Invalid)) 테스트 케이스 구성
- 가드(Guard) 또는 조건 테스트 케이스 구성
- 테스트 프로시저(Test procedure) 구성
자판기로 상태전이 테스트 케이스를 알아보자.
1. 상태-이벤트 테이블
이벤트 | 상태 | 대기 | 금액 투입 | 음료 선택 |
ev 금액투입 [투입금액 >= 가격] | 음료 선택 | 음료 선택 | ||
ev 금액투입 [투입금액 < 가격] | 금액 투입 | 금액 투입 | ||
ev 음료버튼 선택 | 대기 | |||
ev 취소 | 대기 | 대기 |
* 동일한 이벤트지만 가드가 다르면, 서로 다른 이벤트로 구분해 상태-이벤트 테이블을 작성한다.
2. 전이 트리 구성
3. 반응(유효) 테스트 케이스
Valid TC | 시작 상태 | 이벤트 | 액션 | 다음상태 | 이벤트 | 액션 | 종료상태 |
V001 | 대기 | ev 금액 투입 [투입금액 >= 가격] *투입금액 :1000 |
- 라이트 셋 |
음료선택 | ev음료 선택 | 캔 방출, 잔액 반환(300), 잔량 업데이트(9), 라이트 리셋 | 대기 |
V002 | 대기 | ev금액 투입 [투입금액 >=가격] *투입금액:1000 |
- 라이트 셋 |
음료선택 | ev 취소 | 투입금액반환(1000), 라이트리셋 | 대기 |
V003 | 대기 | ev 금액 투입 [투입금액 < 가격] *투입금액 : 500 |
- | 금액투입 | ev금액 투입 [투입금액 >= 가격] * 투입금액:500 |
라이트 셋 | 음료 선택 |
V004 | 대기 | ev 금액 투입 [투입금액 < 가격] *투입금액 : 500 |
- | 금액투입 | ev금액 투입 [투입금액 < 가격] *투입금액:100 |
금액 투입 | |
... | ... | ... | ... | ... | ... | ... | ... |
... | ... | ... | ... | ... | ... | ... | ... |
V015 | 금액투입 | ev 취소 | 투입금액 반환 | 대기 | ev 금액 투입 [투입금액 >= 가격] *투입금액 : 5000 |
- | 음료 선택 |
V016 | 금액 투입 | ev 취소 | 투입금액 반환 | 대기 | ev 금액 투입 [투입금액 < 가격] *투입금액:100 |
- | 금액 투입 |
* 음료가격 700원으로 가정
4. 무반응(비유효) 테스트 케이스
ID | 사전 조건 | 상태 | 이벤트 | 기대결과 |
IV001 | V001 | 대기 | ev 음료 버튼 선택 | - |
IV002 | V001 | 대기 | ev 취소 | - |
IV003 | V004 | 금액 투입 | ev 음료 버튼 선택 | - |
IV004 | V003...V015 | 음료 선택 | ev 금액투입[투입금액 >= 가격] *투입금액 :1000 |
- |
IV005 | V003...V015 | 음료 선택 | ev 금액투입[투입금액 < 가격] *투입금액 : 100 |
- |
불가능한 상황들을 만들어서 테스트를 해보는 것.
5. 가드 테스트 케이스
ID | 사전 조건 | 상태 | 이벤트 | 조건[가드] | 기대결과 |
G001 | V004 | 대기 | ev 금액투입 * 투입금액: 100원 |
투입금액 = 음료가격 (투입금액= 700원) |
음료 선택 |
G002 | G001 | 음료 선택 | ev 금액투입 * 투입금액:100원 |
투입금액 >= 음료가격 (투입금액= 800원) |
음료 선택 |
* 음료가격 700원으로 가정 / 조건에 따라 기대결과가 달라짐.
6. 테스트 프로시저 구성 ( *가능한 겹치지 않으면서 내가 할 수 있는 모든 테스트 케이스를 만들어야 돼. )
- TP1 = V001 -> IV001 -> IV002 -> V002 -> V003 -> V006 -> V007 -> V010
- TP2 = V004 -> IV003 -> V011 -> V005
- TP3 = V008 -> V009 -> V013 -> V016 -> V012
- TP4 = V014 -> V004 -> G001 -> G002
- TP5 = V015 -> IV004 -> IV005
'ISTQB > ISTQB_SW테스팅' 카테고리의 다른 글
ISTQB/ SW 테스팅 ) 4장. 경험 기반 기법, 명세 기반 기법 - 분류 트리 기법에 대해 알아보자. (0) | 2024.03.21 |
---|---|
ISTQB/ SW 테스팅 ) 4장. 명세 기반 테스팅 - 유즈케이스 테스팅 , 구조 기반 기법 (0) | 2024.03.20 |
ISTQB/ SW 테스팅 ) 4장. 테스트 설계 및 구현 프로세스, 테스트 설계 기법의 종류, 명세 기반 기법 - 동등 분할, 경계값 분석, 결 (0) | 2024.03.18 |
ISTQB/ SW 테스팅 ) 3장 - 정적 기법 (0) | 2024.03.15 |
ISTQB/ SW 테스팅 ) 2장. 소프트웨어 생명주기와 테스팅 (0) | 2024.03.13 |