화제 끓는 냄비에 대한 Property based testing 시도 (4) 끓는/보온 - 상태 천이에 맞게 구현 변경

소개



화제 끓는 냄비에 대한 Property based testing 시도 (3) 끓는/보온 - 상태 천이를 생각한다 에 계속
fast-check을 사용하여 Property based testing을 시도하고 있습니다.
소재로
테스트 설계 콘테스트 U-30 클래스 에서 테스트 기반으로 지정됨
「화제 끓는 포트 요구 사양서(GOMA-1015형) 제7판으로 결정했습니다.
fast-check는 상태를 랜덤 워크 시켜 실패하는 테스트 케이스를 찾는 방법도 구현됨 같기 때문에 슬슬 상태 천이를 생각하면서 이 기능을 시험해 가고 싶다고 생각하고 있는 오늘 요즘입니다만. . .
오늘은 property-based-testing의 화제가 아니라 구현의 수정 중심의 이야기가 됩니다.

준비



여기 에 이번에 구현한 코드를 배치해 보았습니다.
Nodejs 환경이 손에 있다면 시도해 볼 수 있습니다.
git clone https://github.com/freddiefujiwara/goma-1015.git
cd goma-1015
npm i
npm test

_isOpen,connected 등의 상태를 나타내는 것을 enum State로 모두 바꾸기



이전과 같이 앞으로는 상태가 복잡해지므로 제대로 State로 관리하겠습니다.
현재 상태는 off, open/off, idel, open/on의 4 가지 상태가 있으며,
장래 끓는 동안 보온 중이 나오므로 먼저 정의해 둡시다.


export enum State {
  OFF = -1,
  OFF_OPEN,
  ON_IDLE,
  ON_OPEN,
  ON_ACTIVE_BOIL,
  ON_ACTIVE_KEEP,
}

isOpen 또는 this._on으로 판별 된 모든 것을 State를보고 다시 작성하십시오.
diff를 취하면 이런 느낌입니다.

상당히 바꾸고 있는 바람입니다만, 기본은 상태 천이를 제대로 switch문으로 판별해
어려운 상태로 전환하고 있습니다.

테스트를 통해 보기



테스트가 진행될 때까지 열심히 디버깅합시다.


기본 구현을 변경한 것만으로 테스트 코드는 거의 변경하지 않았지만,
이런 리팩토링시에 테스트 코드가 있으면 정말 편리합니다.

마지막으로



다음이야말로 드디어 model-based-testing을 실현시켜 같아요
또한 코드에 실수가 있으면 Pull request은 환영합니다.
길어졌지만 끝까지 읽어 주셔서 감사합니다.

좋은 웹페이지 즐겨찾기