(번역) 상태 전이(State transition) 테스팅 기법
소프트웨어 시스템이 점점 더 복잡해지면서 시스템의 동작이 신뢰할 수 있으며 예측할 수 있도록 보장하는 것이 더욱 중요해지고 있습니다. 이를 달성하는 한 가지 방법은 상태 전이 테스팅 기법을 사용하는 것입니다. 이는 시스템이 한 상태에서 다른 상태로 이동할 때의 동작을 테스트하도록 설계된 블랙박스 테스팅 기법입니다. 유한한 수의 상태를 정의하고 상태 간 전이 시 시스템의 동작을 포착함으로써 잠재적인 문제를 식별하고 분석할 수 있습니다. 이 글에서는 상태 전이 테스팅이 무엇인지, 상태 전이 테스팅 기법의 이점, 작동 방식, 그리고 소프트웨어 테스팅에서 언제 사용해야 하는지 살펴볼 것입니다. 그리고, 상태 전이 테스팅 예시를 살펴보겠습니다.
상태 전이 테스팅이란?
상태 전이 테스팅은 시스템의 서로 다른 상태 간 전환 시 소프트웨어가 예상대로 작동하는지 확인하기 위한 블랙박스 테스팅 기법입니다. 가장 먼저 소프트웨어가 가질 수 있는 유한한 상태 집합을 식별한 다음 다양한 입력 조건에 따라 소프트웨어가 상태들 사이에서 어떻게 전환되는지 테스트합니다. 이 기법은 자판기, 신호등, 심지어 웹 애플리케이션과 같은 다양한 시스템에 적용할 수 있으며, 이는 해당 동작이 유한 상태 기계로 정의될 수 있는 한 가능합니다.
소프트웨어 테스팅에서 상태 전이 테스팅은 특히 소프트웨어가 복잡한 상태 전이를 처리해야 할 때 소프트웨어의 신뢰성과 견고성을 보장하는 데 도움이 됩니다. 또한 시스템이 한 상태에서 다른 상태로 이동할 때 발생할 수 있는 오류를 감지하는 데 사용될 수 있습니다. 이 접근 방식은 필요한 테스트 케이스 수를 줄이고, 테스팅 시간을 최적화하며, 소프트웨어 품질을 개선하는 데 유용합니다.
상태 전이 테스팅 기법에는 몇 가지가 있습니다.
- 상태 전이 다이어그램: 시스템의 상태와 시스템이 한 상태에서 다른 상태로 전이하게 만드는 이벤트를 그래픽으로 표현합니다.
- 상태 전이 테이블: 시스템의 상태, 상태 전이를 일으키는 이벤트, 그리고 결과적인 동작이나 출력을 표 형식으로 표현합니다.
- 결정 테이블 테스팅: 다양한 시나리오를 테스트하기 쉽게 만들기 위해 표를 사용하여 서로 다른 입력 조합을 해당하는 출력에 매핑하는 기법입니다.
- 원인-결과 그래프: 특정 출력이나 이벤트가 발생하게 할 수 있는 다양한 입력 조합을 식별하고 테스트하는 데 사용되는 기법입니다.
- 스테이트플로우: 상태 기반 시스템을 모델링하고 시뮬레이션하는 데 사용되는 그래픽 도구입니다. 스테이트플로우 다이어그램은 상태 기반 알고리즘과 제어 로직을 개발하고 검증하는 데 사용될 수 있습니다.
테스트 자동화에서 상태 전이 기법이 중요한 이유
테스터들은 애플리케이션의 다양한 상태와 전이에 대한 자동화 테스트를 통해 잠재적인 문제를 조기에 발견하고, 이러한 문제가 소프트웨어 개발 수명주기 후반에 더 큰 이슈로 발전하는 것을 방지할 수 있습니다.
상태 전이 테스트 자동화를 지원하는 다양한 도구가 있으며, 그중 하나가 테스트시그마입니다. 테스트시그마는 웹, 모바일, 데스크톱, API 테스트를 10배 더 빠르게 자동화할 수 있는 노코드 테스트 자동화 도구입니다. 테스트시그마를 사용하면 간단한 영어 문장을 작성하는 것만으로도 테스트 케이스를 쉽게 만들고 관리할 수 있습니다.
다음 섹션에서는 상태 전이 테스팅의 구체적인 수행 방법에 관해 설명하겠습니다.
언제 상태 전이를 사용해야 하나요?
- 테스트 중인 애플리케이션에서 발생하는 일련의 이벤트를 테스트할 때 사용합니다.
- 테스트 중인 애플리케이션이 과거의 이벤트/값에 의존성이 있을 때 사용합니다.
- 소프트웨어 애플리케이션이 유한한 수의 상태/입력값으로 정의될 수 있을 때 사용합니다.
- 사용자 인터페이스를 테스트할 때 사용합니다. 사용자 인터페이스는 입력에 따라 다른 형태를 취할 수 있으며 화면(즉, 상태) 간에 전환될 수 있습니다.
- 웹 애플리케이션을 테스트할 때 사용합니다. 웹 애플리케이션은 로그인/로그아웃, 장바구니 담기, 결제 등과 같은 다양한 상태를 가질 수 있으며, 상태 전이 테스팅은 애플리케이션이 의도한 대로 작동하는지 확인하기 위해 이러한 상태들을 테스트할 수 있습니다.
- 온라인/오프라인 상태, 워크플로우 등을 테스트하기 위해 모바일 애플리케이션을 테스트할 때 사용합니다.
상태 전이를 사용하지 말아야 할 때는 언제인가요?
- 소프트웨어가 유한한 수의 상태로 정의될 수 없을 때는 상태 전이 테스팅 기법이 적용 불가능하거나 효과적이지 않을 수 있습니다. 예를 들어, 게임이나 머신러닝 애플리케이션처럼 지속적으로 변화하는 소프트웨어가 있습니다. 이러한 애플리케이션에서는 유한한 상태 집합을 정의하는 것이 거의 불가능합니다.
- 동일한 기능에 대한 다양한 입력이 아닌, 서로 다른 기능을 테스트해야 할 때입니다. 예를 들어, 워드 프로세서, 스프레드시트, 편집 소프트웨어 등에서는 입력이 하나의 기능에만 영향을 미치는 것이 아니라 여러 기능에 영향을 미칠 수 있습니다. 따라서 이런 경우 상태 전이 테스팅이 복잡해집니다.
- 인공지능(AI)과 머신러닝(ML) 시스템, 네트워크 및 통신 시스템, 복잡한 비즈니스 프로세스와 같이 복잡한 시스템을 테스트할 때는 상태와 전이를 정의하기가 어려울 수 있습니다.
상태 전이 다이어그램의 4가지 구성 요소
상태 전이 다이어그램은 4가지 주요 구성 요소로 이루어집니다.
1. 상태 — 소프트웨어가 가질 수 있는 상태
✔️ 모서리가 둥근 사각형으로 표현됩니다.
✔️ 상태는 시스템의 상황이나 조건을 의미합니다. 상태 전이 다이어그램에서 노드로 표현되며, 각 노드는 시스템의 서로 다른 상태를 나타냅니다.
2. 전이 — 한 상태에서 다른 상태로의 이동
✔️ 화살표로 표현됩니다.
✔️ 전이는 시스템이 이벤트에 응답할 때 발생하는 상태 변화입니다.
3. 이벤트 — 전이를 발생시키는 원인
✔️ 해당 전이 화살표 위에 표시됩니다.
✔️ 이벤트는 시스템의 상태 변화를 촉발하는 동작이나 발생 사항입니다.
4. 액션 — 이벤트로 인한 전이의 결과
✔️ 메시지 상자로 표현될 수 있습니다.
✔️ 액션은 시스템이 상태를 변경할 때 보여주는 동작입니다.
상태 전이 다이어그램과 상태 전이 테이블
상태 전이는 다이어그램이나 테이블, 또는 둘 다로 표현될 수 있습니다. 상태 전이 다이어그램은 박스 텍스트와 화살표로 이루어진 도해입니다. 이는 상태와 전이의 흐름을 시각적으로 표현한 것입니다.
상태 전이 테이블은 모든 상태가 왼쪽에 나열되고 이벤트가 상단에 설명되는 표를 사용하여 상태와 전이를 표현합니다. 이벤트 발생 후 시스템의 상태는 테이블의 나머지 셀로 표현됩니다.
여기서 좀 더 알아보겠습니다.
상태 전이를 만드는 방법(상태 전이 예시)
상태 전이 다이어그램과 상태 전이 테이블을 모두 명확히 이해하고 수행하는 방법을 알기 위해 상태 전이 테스트 예시를 사용해 보겠습니다.
예시
온라인 뱅킹 사이트에 로그인하는 시나리오를 살펴보겠습니다. 먼저 온라인 뱅킹 페이지를 로드한 다음 로그인 페이지로 이동한 다음 인증 정보를 입력하고 로그인을 시도합니다. 그런 경우 인증 정보가 올바르면 접근 권한이 부여되며 올바르지 않으면 다시 시도할 수 있습니다. 3번 연속 실패하면 보안상의 이유로 계정이 차단됩니다.
먼저 이 시스템의 모든 상태를 식별해 보겠습니다.
상태
- 시작 — 온라인 뱅킹 페이지 로드
- 로그인 페이지 로드
- 1차 시도
- 2차 시도
- 3차 시도
이벤트
- 로그인 클릭
- 인증 정보 입력
- 올바른 인증 정보
- 잘못된 인증 정보
액션
- 접근 허용
- 계정 차단
전이
- 홈페이지에서 로그인 페이지로
- 1차 로그인 시도
- 1차 로그인 시도 -> 성공
- 1차 로그인 시도 -> 실패 -> 2차 로그인 시도
- 2차 로그인 시도 -> 성공
- 2차 로그인 시도 -> 실패 -> 3차 로그인 시도
- 3차 로그인 시도 -> 성공
- 3차 로그인 시도 -> 실패
상태 전이 다이어그램
상태 전이 테이블
테스트시그마를 사용한 예시 테스트시그마는 상태 전이 테스팅을 포함한 광범위한 테스팅 기능을 제공하는 지능형 테스트 자동화 플랫폼입니다.
위의 상태 전이 다이어그램을 사용하여 모든 테스트 케이스를 하나씩 수동으로 테스트할 수 있습니다.
테스트 자동화를 통해 이 과정이 훨씬 단순해집니다. 테스트시그마를 사용하면 상태 전이 다이어그램을 생성하고, 테스트 케이스를 만들어 자동화한 다음, 일일이 수동으로 실행할 필요 없이 플랫폼에서 실행할 수 있습니다.
다음 예시는 테스트시그마에서 제공하는 샘플 시스템입니다. 이는 온라인 티켓 예매 시스템과 그 로그인 작업을 나타냅니다. 이 사용 사례와 관련된 상태, 이벤트, 액션이 무엇인지 이해해 보겠습니다.
상태 1: 홈페이지 로드
이벤트 1: “Login” 또는 Sign Up 클릭
상태 2: “Do you want to” 페이지
이벤트 2: 로그인 클릭
상태 3: ‘Login’ 로드
이벤트 3: “Email” 라디오 버튼 선택
이벤트 4: 이메일 진입
이벤트 5: Continue 클릭
상태 4: 로그인 페이지 로딩, enter the password 노출
이벤트 6: Enter the Password
이벤트 7: Submit 클릭
액션: 성공적으로 로그인 시스템 통과
다음은 테스트시그마로 자동화할 수 있는 상태 전이 테스팅 기반의 몇 가지 테스트 케이스 예시입니다.
- 테스트 케이스: 로그인 상태 전이
설명: 웹 애플리케이션에서 사용자의 로그인 기능에 대한 상태 전이를 검증합니다.
테스트 단계
로그인 페이지로 이동
유효한 사용자 이름과 비밀번호 입력
“로그인” 버튼 클릭
기대 결과
- 로그인 인증 정보가 올바른 경우, 사용자는 홈 페이지로 전환되어야 합니다.
- 로그인 인증 정보가 올바르지 않은 경우, 오류 메시지가 표시되어야 합니다.
2. 테스트 케이스: 장바구니 상태 전이
설명: 이커머스 웹사이트에서 장바구니의 상태 전이를 검증합니다.
테스트 단계
장바구니에 상품 추가
상품 수량 업데이트
“결제” 버튼 클릭
기대 결과
- 상품이 성공적으로 추가되면, 장바구니는 추가된 상품을 보여주는 업데이트된 상태로 전환되어야 합니다.
- 수량이 업데이트되면, 장바구니에 업데이트된 수량이 반영되어야 합니다.
- 결제 프로세스가 성공적이면, 사용자는 결제 페이지로 전환되어야 합니다.
3. 테스트 케이스: 주문 상태 전이
설명: 온라인 주문 시스템에서 주문 상태의 올바른 상태 전이를 확인합니다.
테스트 단계
상품 주문하기
주문 상태 확인
주문 취소하기
기대 결과
- 주문을 한 후에는 상태가 “대기 중”에서 “주문 확정”으로 전환되어야 합니다.
- 주문이 취소되면 상태가 “취소됨”으로 전환되어야 합니다.
- 주문이 성공적으로 배송되면 상태가 “배송 완료”로 전환되어야 합니다.
이에 대해 더 자세히 알아보시려면 테스트 케이스 설계 기법에 관한 블로그 글을 참고하시기 바랍니다.
상태 전이 기법의 장점
- 시스템 동작의 시각적 표현을 제공하여 테스터에게 더 나은 이해를 제공합니다.
- 시스템의 모든 조건과 결과가 포착되었는지 쉽게 검증할 수 있습니다.
- 시스템의 상태 전이에서 발생하는 오류를 식별하고 방지하는 데 도움이 됩니다.
- 시스템이 모든 가능한 입력 이벤트를 올바르게 처리할 수 있도록 보장합니다.
- 시스템의 전반적인 품질 향상에 도움이 될 수 있습니다.
상태 전이 기법의 단점
- 모든 시스템에 이 방법을 사용할 수 없습니다. 유한한 수의 상태로 정의될 수 있는 시스템만 이 테스트 방법을 사용할 수 있습니다.
- 대규모이고 복잡한 시스템에서는 모든 가능한 상태를 정의해야 하므로 시간이 많이 소요되어 불편합니다.
- 시스템의 모든 잠재적 오류를 식별하지 못할 수 있습니다.
결론
상태 전이 테스팅은 작고 유한한 시스템에 이상적인 블랙박스 테스팅 기법입니다. 상태 전이는 다이어그램이나 테이블로 표현할 수 있습니다. 상태 전이 테스팅의 4가지 주요 구성 요소는 상태, 이벤트, 액션, 전이입니다. 이 테스팅 기법은 시스템의 동작을 시각화하는 데 도움이 됩니다. 하지만, 이 기법을 항상 사용할 수는 없습니다. 테스트시그마는 상태 전이 테스트를 자동화하는 데 사용할 수 있는 소프트웨어 도구입니다.
자주 묻는 질문
상태 전이의 용도는 무엇인가요?
상태 전이 테스팅은 소프트웨어의 외부 동작을 테스트하는 방법입니다. 시스템이 유한한 수의 상태로 정의될 수 있을 때 유용하며, 시각적 표현을 통해 테스터가 시스템을 이해하는 데 도움이 됩니다.
상태 전이 모델의 4가지 주요 구성 요소는 무엇인가요?
상태 전이 모델의 4가지 주요 구성 요소는 상태, 이벤트, 액션, 전이입니다. 상태는 시스템이 가질 수 있는 다양한 조건이나 동작이며, 전이는 발생할 수 있는 상태 변화이고, 이벤트는 전이를 촉발하는 사건이며, 액션은 시스템이 한 상태에서 다른 상태로 전환될 때 취하는 단계입니다.
상태 전이는 화이트박스 테스팅인가요?
아니요, 그렇지 않습니다. 상태 전이 테스팅은 시스템의 외부 동작을 테스트하는 데 사용되는 블랙박스 테스팅 방법입니다. 상태 전이 테스팅은 시스템의 전체적인 동작을 다루며, 시스템이 어떻게 구현되었는지에 대한 지식이 필요하지 않습니다. 반면 화이트박스 테스팅은 시스템의 내부 기능에 대한 지식이 필요합니다.