유한 상태 머신(Finite State Machines)
- 유한 상태 머신(a finite state machine: FSM)은 한정된 수의 상태들로 이루어져 있는 시스템이며, 입력을 받으면 상태 전이를 통해 출력을 생성한다.
- FSM은 어떤 특정 시점에 한정된 수의 상태들 중 정확하게 하나의 상태에 있게 되는 추상적 기계이며, 순차 논리 회로, 어휘 분석(lexical analysis), 패턴 매칭, 통신 프로토콜 등을 포함한 다양한 영역의 시스템을 모델링하는데 사용되어 왔다.
- FSM이 그래픽하게 표현되거나 또는 표 형식으로 표현될 수도 있으며, ‘유한 상태 오토메이션(복수로는 오토마타)’, ‘유한 오토메이션’, 또는 단순히 ‘상태 머신’으로도 불린다.
- FSM을 아래의 두 가지 타입으로 구분할 수 있음
- 결정적 FSM(deterministic finite state machines): 모든 상태가 각 가능한 입력에 대해 정확하게 하나의 전이를 가진다. 따라서 주어진 입력과 현 상태를 가지고 상태 전이가 예측 가능하다.
- 비결정적 FSM(non-deterministic finite state machines): 주어진 상태에서 어떤 입력이 하나의 전이, 하나 이상의 전이, 또는 전이 없음을 야기할 수 있다(즉, 주어진 현 상태를 가지고 상태 전이를 예측하는 것이 불가능). - 제어 시스템에서 Mealy 머신과 Moore 머신이라는 두 가지 타입의 FSM이 존재한다. Mealy 머신은 현 상태와 입력을 기반으로 출력을 결정하는 반면, Moore 머신은 오로지 현 상태 만을 기반으로 그 출력을 결정함. Mealy 머신이 아래와 같이 5개 터플로 표현됨.
심볼 |
의미 |
S |
상태들의 집합(a finite set of states) |
I |
입력값들의 집합(a finite set of inputs) |
O |
출력값들의 집합(a finite set of outputs) |
d: S ´ I ® S |
전이 함수(the state transfer function) |
l: S ´ I ® O |
출력 함수(the output function) |
상태 기반 모델링
- 시스템의 동작이 아래의 세 개 타입으로 분류될 수 있다.
- 단순 동작(simple behavior): 시스템이 어떤 입력에 대해 항상 똑같은 방식으로 반응함. 시스템의 이력과 상관 없이 정확히 동일하게 반응
- 지속 동작(continuous behavior): 시스템의 현 상태가 그 이력(history)에 의존하지만 하나의 분리된 상태(a separate state)로 식별되는게 불가능함
- 상태 기반 동작(state-based behavior): 시스템의 현 상태가 그 이력에 의존하며 시스템의 다른 상태로부터 분명하게 구별될 수 있음 - 상태 기반 동작(state-based behavior)을 보이는 시스템 애플리케이션을 설계 시 종종 상태 기반 모델링이 이루어지는데, 이 모델이 테스트 설계의 기준으로 활용될 수 있다.
일반적으로 상태 기반 모델이 아래의 5가지 요소로 구성된다.
- 상태(State): 어떤 시점에서 시스템 엔터티의 추상적인 상황. 뭔가 외적인 사건(대개 전이를 촉발시킴)이 발생하기 전까지 지속됨. 특정 상태가 무기한의 시간 동안 지속될 수도 있음
- 전이(Transition): 한 상태에서 다른 상태로 옮겨감
- 이벤트(Event): 전이를 촉발하는 외적인 사건(예, 타이머 이벤트 또는 시스템으로의 입력). 즉시 발생하거나 또는 한정된 시간 후에 발생함
- 가드 조건(Guard condition): 이벤트와 연관된 프레디켓 표현식. 가드 조건이 참(True)으로 판단될 때에만 전이가 일어남
- 액션(Action): 전이 결과로 생기는 시스템의 반응. 즉시 일어나거나 또는 일어나기까지 한정된 시간이 걸림
상태 전이 다이어그램 표기법에 다양한 관례가 존재하지만, 대개 상태는 노드로, 전이는 연결 화살표로, 이벤트는 화살표 상의 레이블로, 조건은 이벤트 레이블 뒤에 꺽쇠 괄호 안에 표현하고, 이벤트에 상응하는 액션도 화살표 상의 레이블로 표기한다. 초기 상태(the initial state)는 점을 가진 화살표로 표시함
[상태 전이 다이어그램 표기 예]
[POS 시스템의 상태 전이 다이어그램 예]
상태 기반 테스팅(State-based testing)
- 상태 전이 테스팅은 시스템(또는 오브젝트)의 동작을 명세하는데 사용된 FSM과 그것의 여러 확장판(예, 상태 전이 테이블, 액티비티 차트, 상태 차트, UML)을 활용한다.
- FSM 모델에 여러 경로 커버리지 기준을 적용하여 유효한 또는 유효하지 않은 상태 전이들이 실행되도록 테스트 케이스를 도출한다.
- 상태 기반 테스트 설계 기법의 목적은 이벤트, 액션, 상태, 그리고 상태 전이들 간의 관계를 검증하는 것이며, 이 기법을 사용함으로써 시스템의 상태 기반 동작이 그 명세를 충족하는지 판단할 수 있다.
테스트 케이스 설계하기
화이트박스 테스팅에서 적용하는 ‘커버리지’와 동일한 개념을 FSM 모델에 적용함으로써 상태 머신을 기반으로 한 테스트 케이스를 설계 및 구현할 수 있다. 여기서 테스트 케이스는 입력 이벤트들의 시퀀스(sequences of input events)를 나타낸다.
예를 들어, ‘상태 커버리지(all-states coverage)’가 목표라면 모든 상태가 테스트에서 적어도 한번은 커버되도록 테스트 케이스 집합을 생성하게 되는데, 아래 그림 예에서는 3개의 테스트 케이스로 이 기준이 충족된다.
[각 상태를 적어도 한번 방문하는 테스트 케이스 셋]
‘전이 커버리지(all-transitions coverage)’가 목표라면 모든 전이가 테스트에서 적어도 한번은 실행되도록 테스트 케이스 셋을 생성하며, 이를 위해서는 상태 커버리지와 동일하거나 또는 더 많은 테스트 케이스가 요구된다. 아래 예에서는 이 기준을 충족시키기 위하여 5개의 테스트 케이스가 생성됨.
[모든 전이를 적어도 한번 실행하는 테스트 케이스 셋]
이 외에도 이벤트 커버리지(all-events coverage), 액션 커버리지(all-actions coverage), n-전이 시퀀스(all n-transition sequences) 같은 기준을 테스트 케이스 설계의 목표로 수립하여 테스트 경로를 도출하고, 해당 경로가 실행되도록 하는 실질적인 입력 값과 예상 결과 값을 생성한다.
결론
- 상태 전이 다이어그램은 상태와 그 관련 전이들을 기술하는 시스템 요구사항을 캡쳐하는 훌룡한 도구이다.
- 상태 전이 다이어그램은 테스트해야 할 상태, 이벤트, 액션, 전이를 식별함으로써 테스터의 테스팅 노력을 가이드하는데 사용될 수 있다.
- 상태 전이 다이어그램은 시스템이 상태를 갖고 있지 않거나 또는 시스템 외부로부터의 실시간 이벤트에 반응할 필요가 없는 경우에는 적용가능하지 않다. 예를 들면, 고용인의 타임 레코드를 읽고, 급여를 계산하고, 공제액을 차감하고, 레코드를 저장하고, 급료를 인쇄하는 프로세스를 반복하는 급여 시스템(a payroll program)에는 부적합하다.
'테스트케이스설계기법별 > 명세 기반' 카테고리의 다른 글
문서요약 - 의사결정표 테스팅 by Hassan (1) | 2020.03.09 |
---|---|
영상자료 - 유한 상태 기계 테스팅 by Udacity (0) | 2020.03.05 |
영상자료 - 분류 트리 방법의 이론과 TESSY 툴 by Hitex (0) | 2020.02.27 |
페이퍼요약정리 – 분류 트리를 이용한 테스트 케이스 설계 by Grochtmann (0) | 2020.02.24 |
문서요약 - 동등 클래스 분할 by Williams (0) | 2020.02.20 |