정상 입력 하나가 통과했다고 자동화 시험을 끝내지 않습니다. 요청 키, 수량과 실행 결과의 비교 규칙을 먼저 정하고 누락·중복·충돌·복구 사례를 독립된 시험 ID로 남깁니다.
아래 업무 ID, 사람·팀 이름, 날짜와 값은 구조를 설명하기 위한 가상 자료입니다. 실제 고객 정보나 현장 성과를 포함하지 않습니다.
동작을 확인할 작은 계약부터 쓰기
설명용 자동화가 요청키와 수량을 받아 업무표에 한 번 기록한다고 가정합니다. 이 글의 계약은 요청키가 비어 있지 않고 수량이 양의 정수이며, 같은 키와 같은 수량으로 완료된 요청은 기존 결과를 재사용한다는 것입니다. 실제 업무에서는 대상 변경과 권한 확인이 더 필요하지만 우선 이 작은 계약을 독립적으로 시험할 수 있습니다.
시험을 시작하기 전에 입력에 대한 예상 결과와 새 실행 횟수를 적습니다. 화면에서 오류가 없었다는 말보다 키누락일 때 실행이 0회인지, 정상일 때 1회인지 확인하는 방식이 구체적입니다. 예상 결과는 실제 실행을 본 뒤 맞춰 쓰지 않습니다. 시험 계약을 바꿨다면 변경 이유와 새 버전으로 다시 검사한 범위를 남깁니다.
한 행이 한 실패 이유를 드러내게 만들기
T-002는 키만 비워 두고 수량은 정상값 2로 둡니다. T-003은 키가 있고 수량만 비웁니다. 둘을 동시에 누락시키면 어느 검사가 작동했는지 알기 어렵습니다. 정상 입력에서 한 조건을 바꿔 시험을 나누면 실패했을 때 수정할 규칙을 좁힐 수 있습니다. 실제 복합 오류는 기본 검사를 확인한 뒤 별도 시험을 추가합니다.
시험ID와 요청키는 목적이 다릅니다. 시험ID는 T-004 같은 사례를 다시 찾는 번호이고 요청키는 대상 시스템의 같은 요청을 구분하는 값입니다. 동일 키로 시험을 반복할 때에는 기존 기록이 남았는지 확인해야 합니다. 같은 시험을 다시 실행했는데 기대와 다른 결과가 나오면 입력뿐 아니라 시험 시작 전 상태도 비교합니다.
완료 중복과 내용 충돌을 나누기
T-004의 이전상태는 완료이고 기존 수량도 2입니다. 예상 판정은 결과재사용, 새실행수는 0입니다. T-005는 같은 키의 기존 수량이 2인데 새 수량이 3이므로 충돌보류입니다. 두 사례를 단순 중복 한 종류로 묶으면 정정된 요청을 완료 결과로 잘못 돌려주는 동작을 놓칠 수 있습니다.
처리 중 요청 T-006은 진행대조로 남기고 새 실행을 하지 않습니다. 완료 중복과 처리 중 중복의 차이를 보는 시험입니다. 통신 시간초과가 났다는 사실만으로 이전상태를 재시도가능으로 바꾸지는 않습니다. 실제 복구 시험을 하려면 대상에 결과가 반영됐는지 확인하는 조건을 계약에 포함해야 합니다.
경계값을 막연한 오류와 구분하기
수량이 양의 정수라는 계약에서 0은 입력보류입니다. T-008을 정상으로 통과시키면 실제 업무의 “수량 없음”과 “수량 0 요청” 의미를 다시 정의해야 합니다. 1은 최소 정상값이고 음수, 소수와 숫자가 아닌 문자열은 추가 오류 후보입니다. 어떤 입력을 거부하고 어떤 입력을 정규화하는지 계약에 먼저 적습니다.
수량 문자열의 공백을 제거하거나 앞자리 0을 숫자로 바꾸는 처리도 시험 대상으로 둘 수 있습니다. 다만 품목 ID처럼 숫자 모양의 식별값은 수량과 다릅니다. 이 글은 수량이라는 하나의 열을 검사하므로 모든 숫자처럼 보이는 문자열을 변환하라는 안내가 아닙니다. 열의 의미를 보존하는지 확인하는 시험을 따로 만듭니다.
시험 환경과 실제 실행 결과를 분리하기
시험용 업무표에는 가상 요청만 넣고 실제 고객 알림이나 발주가 연결되지 않았는지 확인합니다. 샘플을 실행할 때 대상 저장 위치, 자동 알림, 외부 연결이 무엇인지 모르면 시험을 멈춥니다. 원본 결과를 되돌리는 방법이 있어도 이미 발송된 알림이나 결제처럼 회수할 수 없는 효과는 별도로 다뤄야 합니다.
CSV의 실제판정과 근거ID는 빈칸입니다. 본문이 기대 결과를 설명한다고 실제 서비스에서 동작을 시험했다는 뜻은 아닙니다. 독자는 자신의 시험 환경에서 얻은 결과와 로그 위치를 채우고 예상판정·새실행수와 비교해야 합니다. 로컬에서 판정 규칙을 계산한 결과와 실제 연결 시스템의 통합 동작은 다른 증거입니다.
수정 후 다시 확인할 사례를 고르기
키누락 처리만 고쳤더라도 정상과 동일중복이 그대로 동작하는지 함께 확인해야 합니다. 새 코드가 모든 요청을 보류하게 만들어 키누락 시험만 통과할 수도 있기 때문입니다. 바꾼 규칙이 직접 영향을 주는 시험과 대표 정상 입력을 묶어 재검사하고 바뀌지 않은 실제 실행 범위도 기록합니다.
시험 성공률이 높다는 수치만으로 운영을 시작하지 않습니다. 중복 실행처럼 영향이 큰 사례가 실패했으면 전체 여덟 개 중 일곱 개가 맞아도 보류해야 합니다. 실패한 시험ID, 계약과 다른 결과, 재현 입력, 수정 계획을 남긴 뒤 재검사합니다. 이 양식은 시험의 누락을 드러내는 도구이며 모든 장애와 외부 서비스 변경을 예측하지는 않습니다.
상태를 바꾸는 조건
| 현재 상태 | 다음 상태 | 필요한 조건 | 조건이 없을 때 |
|---|---|---|---|
| 미실행 | 결과기록 | 초기 상태·시험 대상 확인 후 실행 | 외부 영향 확인 전 중단 |
| 결과기록 | 예상일치 | 판정·새실행수 모두 일치 | 불일치 조사 |
| 불일치 | 재검사대기 | 원인과 수정 범위 확인 | 기대값 임의 변경 금지 |
| 재검사대기 | 결과기록 | 관련 사례·정상 사례 다시 실행 | 실제근거 없이 완료 금지 |

작업표에 입력하는 순서
- 시험할 입력·이전 상태·대상 변경을 작은 계약으로 정합니다.
- 정상·한 가지 누락·동일 중복·내용 충돌을 서로 다른 시험ID로 만듭니다.
- 실행 전에 예상판정과 새실행수를 적습니다.
- 실제 고객 영향 없는 시험 대상과 초기 상태를 확인합니다.
- 시험 결과와 로그 근거를 채우고 예상과 대조합니다.
- 수정 후 관련 오류와 대표 정상·중복 사례를 다시 검사합니다.
샘플 기록과 행별 해석
| 시험ID | 요청키 | 수량 | 이전상태 | 이전수량 | 시험유형 | 예상판정 | 예상새실행수 | 실제판정 | 근거ID |
|---|---|---|---|---|---|---|---|---|---|
| T-001 | K-01 | 2 | 없음 | 정상 | 신규실행 | 1 | |||
| T-002 | 2 | 없음 | 키누락 | 입력보류 | 0 | ||||
| T-003 | K-03 | 없음 | 수량누락 | 입력보류 | 0 | ||||
| T-004 | K-04 | 2 | 완료 | 2 | 동일중복 | 결과재사용 | 0 | ||
| T-005 | K-05 | 3 | 완료 | 2 | 내용충돌 | 충돌보류 | 0 | ||
| T-006 | K-06 | 2 | 처리중 | 2 | 동시중복 | 진행대조 | 0 | ||
| T-007 | K-07 | 2 | 재시도가능 | 2 | 복구 | 동일키재시도 | 1 | ||
| T-008 | K-08 | 0 | 없음 | 경계값 | 입력보류 | 0 |
T-001 — 요청키와 양의 정수 수량이 있고 기존 기록이 없는 정상 사례입니다. 기대는 신규실행 1회입니다. 실제판정과 근거는 빈칸이므로 파일을 내려받았다는 사실로 실제 자동화가 통과했다고 쓰지 않습니다.
T-002 — 수량 2는 정상이며 키만 누락됐습니다. 예상은 입력보류와 새 실행 0회입니다. 키가 없는 행이 다른 정상 사례와 같은 결과를 만들지 않는지 확인하고 누락 검사가 실행 전에 작동하는지 봅니다.
T-003 — 키 K-03은 있고 수량만 비었습니다. 빈칸을 0으로 바꾸기 전에 입력보류해야 합니다. 예상이 같은 T-002와 원인이 다르므로 시험 이름과 재현 입력을 따로 보존합니다.
T-004 — 이전 완료 기록과 수량이 같은 재전송입니다. 기존 결과를 재사용하고 새 실행은 0회여야 합니다. 새 행이 한 번 더 만들어졌다면 판정 문구가 맞더라도 실제 부작용 수를 비교하면 실패를 찾을 수 있습니다.
T-005 — 같은 키를 사용하면서 수량을 2에서 3으로 바꿨습니다. 기존 완료를 성공으로 돌려주지 않고 충돌보류해야 합니다. 새 요청을 인정할지는 별도의 업무 결정이며 시험 중 임의 새 키를 발급하지 않습니다.
T-006 — 첫 실행이 처리 중인 상태를 준비한 뒤 같은 키를 넣는 사례입니다. 진행대조와 새 실행 0회가 기대됩니다. 실제 동시 실행을 시험한 것이 아니라 초기 상태에 따른 판정 시험이라는 범위를 구분합니다.
T-007 — 대상 결과를 대조해 재시도가능으로 분류된 상태를 가정합니다. 같은 K-07과 수량 2를 유지해 재시도 1회를 기대합니다. 안전한 재시도 조건이 검증되지 않은 시스템에는 그대로 적용하지 않습니다.
T-008 — 0은 수량 하한 밖의 경계 사례입니다. 샘플 계약이 양의 정수이므로 새 실행을 만들지 않습니다. 실제 업무가 수량 0을 허용한다면 계약과 이 사례의 예상 결과를 함께 수정해야 합니다.
이 글의 기록 양식 내려받기
자동화 시험에 정상·누락·중복·복구 입력을 따로 넣는 법 — CSV 양식
UTF-8 BOM이 있는 기록용 CSV입니다. 계산식·드롭다운·서식은 들어 있지 않습니다. 첫 행 10열, 설명용 데이터 8레코드가 있습니다.
모든 행은 가상 입력이며 실제 개인정보·성과 기록이 아닙니다.
CSV에 자동 차단·알림·권한 통제·실행 기능은 없습니다.
CSV 구조와 식별자 점검 도구에서 사본의 열 수와 문자열을 확인할 수 있습니다.
작업표 사용 범위
CSV는 열 이름과 샘플 값을 제공하는 기록 양식입니다. 상태 차단, 권한 확인, 알림, 자동 실행은 포함하지 않습니다. 파일을 가져온 도구에서 ID와 시각을 원문대로 보존하고, 담당자와 기준을 실제 업무에 맞게 바꿔야 합니다. 빈칸은 누락 여부를 확인하기 위한 입력이며 임의로 완료나 0으로 바꾸지 않습니다.
예상 결과를 대조할 입력
| 확인 항목 | 입력 | 예상 판정 | 판정 이유 |
|---|---|---|---|
| 정상 | 키K-01,수량2,기존없음 | 신규실행/1회 | 필수 입력과 중복 조건이 정상이다 |
| 완료 중복 | 키K-04,수량2,완료수량2 | 결과재사용/0회 | 같은 요청 효과를 다시 만들지 않는다 |
| 수량 경계 | 키K-08,수량0 | 입력보류/0회 | 양의 정수 조건에 맞지 않는다 |
| 수량 충돌 | 기존2,새3,같은키 | 충돌보류/0회 | 같은 키가 다른 내용을 나타낸다 |
근거 자료와 적용 범위
공식 자료는 아래에 적힌 기능과 개념을 확인하는 데 사용했습니다. 업무 상태 이름, 담당 배정, 시간 기준과 샘플 숫자는 이 글에서 설계한 운영 예시입니다.
- Microsoft 단위 시험 작성 지침 — 입력 준비·실행·예상 결과 확인을 나누는 시험 작성 원칙을 참고합니다. 이 글의 판정표가 특정 자동화 제품의 통합 시험을 대신하지는 않습니다.
- Python CSV 읽기·쓰기 공식 문서 — CSV 행과 필드를 읽고 쓰는 기능을 확인합니다. CSV 파일에는 입력 검증이나 자동 실행 엔진이 포함되지 않습니다.