정책, 전략, 가이드(410) - 테스트 설계 명세 가이드 : 상태 전이 테스팅(4) #7
표준 테스트 설계 명세 가이드에 대해서 알아보도록 하겠습니다.
많은 설계 기법을 다루어야 하기 때문에 8 파트로 나누어서 작성을 하도록 하겠습니다.
정책/전략/가이드의 문서 번호는 410번이며, 이 전 글을 참고하시기 바랍니다.
개정 이력
{고객사명} | SW 정책/전략/가이드 | 작성자 | ||
테스트 설계 명세 가이드 (상태전이 테스팅) |
검토자 | |||
승인자 |
<관련 부서 합의>
부서 | 이름 | Comment | 일자 |
<문서 제/개정 이력>
번호 | 제/개정 일자 | 제/개정 내용 | 문서 버전 | 개정자 | 승인자 |
1. 개요
1) 목적
📌 본 문서는 테스트 설계 기법 적용방법의 가이드를 목적으로 한다.
📌 실제 프로젝트 산출물을 테스트 베이시스로 하여 테스트 케이스 설계 기법 적용 과정을 예시로 들어 설명한다.
📌 각 기법에 대한 기본적인 내용은 SW테스팅 관련 서적 또는 교육교재 등을 참조하기 바란다.
2) 적용범위
📌 본 가이드는 ABC사(이하 ‘당사’ 라 함)의 SW 테스팅을 수행하기 위한 모든 설계 시 적용한다.
3) 참고 문서
📌 개발자도 알아야 할 소프트웨어 테스팅 3판
📌 ISTQB Syllabus Test Analysit
4) 문서 관리 담당자
📌 본 문서의 관리 담당자는 아래와 같음
역할 | 담당부서 | 담당자 | 내용 |
문서 책임자 | OOO | OOO | 본 문서 생성 및 수정 권한 부여 |
문서 검토자 | OOO | OOO, OOO | 작성 완료된 본 문서에 대하여 검토하고 의견 개진 |
문서 승인자 | OOO | OOO | 본 문서의 베이스라인을 승인하고 배포 허가 |
2. 테스트케이스 설계 기법 예시
👀 각 기법 별로 본 문서를 참고한다.
- 동등 분할 및 경곗값 분석 기법
- 페어 와이즈 테스팅
- 결정 테이블 테스팅
- 상태 전이 테스팅 > 이번에 다룰 내용
- 기본 경로 테스팅
- 제어 흐름 테스팅
- 최소 비교 테스팅
- 유스 케이스 테스팅
3. 테스트케이스 설계 명세서 작성 가이드(기존 동일)
1) 절차
선행 작업 | 리스크 분석 및 레벨별 테스트 설계 전략 수립 |
명세 절차 | 리스크 아이템 분석서 참조 리스크 아이템 별 테스트 컨디션 도출(기법을 적용, 테스트케이스 설계 기법 예시 참조) 각 테스트 레벨의 설계 전략에 맞는 템플릿 선정(기능 베이스, 시나리오 베이스) 테스트 스위트 작성(케이스 및 프로시저) |
후행 작업 | 테스트 실행 및 로그 생성 테스트 결과 분석 |
2) 역할과 책임
테스트 매니저(또는 리더) | "테스트 설계 가이드"의 유지 관리, 수정 및 배포에 대한 책임이 있다. |
테스트 엔지니어 | "테스트 설계 가이드"를 기반으로 테스트 케이스 도출 시 참조하여 개발한다. |
3) 표준 템플릿
👀 ABC사 테스트 설계 명세서 템플릿. xlsx
4. 결정테이블 테스팅
1) 기법 적용 절차
① 테스트 베이시스에서 상태와 이벤트를 식별하여 상태-이벤트 테이블을 작성한다.
② 테스트 설계 강도(n-Switch)에 따라 전이 트리를 작성한다.
③ 전이 트리의 모든 유효 전이를 커버하는 유효한(Valid) 테스트 케이스를 작성한다.
④ 비유효 전이를 커버하는 비유효 한(InValid) 테스트 케이스를 작성한다.
⑤ 전이의 이벤트 가드(Guard)에 대한 테스트 케이스를 작성한다.
⑥ 위에서 도출한 유효, 비유효, 가드 테스트 케이스를 모두 포함하는 테스트 프로시저를 작성한다.
2) 테스트 베이시스
👀 Capture - Image Stitching 메뉴
👀 테스트 베이시스는 요구사항을 포함하는 모든 문서를 얘기한다. 자세한 용어의 뜻은 아래 링크를 확인 바랍니다.
3) 기법 적용
📌 상태 - 이벤트 테이블 작성
👀 Image Stitching 메뉴를 분석하여 상태와 이벤트를 각각 식별하고 상태-이벤트 테이블을 작성한다.
✔ "상단/하단/전체 이미지 편집" 상태: 상단/하단/전체 이미지가 선택되거나 편집 중인 상태를 의미
✔ "Stitching Point 삽입됨" 상태 : Stitching Point가 삽입되어 상단/하단/전체 이미지가 선택되거나 편집 중인 상태를 의미
이벤트 / 상태 | 상단 이미지 편집 | 하단 이미지 편집 | 전체 이미지 편집 | Stitching Point 삽입됨 | Stitching Preview | Select Series | 종료 |
Tools - Select [상단] |
- | 상단 이미지 편집 | 상단 이미지 편집 | Stitching Point 삽입됨 | n/a | n/a | n/a |
Tools - Select [하단] |
하단 이미지 편집 | - | 하단 이미지 편집 | Stitching Point 삽입됨 | n/a | n/a | n/a |
Tools - Select [전체] |
전체 이미지 편집 | 전체 이미지 편집 | - | Stitching Point 삽입됨 | n/a | n/a | n/a |
Tools - Non Select [Panning, Zoom, Invert, Reset, CCW 90° Rotation, CW 90° Rotation, Horizontal Flip, Vertical Flip] |
상단 이미지 편집 | 하단 이미지 편집 | 전체 이미지 편집 | Stitching Point 삽입됨 | n/a | n/a | n/a |
Insert Stitching Point | - | - | Stitching Point 삽입됨 | - | n/a | n/a | n/a |
Delete Stitching Point | - | - | - | 전체 이미지 편집 | n/a | n/a | n/a |
Select All Image | 전체 이미지 편집 | 전체 이미지 편집 | - | Stitching Point 삽입됨 | n/a | n/a | n/a |
Swap Image | 상단 이미지 편집 | 하단 이미지 편집 | 전체 이미지 편집 | 전체 이미지 편집 | n/a | n/a | n/a |
Stitching | n/a | n/a | n/a | Stitching Preview | n/a | n/a | n/a |
Save | n/a | n/a | n/a | n/a | Select Series | n/a | n/a |
Cancel | n/a | n/a | n/a | n/a | Stitching Point 삽입됨 | n/a | n/a |
Close | 종료 | 종료 | 종료 | 종료 | n/a | n/a | n/a |
📌 상태 전이도
👀 상태-전이 테이블을 기반으로 상태 전이도를 작성한다. 상태 전이도가 존재하는 경우에는 상태 전이도를 기반으로 상태-전이 테이블을 작성한다.
📌 전이 트리 작성(0-Switch 기준)
👀 상태-전이 테이블을 기반으로 0-Switch 수준의 상태 전이 경로(트리)를 도출한다. Switch 수준은 테스트 전략이나 테스트 컨디션에서 결정된다.
시작 상태 | 종료 상태 | Path ID |
상단 이미지 편집 | 하단 이미지 편집 | Path01 |
전체 이미지 편집 | Path02 | |
상단 이미지 편집 | Path03 | |
전체 이미지 편집 | Path04 | |
상단 이미지 편집 | Path05 | |
종료 | Path06 | |
하단 이미지 편집 | 상단 이미지 편집 | Path07 |
전체 이미지 편집 | Path08 | |
하단 이미지 편집 | Path09 | |
전체 이미지 편집 | Path10 | |
하단 이미지 편집 | Path11 | |
종료 | Path12 | |
전체 이미지 편집 | 상단 이미지 편집 | Path13 |
하단 이미지 편집 | Path14 | |
전체 이미지 편집 | Path15 | |
Stitching Point 삽입됨 | Path16 | |
전체 이미지 편집 | Path17 | |
종료 | Path18 | |
Stitching Point 삽입됨 | Stitching Point 삽입됨 | Path19 |
Stitching Point 삽입됨 | Path20 | |
Stitching Point 삽입됨 | Path21 | |
Stitching Point 삽입됨 | Path22 | |
전체 이미지 편집 | Path23 | |
Stitching Point 삽입됨 | Path24 | |
전체 이미지 편집 | Path25 | |
Stitching Preview | Path26 | |
종료 | Path27 | |
Stitching Preview | Select Series | Path28 |
Stitching Point 삽입됨 | Path29 |
📌 유효한 테스트 케이스 도출
👀 위에서 도출된 상태 전이 경로를 모두 커버하는 유효한 경우의 테스트 케이스를 도출한다.
ID | 시작 상태 | 이벤트 | 가드 | 종료 상태 |
V01 | 상단 이미지 편집 | Tools - Select [하단] | 하단 이미지 편집 | |
V02 | 상단 이미지 편집 | Tools - Select [전체] | 전체 이미지 편집 | |
V03 | 상단 이미지 편집 | Tools - Non Select | Panning | 상단 이미지 편집 |
V04 | 상단 이미지 편집 | Select All Image | 전체 이미지 편집 | |
V05 | 상단 이미지 편집 | Swap Image | 상단 이미지 편집 | |
V06 | 상단 이미지 편집 | Close | 종료 | |
V07 | 하단 이미지 편집 | Tools - Select [상단] | 상단 이미지 편집 | |
V08 | 하단 이미지 편집 | Tools - Select [전체] | 전체 이미지 편집 | |
V09 | 하단 이미지 편집 | Tools - Non Select | Panning | 하단 이미지 편집 |
V10 | 하단 이미지 편집 | Select All Image | 전체 이미지 편집 | |
V11 | 하단 이미지 편집 | Swap Image | 하단 이미지 편집 | |
V12 | 하단 이미지 편집 | Close | 종료 | |
V13 | 전체 이미지 편집 | Tools - Select [상단] | 상단 이미지 편집 | |
V14 | 전체 이미지 편집 | Tools - Select [하단] | 하단 이미지 편집 | |
V15 | 전체 이미지 편집 | Tools - Non Select | Panning | 전체 이미지 편집 |
V16 | 전체 이미지 편집 | Insert Stitching Point | Stitching Point 삽입됨 | |
V17 | 전체 이미지 편집 | Swap Image | 전체 이미지 편집 | |
V18 | 전체 이미지 편집 | Close | 종료 | |
V19 | Stitching Point 삽입됨 | Tools - Select [상단] | Stitching Point 삽입됨 | |
V20 | Stitching Point 삽입됨 | Tools - Select [하단] | Stitching Point 삽입됨 | |
V21 | Stitching Point 삽입됨 | Tools - Select [전체] | Stitching Point 삽입됨 | |
V22 | Stitching Point 삽입됨 | Tools - Non Select | Panning | Stitching Point 삽입됨 |
V23 | Stitching Point 삽입됨 | Delete Stitching Point | 전체 이미지 편집 | |
V24 | Stitching Point 삽입됨 | Select All Image | Stitching Point 삽입됨 | |
V25 | Stitching Point 삽입됨 | Swap Image | 전체 이미지 편집 | |
V26 | Stitching Point 삽입됨 | Stitching | Stitching Preview | |
V27 | Stitching Point 삽입됨 | Close | 종료 | |
V28 | Stitching Preview | Save | Select Series | |
V29 | Stitching Preview | Cancel | Stitching Point 삽입됨 |
📌 비유효한 테스트 케이스 도출
👀 상태-이벤트 테이블을 기반으로 비유효 한 테스트 케이스를 도출한다. 단, 테스트 수행이 불가능한 경우(n/a)는 제외한다.
ID | 시작 상태 | 이벤트 | 기대 결과 |
IV01 | 상단 이미지 편집 | Tools - Select [상단] | - |
IV02 | 상단 이미지 편집 | Insert Stitching Point | - |
IV03 | 상단 이미지 편집 | Delete Stitching Point | - |
IV04 | 하단 이미지 편집 | Tools - Select [하단] | - |
IV05 | 하단 이미지 편집 | Insert Stitching Point | - |
IV06 | 하단 이미지 편집 | Delete Stitching Point | - |
IV07 | 전체 이미지 편집 | Tools - Select [전체] | - |
IV08 | 전체 이미지 편집 | Delete Stitching Point | - |
IV09 | 전체 이미지 편집 | Select All Image | - |
📌 가드 테스트 케이스 도출
👀 전이에 가드 조건이 있는 경우의 테스트 케이스를 도출한다.
ID | 시작 상태 | 이벤트 | 가드 | 종료 상태 |
G01 | 상단 이미지 편집 | Tools - Non Select | Zoom | 상단 이미지 편집 |
G02 | 상단 이미지 편집 | Tools - Non Select | Invert | 상단 이미지 편집 |
G03 | 상단 이미지 편집 | Tools - Non Select | Reset | 상단 이미지 편집 |
G04 | 상단 이미지 편집 | Tools - Non Select | CCW 90° Rotation | 상단 이미지 편집 |
G05 | 상단 이미지 편집 | Tools - Non Select | CW 90° Rotation | 상단 이미지 편집 |
G06 | 상단 이미지 편집 | Tools - Non Select | Horizontal Flip | 상단 이미지 편집 |
G07 | 상단 이미지 편집 | Tools - Non Select | Vertical Flip | 상단 이미지 편집 |
G08 | 하단 이미지 편집 | Tools - Non Select | Zoom | 하단 이미지 편집 |
G09 | 하단 이미지 편집 | Tools - Non Select | Invert | 하단 이미지 편집 |
G10 | 하단 이미지 편집 | Tools - Non Select | Reset | 하단 이미지 편집 |
G11 | 하단 이미지 편집 | Tools - Non Select | CCW 90° Rotation | 하단 이미지 편집 |
G12 | 하단 이미지 편집 | Tools - Non Select | CW 90° Rotation | 하단 이미지 편집 |
G13 | 하단 이미지 편집 | Tools - Non Select | Horizontal Flip | 하단 이미지 편집 |
G14 | 하단 이미지 편집 | Tools - Non Select | Vertical Flip | 하단 이미지 편집 |
G15 | 전체 이미지 편집 | Tools - Non Select | Zoom | 전체 이미지 편집 |
G16 | 전체 이미지 편집 | Tools - Non Select | Invert | 전체 이미지 편집 |
G17 | 전체 이미지 편집 | Tools - Non Select | Reset | 전체 이미지 편집 |
G18 | 전체 이미지 편집 | Tools - Non Select | CCW 90° Rotation | 전체 이미지 편집 |
G19 | 전체 이미지 편집 | Tools - Non Select | CW 90° Rotation | 전체 이미지 편집 |
G20 | 전체 이미지 편집 | Tools - Non Select | Horizontal Flip | 전체 이미지 편집 |
G21 | 전체 이미지 편집 | Tools - Non Select | Vertical Flip | 전체 이미지 편집 |
G22 | Stitching Point 삽입됨 | Tools - Non Select | Zoom | Stitching Point 삽입됨 |
G23 | Stitching Point 삽입됨 | Tools - Non Select | Invert | Stitching Point 삽입됨 |
G24 | Stitching Point 삽입됨 | Tools - Non Select | Reset | Stitching Point 삽입됨 |
G25 | Stitching Point 삽입됨 | Tools - Non Select | CCW 90° Rotation | Stitching Point 삽입됨 |
G26 | Stitching Point 삽입됨 | Tools - Non Select | CW 90° Rotation | Stitching Point 삽입됨 |
G27 | Stitching Point 삽입됨 | Tools - Non Select | Horizontal Flip | Stitching Point 삽입됨 |
G28 | Stitching Point 삽입됨 | Tools - Non Select | Vertical Flip | Stitching Point 삽입됨 |
📌 테스트 프로시저 작성
👀 하나의 테스트 케이스의 종료 상태가 다른 테스트 케이스의 시작 상태와 연결될 수 있다면, 각각의 테스트 테이스를 실행 순서가 있는 테스트 시나리오로 연결한다.
ID | 테스트 프로시저 |
TP01 | V01 ➡ V11 ➡ V07 ➡ V02 ➡ V16 ➡ V26 ➡ V29 ➡ V26 ➡ V28 |
TP02 | V03 ➡ G01 ➡ G02 ➡ G03 ➡ G04 ➡ G05 ➡ G06 ➡ G07 ➡ IV01 ➡ IV02 ➡ IV03 ➡ V04 ➡ V13 ➡ V05 ➡ V06 |
TP03 | V08 ➡ V14 ➡ V09 ➡ G08 ➡ G09 ➡ G10 ➡ G11 ➡ G12 ➡ G13 ➡ G14 ➡ IV04 ➡ IV05 ➡ IV06 ➡ V12 |
TP04 | V10 ➡ V15 ➡ G15 ➡ G16 ➡ G17 ➡ G18 ➡ G19 ➡ G20 ➡ G21 ➡ IV07 ➡ IV08 ➡ IV09 ➡ V17 ➡ V18 |
TP05 | V16 ➡ V19 ➡ V20 ➡ V21 ➡ V22 ➡ G22 ➡ G23 ➡ G24 ➡ G25 ➡ G26 ➡ G27 ➡ G28 ➡ V23 ➡ V16 ➡ V24 ➡ V25 ➡ V16 ➡ V27 |
👀 각 테스트 프로시저의 테스트 케이스 커버리지를 확인할 수 있도록 테스트 프로시저 추적 표를 작성하여 확인한다.
ID | TP01 | TP02 | TP03 | TP04 | TP05 |
V01 | ✔ | ||||
V02 | ✔ | ||||
V03 | ✔ | ||||
V04 | ✔ | ||||
V05 | ✔ | ||||
V06 | ✔ | ||||
V07 | ✔ | ||||
V08 | ✔ | ||||
V09 | ✔ | ||||
V10 | ✔ | ||||
V11 | ✔ | ||||
V12 | ✔ | ||||
V13 | ✔ | ||||
V14 | ✔ | ||||
V15 | ✔ | ||||
V16 | ✔ | ✔ | |||
V17 | ✔ | ||||
V18 | ✔ | ||||
V19 | ✔ | ||||
V20 | ✔ | ||||
V21 | ✔ | ||||
V22 | ✔ | ||||
V23 | ✔ | ||||
V24 | ✔ | ||||
V25 | ✔ | ||||
V26 | ✔ | ||||
V27 | ✔ | ||||
V28 | ✔ | ||||
V29 | ✔ | ||||
IV01 | ✔ | ||||
IV02 | ✔ | ||||
IV03 | ✔ | ||||
IV04 | ✔ | ||||
IV05 | ✔ | ||||
IV06 | ✔ | ||||
IV07 | ✔ | ||||
IV08 | ✔ | ||||
IV09 | ✔ | ||||
G01 | ✔ | ||||
G02 | ✔ | ||||
G03 | ✔ | ||||
G04 | ✔ | ||||
G05 | ✔ | ||||
G06 | ✔ | ||||
G07 | ✔ | ||||
G08 | ✔ | ||||
G09 | ✔ | ||||
G10 | ✔ | ||||
G11 | ✔ | ||||
G12 | ✔ | ||||
G13 | ✔ | ||||
G14 | ✔ | ||||
G15 | ✔ | ||||
G16 | ✔ | ||||
G17 | ✔ | ||||
G18 | ✔ | ||||
G19 | ✔ | ||||
G20 | ✔ | ||||
G21 | ✔ | ||||
G22 | ✔ | ||||
G23 | ✔ | ||||
G24 | ✔ | ||||
G25 | ✔ | ||||
G26 | ✔ | ||||
G27 | ✔ | ||||
G28 | ✔ |
📌 적용 유의 사항
① 상태 전이 테스팅 기법의 효과성은 상태 전이 다이어그램에 품질에 의해 좌우되므로 상태 전이 다이어그램을 의미 있게 작성하는 것이 필요하다.
② 테스터가 테스트의 목적으로 상태 전이 다이어그램을 작성했을 경우, 반드시 개발/사용자 측의 검토를 받는 것이 좋다.
③ 상태 전이 다이어그램 명세서의 상태, 이벤트, 액션, 가드의 정의 내용을 반드시 이해관계자간에 공유하여 그 의미에 혼동이 없도록 명확하게 하는 것이 중요하다.
④ 모든 유효, 비유효, 가드 테스트 케이스 도출을 권장하지만 테스트 목적에 따라 일부는 생략 될 수 있다.
⑤ 테스트 케이스 결과를 검토하여 경험적으로 의미 있는 테스트 케이스를 추가할 것을 권장한다.
Related References
요약 : 소프트웨어어 qa, 웹 qa, 앱 qa, 소프트웨어 테스트 자동화, 자동화 소프트웨어, pm 교육, 비즈니스 소프트웨어, 기업 교육, audit, auditer
'EDUCATION' 카테고리의 다른 글
[TMMi] 레벨.2 기준 제어 흐름 테스팅에 대해서 알아보자 (0) | 2021.01.04 |
---|---|
[TMMi] 레벨.2 기준 기본 경로 테스팅에 대해서 알아보자 (0) | 2021.01.03 |
[TMMi] 레벨.2 기준 제품 리스크 분석 가이드에 대해서 알아보자 (0) | 2020.12.24 |
[TMMi] 레벨.2 기준 소프트웨어 테스트 전략서에 대해서 알아보자 (0) | 2020.12.18 |
[소프트웨어 테스트 파트5 - 커리어] 입문 교육 발표 자료 공유 드립니다 (0) | 2020.11.06 |