상태전이테스트

개념
- 테스트 대상 시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 테스트 케이스로 구성하는 테스트 설계기법 - 주어진 명세(일반적으로 모델의 형태)를 바탕으로 테스트 케이스(Test Case)를 도출하는 명세기반 테스트 설계기법의 한 종류

I. 시스템 상태 및 그 변화에 따른 측면을 고려한 상태전이 테스팅의 개요

가. 상태전이 테스팅(State Transition Testing)의 정의

- 테스트 대상 시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 테스트 케이스로 구성하는 테스트 설계기법

- 주어진 명세(일반적으로 모델의 형태)를 바탕으로 테스트 케이스(Test Case)를 도출하는 명세기반 테스트 설계기법의 한 종류

나. 상태전이 테스팅을 통한 테스트 설계 방식

- 전형적인 상태의 순서를 커버하는 방식

- 모든 상태를 커버하는 방식

- 모든 상태 전이를 실행하는 방식

- 특정한 상태 전이 순서를 실행하는 방식

- 불가능한 상태 전이를 테스트하는 방식

 

II. 상태다이어그램 표기법 및 상태전이 테스팅 단계

가. 상태다이어그램 표기법

 

구분

설 명

표기법

상태

  • 하나 또는 그 이상의 이벤트를 기다리는 시스템의 모드
  • 원으로 표기, 원 안에 상태명 표기

전이

  • 이벤트에 의해 한가지 상태에서 다른 상태로의 변경
  • 화살표 형태의 링크로 표시하며 상태와 상태를 연결함
 

이벤트

  • 상태의 전이를 유발하는 요인
  • 화살표에 이름과 값으로 표시

가드

  • 이벤트가 발생하는 조건
  • 이벤트 오른편의 [ ]안에 조건이나 값으로 표시

액션

  • 상태의 전이에 따라서 유발되는 동작
  • 화살표에 이름과 값으로 표시

 

나. 상태전이 테스팅 설계 프로세스

단 계

설 명

상태-이벤트 테이블 구성

  • 주어진 상태다이어그램의 모든 상태와 이벤트를 테이블로 구성하여 표현
  • 이벤트에 의해 상태가 다른 상태로 전이되는 모든 경우를 표현

전이 트리 구성

  • 상태가 전이되는 경로를 찾아 테스트 케이스를 구성하기 위해 상태-이벤트 테이블을 트리 형태로 전환
  • 상태-이벤트 테이블에서 상태가 이벤트에 의해 전이되는 모든 내용을 포함

반응(유효) Test Case 구성(0-switch)

  • 전이 트리상태에서 나타난 모든 경로 중 이벤트에 의해 동작하는(반응을 보이는) 액션에 대한 테스트 케이스 구성

무반응(비유효) Test Case 구성

  • 어느 상태에서 특정 이벤트가 발생했을 때 아무런 반응을 보이지 않는 경우에 대한 테스트 케이스 구성

가드 또는 조건 Test Case 구성

  • 이벤트가 조건을 포함하고 해당 조건에 따라 기대결과가 달라지는 경우를 반영한 테스트 케이스의 구성

테스트 프로시저 구성

  • 테스트의 실행순서를 나타낸 것으로, 테스트 케이스를 순차적으로 나열한 것
  • 테스트 케이스 실행의 효율성을 높여 신속하게 테스트를 수행하고자 하는 경우, 테스트 프로시저 명세를 작성하는 것이 필요함

 

 

 

다. 상태전이 테스팅 설계 프로세스 예시

 

  • 예시

가. 상태전이 다이어그램

- 음료자판기 시스템의 상태전이 다이어그램

 

나. 상태-이벤트 테이블

상태

이벤트

대기

금액투입

음료선택

ev 금액투입[투입금액>=가격]

음료 선택

음료 선택

 

ev 금액투입[투입금액<가격]

금액 투입

금액 투입

 

Ev 음료버튼 선택

 

 

대기

Ev 취소

 

대기

대기

 

 

  • 참고

) 자판기를 시험한다고 가정할 때 테스터에게 500원과 다른 가격의 메뉴가 3개 있다고 가정(100원,200원,300원)

답변) 자판기 500원 대기모드(상태) – 테스터 500원 투입 (결정테이블) – 사용자 선택 중 (상태) – 사용자 선택 100원짜리 (결정테이블) – 자판기 100원짜리 음료 보냄(상태전이) – 100원짜리 음료 다 떨어졌다. (상태전이)

상태전이) 돈을 넣는다.

  1. è 금액이 표시된다 è 반환을 누른다 è 돈이 나온다.
  2. è 금액이 표시된다 è 음료가 나온다 è 잔액이 표시된다 è 반환을 누른다 è 돈이 나온다

  처음과 끝은 같은데 중간의 내용은 다르게 반복 또는 분기

댓글