본문 바로가기
ISTQB 4주 실전

(3주 5일차) 실습! 배달 앱으로 정복하는 상태 전이 테스팅

by QA여행 2025. 9. 5.

 

안녕하세요! QA여행 ( https://qajourney.tistory.com/ ) 입니다.

 

챌린지 17일차, 이론을 실전으로 만드는 즐거운 실습 시간입니다.

어제 우리는 시스템의 '상태' 변화를 따라가며 테스트하는 상태 전이 테스팅에 대해 배웠습니다.

 

오늘은 이 기술을 우리에게 가장 친숙한 서비스, 바로 '배달 앱의 주문 프로세스' 에 적용해 보겠습니다.

'주문 접수'부터 '배달 완료'까지, 눈에 보이지 않는 시스템의 상태가 어떻게 변하는지,

그리고 우리는 그 과정에서 무엇을 테스트해야 하는지 함께 따라가 보시죠.

 

 

 

시나리오 : 배달 앱의 주문 상태 변화를 추적하라!

우리가 테스트할 배달 앱의 주문 상태는 다음과 같이 변화합니다.

[주문 프로세스 명세]

  1. 고객이 주문을 완료하면, 주문은 '주문 대기' 상태가 된다.
  2. 가게에서 주문을 수락하면, '조리 중' 상태로 변경된다.
  3. 가게에서 조리를 마치고 배달을 요청하면, '배달 대기' 상태가 된다.
  4. 라이더가 음식을 픽업하면, '배달 중' 상태로 변경된다.
  5. 라이더가 배달을 완료하면, '배달 완료' 상태가 된다.
  6. 고객은 가게가 주문을 수락하기 전('주문 대기' 상태)에만 '주문 취소' 를 할 수 있다.

자, 이 프로세스를 상태 전이 다이어그램으로 그려볼까요?

 

1. 상태 전이 다이어그램 그리기

먼저 시스템이 가질 수 있는 모든 '상태'를 원으로, 상태를 바꾸는 '이벤트(행동)'를 화살표로 표시해 봅시다.

 

 

[상태]

  • 주문 대기
  • 조리 중
  • 배달 대기
  • 배달 중
  • 배달 완료
  • 주문 취소

[이벤트/행동]

  • 고객이 주문을 완료함
  • 가게가 주문을 수락함
  • 가게가 조리를 완료함
  • 라이더가 음식을 픽업함
  • 라이더가 배달을 완료 처리함
  • 고객이 주문을 취소함

 

2. 다이어그램에서 테스트 케이스 뽑아내기

이제 이 다이어그램을 보면서 테스트 케이스를 만들어 봅시다.

우리는 이 '지도'를 보며 모든 길(화살표)을 한 번씩 지나가 보고, 길이 없는 곳으로는 갈 수 없는지 확인해야 합니다.

유효한 상태 전이 테스트 (Happy Path)

  • TC-STATE-01: '주문 대기' 상태에서 '가게 수락' 이벤트가 발생하면, 주문 상태가 '조리 중'으로 정상 변경되는지 확인한다.
  • TC-STATE-02: '조리 중' 상태에서 '조리 완료' 이벤트가 발생하면, 주문 상태가 '배달 대기'로 정상 변경되는지 확인한다.
  • TC-STATE-03: '배달 대기' 상태에서 '라이더 픽업' 이벤트가 발생하면, 주문 상태가 '배달 중'으로 정상 변경되는지 확인한다.
  • TC-STATE-04: '배달 중' 상태에서 '배달 완료 처리' 이벤트가 발생하면, 주문 상태가 '배달 완료'로 정상 변경되는지 확인한다.
  • TC-STATE-05: '주문 대기' 상태에서 '고객 취소' 이벤트가 발생하면, 주문 상태가 '주문 취소'로 정상 변경되는지 확인한다.

유효하지 않은 상태 전이 테스트 (Negative Path)

이 부분이 중요합니다! 지도에 없는 길로 가려는 시도를 막아야 합니다.

  • TC-STATE-06: '조리 중' 상태에서 고객이 '주문 취소'를 시도했을 때, 주문이 취소되지 않고 "이미 조리가 시작되어 취소할 수 없습니다." 와 같은 에러 메시지가 노출되는지 확인한다. (명세 6번 항목 검증)
  • TC-STATE-07: '배달 완료' 상태의 주문이 다시 '조리 중' 상태로 돌아가는 경우가 있는지 확인한다.
  • TC-STATE-08: '주문 취소' 상태의 주문이 '배달 중' 상태로 변경되는 경우가 있는지 확인한다.

 

마무리하며

어떠셨나요?

복잡하게만 보였던 배달 앱의 주문 프로세스도, 상태 전이 다이어그램으로 그리고 나니 테스트해야 할 포인트들이 훨씬 명확해졌습니다.

이처럼 시스템의 상태가 시간이나 이벤트에 따라 변하는 모든 기능(회원 가입/탈퇴 프로세스, 게시물의 공개/비공개 상태 등)은

상태 전이 테스팅을 적용하기에 아주 좋은 대상입니다.

 

이 기법은 단순히 "버튼이 눌린다"를 넘어,

"올바른 '때'에, 올바른 '일'이 일어나는가?" 를 검증하는,

 

한 차원 높은 수준의 테스트를 가능하게 합니다.

오늘도 실습에 열심히 참여해주신 여러분, 정말 고생 많으셨습니다.

 

내일 18일차에는 3주차를 마무리하는 <회고 및 테스트 케이스 리뷰> 시간을 갖겠습니다.

이번 주에 배운 동등 분할, 경계값 분석, 의사결정 테이블, 상태 전이 테스팅 등 강력한 설계 기법들을 총정리하고,

여러분이 직접 작성한 테스트 케이스를 함께 리뷰해보는 시간을 가질 예정입니다.

 

그럼 편안한 저녁 보내시고 내일 뵙겠습니다!

반응형