AI生成结算测试用例:表格看着完整,预期金额却算错了
把同一份优惠券与运费需求交给ChatGPT、Gemini和Claude,谁的测试表更适合拿来修改使用?WekeyLab AI这次选Claude:必测9项金额全部正确,还加入了取消优惠券和切换配送地区后的重新计算。Gemini在必测项中少算1韩元;ChatGPT第二个展示答案在附加项中多收了3000韩元运费。没有核算的预期结果,不能直接成为判断程序对错的标准。
先选Claude的结构,再配独立核算的结果
Claude把必测项、补充边界、错误输入和需求空白分开。取消优惠券、普通地区切换为偏远地区的检查,尤其接近测试人员实际操作的步骤。它不只列静态金额,还考虑了选项变化之后的状态。
ChatGPT的必测9项也正确。此次只提交了一次问题,网页自动并排展示答案1与答案2。我们保留两份展示结果,没有只挑更好的一份,也没有把它算成两次独立实验。
Gemini的表格和三阶段优先级比较简洁,但预期金额错误会让正确实现被判失败。排版完整并不意味着已经可以导入测试工具。
最容易混淆的是两个金额基准
虚构商店只接受大于0的整数金额。勾选优惠券且优惠前商品合计达到30000韩元时,打九折,优惠金额不足1韩元的部分舍去,最多优惠5000韩元。基础运费看优惠后的商品金额:达到50000韩元才免运费,否则收3000韩元。偏远地区无论是否免基础运费,都另加3000韩元。
所以50000韩元商品使用优惠券后,商品金额45000,再加3000运费,实付48000。55000韩元商品优惠后正好50000,才免基础运费。
本文是同一次韩语实测的中文本地化。为保留整数舍去的边界,我们仍用韩元,不把数字直接改成人民币。问题发送前已确定必测9项答案及无效输入、优惠上限等核查标准。
Gemini:优惠金额正确,减法错了1韩元
TC-03中,Gemini正确把49999的10%向下取整为4999,却把优惠后金额写成44999、实付写成47999。正确计算是49999−4999=45000,加运费后为48000。其余8个必测项与独立计算一致。
这里并没有观察到真实商店损失1韩元。问题在于测试的参照答案错了:程序若正确返回48000,照抄这张表仍会判失败。
Gemini拒绝0和小数金额的方向正确,但它给出的具体报错文案不是原需求的一部分。文案可以作为建议,不能未经确认就当成必须逐字匹配的验收条件。
Gemini TC-03:优惠4999 → 优惠后44999 → 实付47999(韩语原文译述)。
ChatGPT:必测表没错,附加表仍需核算
答案1与答案2的必测9行都正确。答案1补充了优惠券和地区组合,答案2列出了适合自动化检查的规则。篇幅更长有价值,但每一条新增预期都需要验证。
答案2的TC-23把未用优惠券、普通地区、商品54999的实付写成57999。此时商品金额本来就超过免运费门槛,正确实付是54999,多出的3000不该收。只检查指定的9行就会漏掉这个问题。
答案2还说10%首次超过5000的商品金额是50000;实际在这里恰好等于5000。WekeyLab AI会补测50010:没有优惠上限时取整后优惠5001,有上限时优惠5000。50001的10%即使仅取整也为5000,单测这一项不能识别漏写上限的程序。
ChatGPT答案2,TC-23:54999/不选优惠券/普通地区/57999(韩语原文译述)。
Claude:状态变化和待确认事项更好用
Claude必测9行全部正确。55000商品取消优惠券,实付从50000变为55000;保留优惠券而改成偏远地区,实付从50000变为53000。这类设计可用来检查切换选项后是否残留旧金额。
它把“30000.0”的表示形式、带逗号输入、最大金额分别列为待确认事项。数学上是整数,并不自动说明界面允许某种字符串形式。
但它称某种运费错误“最常见”、输入校验错误“相对少见”,本次没有资料支持这些频率判断。WekeyLab AI按已知后果安排顺序:尽早检查无效输入和运费边界,不借用未经验证的发生频率。
WekeyLab AI核算后的参考表
下面是WekeyLab AI按需求独立计算的结果,不是新增模型回答。默认勾选优惠券、普通地区;每行依次为商品合计→优惠/基础运费/实付,单位均为韩元。
29,999 → 0 / 3,000 / 32,999 30,000 → 3,000 / 3,000 / 30,000 49,999 → 4,999 / 3,000 / 48,000 50,000 → 5,000 / 3,000 / 48,000 54,999 → 5,000 / 3,000 / 52,999 55,000 → 5,000 / 0 / 50,000 55,001 → 5,000 / 0 / 50,001
55000、使用优惠券、偏远地区,实付53000。不用优惠券且普通地区时,50000实付50000,54999实付54999。检测上限的50010、使用优惠券、普通地区案例,优惠5000、实付48010。
0、−1、30000.5应报错且不计算实付金额。输入字符串格式和具体报错文案,先确认再单独检查。
怎么执行,以及可复用的提问
先测50000无优惠券的正常流程,同时检查0、负数、小数是否被拒绝。接着核对54999↔55000免运费边界、偏远附加费、29999↔30000优惠门槛、49999取整与50010上限。最后切换优惠券和配送地区,检查重新计算。
把输入、预期优惠、预期运费、预期实付、实际结果、是否通过、证据位置分栏记录。AI写出预期结果不等于程序已经通过测试。
请根据以下需求生成测试用例和预期结果,说明每项预期来自哪条规则。未规定的界面行为和输入格式请列为待确认问题。除了静态金额,也检查用户改变选项后的重新计算。[粘贴需求]
相关任务
需求更新时,先看两版文档差异比较,确认变更没有遗漏。订单产生后的取消、重复行和缺失价格处理,则见订单CSV汇总比较。
来源与实际记录
2026年9月21日12:04–12:08韩国时间,同一韩语问题向各服务提交一次,无长度限制。ChatGPTFree、Think关闭、具体模型未显示,网页自动展示A/B两份均保留;GeminiFlash、套餐未确认;ClaudeFree、Sonnet5Medium。中文与英文是该韩语执行的本地化,保留KRW确保可复算。30项预先确定的人工对照及4份展示答案共36行必测金额的Python核算;仅必测项ChatGPT各9/9、Gemini8/9、Claude9/9,附加项错误另述。未实际运行商店结算、UI或API。官方工作流资料仅说明此任务用途,不代表已验证搜索量。
Katalon官方:从需求生成AI测试用例 / Generate test cases from requirements
문서 변경점 비교 / Document version comparison
CSV 주문 매출 비교 / Order CSV comparison
ChatGPT · 2026-09-21 12:04–12:08 KST
쇼핑몰의 쿠폰·배송비 기능을 출시하기 전에 QA 테스트 케이스를 만들고 싶어. 아래는 우리가 만든 가상 요구사항이야. 상품 합계는 0보다 큰 정수 원 단위여야 해. 0, 음수, 소수 금액은 오류로 처리하고 결제 금액을 계산하지 않아. 쿠폰을 선택했을 때 할인 전 상품 합계가 30,000원 이상이면 10% 할인하되 할인액은 원 미만을 버리고 최대 5,000원까지만 적용해. 30,000원 미만에서는 쿠폰을 선택해도 할인은 0원이야. 쿠폰을 선택하지 않으면 할인은 없어. 다른 할인이나 세금은 없어. 기본 배송비는 쿠폰 할인 후 상품 금액이 50,000원 이상이면 0원, 그 미만이면 3,000원이야. 도서산간 지역은 무료배송 여부와 관계없이 3,000원을 추가해. 최종 결제 금액은 할인 후 상품 금액에 기본 배송비와 도서산간 추가비를 더한 값이야. 담당자가 바로 실행할 수 있는 테스트 케이스와 예상 결과를 만들어줘. 쿠폰을 선택한 일반 지역의 상품 합계 29,999 / 30,000 / 49,999 / 50,000 / 54,999 / 55,000 / 55,001원, 쿠폰을 선택한 도서산간 지역 55,000원, 쿠폰을 선택하지 않은 일반 지역 50,000원은 꼭 포함해줘. 잘못된 금액 입력과 놓치기 쉬운 경계값도 함께 검토하고, 무엇부터 테스트할지 네 판단도 알려줘. 응답 1 요구사항을 기준으로 금액 검증 → 쿠폰 할인 → 배송비 → 최종 결제금액 순서로 계산되도록 테스트 케이스를 구성했습니다. 특히 30,000원, 50,000원, 55,000원 주변을 집중적으로 잡았습니다. 1. 핵심 QA 테스트 케이스 ID 상품 합계 쿠폰 지역 예상 할인 할인 후 상품금액 기본 배송비 도서산간 추가 최종 결제금액 TC-01 29,999 선택 일반 0 29,999 3,000 0 32,999 TC-02 30,000 선택 일반 3,000 27,000 3,000 0 30,000 TC-03 49,999 선택 일반 4,999 45,000 3,000 0 48,000 TC-04 50,000 선택 일반 5,000 45,000 3,000 0 48,000 TC-05 54,999 선택 일반 5,000 49,999 3,000 0 52,999 TC-06 55,000 선택 일반 5,000 50,000 0 0 50,000 TC-07 55,001 선택 일반 5,000 50,001 0 0 50,001 TC-08 55,000 선택 도서산간 5,000 50,000 0 3,000 53,000 TC-09 50,000 미선택 일반 0 50,000 0 0 50,000 계산상 중요한 점: 무료배송 기준은 쿠폰 할인 후 금액에 적용됩니다. 따라서 50,000원 상품에 쿠폰을 적용하면 45,000원이 되어 기본 배송비 3,000원이 붙습니다. 2. 할인액 버림과 최대 5,000원 경계 위 필수 케이스 외에 다음도 실행하는 것이 좋습니다. ID 상품 합계 쿠폰 예상 할인 할인 후 기본 배송비 최종 TC-10 30,001 선택 3,000 27,001 3,000 30,001 TC-11 30,009 선택 3,000 27,009 3,000 30,009 TC-12 30,011 선택 3,001 27,010 3,000 30,010 TC-13 49,999 선택 4,999 45,000 3,000 48,000 TC-14 50,001 선택 5,000 45,001 3,000 48,001 TC-15 55,000 선택 5,000 50,000 0 50,000 30,011 × 10% = 3,001.1원이므로 할인액은 3,001원이어야 합니다. 소수점 이하를 반올림하면 안 됩니다. 또한 50,000원 자체는 할인액이 정확히 5,000원이지만, 50,001원부터도 10% 계산값이 5,000원을 넘으므로 5,000원으로 상한 적용되는지 확인해야 합니다. 3. 쿠폰 미선택 / 지역 조합 쿠폰과 배송비 로직이 서로 섞이지 않는지도 확인합니다. ID 상품 합계 쿠폰 지역 예상 할인 기본 배송비 추가비 최종 TC-16 49,999 미선택 일반 0 3,000 0 52,999 TC-17 50,000 미선택 일반 0 0 0 50,000 TC-18 50,000 미선택 도서산간 0 0 3,000 53,000 TC-19 55,000 미선택 도서산간 0 0 3,000 58,000 TC-20 49,999 선택 도서산간 4,999 3,000 3,000 51,000 특히 도서산간 추가 3,000원은 무료배송이어도 붙어야 하므로 50,000원 이상 + 도서산간 조합을 반드시 포함하는 것이 좋습니다. 4. 잘못된 상품 금액 입력 요구사항상 오류가 되어 결제 금액 자체를 계산하지 않아야 합니다. ID 입력값 예상 결과 TC-21 0 금액 오류 / 결제금액 미계산 TC-22 -1 금액 오류 / 결제금액 미계산 TC-23 -10,000 금액 오류 / 결제금액 미계산 TC-24 0.1 금액 오류 / 결제금액 미계산 TC-25 29,999.9 금액 오류 / 결제금액 미계산 TC-26 30,000.5 금액 오류 / 결제금액 미계산 TC-27 "30000" 등 숫자가 아닌 문자열 입력 형식 오류 처리 확인 TC-28 공백/빈값 입력 오류 처리 확인 가능하다면 999,999,999, 아주 큰 정수도 넣어 금액 범위 초과나 오버플로가 없는지 별도 확인하는 것이 좋습니다. 요구사항에 최대 금액이 정의되어 있지 않으므로 이 경우에는 구체적인 기대 금액을 임의로 정하기보다 시스템의 허용 범위와 오류 처리 정책을 확인하는 것이 맞습니다. 5. 제가 먼저 테스트할 순서 1순위: 금액 유효성 0, 음수, 소수 정상적인 양의 정수 여기서 실패하면 이후 계산 테스트의 의미가 떨어집니다. 2순위: 쿠폰 임계값 29,999 → 30,000 → 30,001 쿠폰이 정확히 30,000원부터 적용되는지 확인합니다. 3순위: 할인액 버림 + 5,000원 상한 30,011 같은 소수점이 생기는 금액 50,000, 50,001처럼 상한에 걸리는 금액 4순위: 무료배송 임계값 할인 후 상품금액이 49,999 → 50,000 → 50,001이 되는 조합을 확인합니다. 여기서 중요한 것은 원래 상품 합계가 아니라 할인 후 금액이라는 점입니다. 5순위: 도서산간 무료배송 상태에서도 +3,000원이 붙는지 확인합니다. 6순위: 쿠폰 미선택 및 조합 회귀 테스트 쿠폰을 선택하지 않았을 때 할인 0원인지 일반/도서산간 조합이 모두 정상인지 확인합니다. QA에서 특히 놓치기 쉬운 포인트 30,000원 기준은 할인 전 상품 합계입니다. 50,000원 무료배송 기준은 할인 후 상품금액입니다. 할인액의 소수점은 버림입니다. 할인은 최대 5,000원입니다. 도서산간 +3,000원은 무료배송이어도 면제되지 않습니다. 잘못된 상품 금액은 배송비까지 계산하지 말고 전체 결제금액 계산을 중단해야 합니다. 쿠폰을 선택했지만 30,000원 미만이면 할인 0원이어야 합니다. 따라서 실제 QA 실행에서는 TC-01~09 → TC-10~15 → TC-21~28 순으로 먼저 돌리는 것을 권합니다. 이 순서면 핵심 비즈니스 규칙과 가장 위험한 경계값을 초기에 빠르게 검증할 수 있습니다. 이 응답이 더 좋아요 ChatGPT 응답 2 아래처럼 규칙별 경계값 → 할인/배송 상호작용 → 잘못된 입력 → 조합 테스트 순서로 만들면 담당자가 바로 실행하기 좋습니다. 1. 우선 테스트할 순서 상품 합계 입력 검증 — 잘못된 값이면 이후 계산을 하지 않는지 먼저 확인 쿠폰 할인 경계값 — 29,999 ↔ 30,000, 그리고 할인 상한 5,000원 경계 기본 배송비 경계값 — 쿠폰 할인 후 금액이 49,999 ↔ 50,000인지 확인 도서산간 추가비 — 무료배송과 별개로 항상 +3,000원인지 확인 쿠폰 미선택 및 주요 조합 — 정상 흐름과 회귀 테스트 특히 상품 합계 50,000원이 아니라 "쿠폰 할인 후 상품 금액"이 배송비 기준이라는 점이 이번 QA에서 가장 놓치기 쉬운 부분입니다. 2. 핵심 테스트 케이스 ID 상품 합계 쿠폰 지역 할인액 할인 후 상품금액 기본 배송비 도서산간 추가 최종 결제금액 TC-01 29,999 선택 일반 0 29,999 3,000 0 32,999 TC-02 30,000 선택 일반 3,000 27,000 3,000 0 30,000 TC-03 49,999 선택 일반 4,999 45,000 3,000 0 48,000 TC-04 50,000 선택 일반 5,000 45,000 3,000 0 48,000 TC-05 54,999 선택 일반 5,000 49,999 3,000 0 52,999 TC-06 55,000 선택 일반 5,000 50,000 0 0 50,000 TC-07 55,001 선택 일반 5,000 50,001 0 0 50,001 TC-08 55,000 선택 도서산간 5,000 50,000 0 3,000 53,000 TC-09 50,000 미선택 일반 0 50,000 0 0 50,000 TC-04와 TC-05가 특히 중요합니다. 쿠폰 할인은 각각 5,000원으로 상한에 도달하지만, 할인 후 금액이 50,000원에 못 미치므로 배송비 3,000원이 붙습니다. 반면 55,000원에서는 할인 후 정확히 50,000원이 되어 무료배송입니다. 3. 원 미만 버림 검증 요구사항상 할인액은 10% 계산 후 원 미만을 버려야 합니다. ID 상품 합계 쿠폰 계산된 10% 실제 할인액 할인 후 금액 TC-10 30,001 선택 3,000.1 3,000 27,001 TC-11 30,009 선택 3,000.9 3,000 27,009 TC-12 49,999 선택 4,999.9 4,999 45,000 TC-13 50,001 선택 5,000.1 5,000 45,001 TC-12는 원 미만 버림과 50,000원 배송 기준을 함께 확인할 수 있어서 좋은 경계 테스트입니다. 4. 할인 상한 경계값 10%가 5,000원을 처음 초과하는 지점은 50,000원입니다. 따라서 다음을 별도로 확인하는 것이 좋습니다. 상품 합계 기대 할인액 49,999 4,999 50,000 5,000 50,001 5,000 여기서 50,001원에 대해 5,000.1원을 그대로 적용하거나 5,001원으로 반올림하면 오류입니다. 5. 잘못된 상품 금액 입력 ID 입력값 기대 결과 TC-14 0 오류, 결제금액 계산하지 않음 TC-15 -1 오류, 결제금액 계산하지 않음 TC-16 -30,000 오류, 결제금액 계산하지 않음 TC-17 0.1 오류, 결제금액 계산하지 않음 TC-18 30,000.5 오류, 결제금액 계산하지 않음 TC-19 49,999.99 오류, 결제금액 계산하지 않음 TC-20 빈 값 입력 오류 처리 TC-21 숫자가 아닌 값(abc) 입력 오류 처리 요구사항에 따르면 유효한 상품 합계는 0보다 큰 정수 원 단위뿐이므로, 소수는 0.1뿐 아니라 30,000.5, 49,999.99 등도 모두 거부해야 합니다. 6. 추가로 놓치기 쉬운 조합 ID 상품 합계 쿠폰 지역 기대 최종금액 TC-22 30,000 미선택 일반 33,000 TC-23 54,999 미선택 일반 57,999 TC-24 55,000 미선택 일반 55,000 TC-25 55,000 선택 도서산간 53,000 TC-26 55,001 선택 도서산간 53,001 TC-27 54,999 선택 도서산간 55,999 특히 TC-25는 "무료배송이면 도서산간 추가비도 없어지는 것 아닌가?"라는 구현 실수를 잡습니다. 요구사항상 무료배송 여부와 무관하게 도서산간 추가비 3,000원이 붙습니다. 7. QA에서 확인할 핵심 불변조건 자동화 테스트까지 고려한다면 다음 규칙을 체크하면 좋습니다. 상품 합계가 유효하지 않으면 결제금액을 계산하지 않는다. 쿠폰 미선택 → 할인액 0 쿠폰 선택 + 상품 합계 < 30,000 → 할인액 0 쿠폰 선택 + 상품 합계 ≥ 30,000 → floor(상품합계 × 10%) 위 할인액은 최대 5,000원 기본 배송비의 판단 기준은 원래 상품 합계가 아니라 할인 후 상품 금액 할인 후 상품 금액 ≥ 50,000 → 기본 배송비 0 할인 후 상품 금액 < 50,000 → 기본 배송비 3,000 도서산간 → 위 결과와 관계없이 추가 3,000 최종금액 = 할인 후 상품금액 + 기본 배송비 + 도서산간 추가비 실행 우선순위를 딱 5개로 줄인다면: TC-01 → TC-02 → TC-05 → TC-06 → TC-08을 먼저 돌리겠습니다. 이 다섯 개만으로 쿠폰 적용 시작점, 할인 상한 근처, 무료배송 시작점, 도서산간 추가비라는 핵심 경계와 상호작용을 가장 빠르게 검증할 수 있습니다. 이 응답이 더 좋아요
Gemini · 2026-09-21 12:04–12:08 KST
쇼핑몰의 쿠폰·배송비 기능을 출시하기 전에 QA 테스트 케이스를 만들고 싶어. 아래는 우리가 만든 가상 요구사항이야. 상품 합계는 0보다 큰 정수 원 단위여야 해. 0, 음수, 소수 금액은 오류로 처리하고 결제 금액을 계산하지 않아. 쿠폰을 선택했을 때 할인 전 상품 합계가 30,000원 이상이면 10% 할인하되 할인액은 원 미만을 버리고 최대 5,000원까지만 적용해. 30,000원 미만에서는 쿠폰을 선택해도 할인은 0원이야. 쿠폰을 선택하지 않으면 할인은 없어. 다른 할인이나 세금은 없어. 기본 배송비는 쿠폰 할인 후 상품 금액이 50,000원 이상이면 0원, 그 미만이면 3,000원이야. 도서산간 지역은 무료배송 여부와 관계없이 3,000원을 추가해. 최종 결제 금액은 할인 후 상품 금액에 기본 배송비와 도서산간 추가비를 더한 값이야. 담당자가 바로 실행할 수 있는 테스트 케이스와 예상 결과를 만들어줘. 쿠폰을 선택한 일반 지역의 상품 합계 29,999 / 30,000 / 49,999 / 50,000 / 54,999 / 55,000 / 55,001원, 쿠폰을 선택한 도서산간 지역 55,000원, 쿠폰을 선택하지 않은 일반 지역 50,000원은 꼭 포함해줘. 잘못된 금액 입력과 놓치기 쉬운 경계값도 함께 검토하고, 무엇부터 테스트할지 네 판단도 알려줘. 쇼핑몰 쿠폰·배송비 기능 출시 전 QA 담당자가 즉시 활용할 수 있는 **테스트 케이스(TC)** 및 **우선순위 가이드**입니다. --- ## 1. QA 테스트 케이스 (Test Cases) ### A. 필수 포함 및 주요 경계값 테스트 케이스 (정상/할인/배송비 조건) | TC ID | 쿠폰 여부 | 배송지 | 입력 상품 합계 | 할인액 계산 과정 | 할인 후 상품 금액 | 기본 배송비 | 도서산간 추가비 | **예상 최종 결제 금액** | 비고 / 검증 포인트 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | **TC-01** | 선택 | 일반 | **29,999원** | 3만원 미만 $\rightarrow$ 0원 | 29,999원 | 3,000원 | 0원 | **32,999원** | 쿠폰 적용 최소 금액 미달 경계값 | | **TC-02** | 선택 | 일반 | **30,000원** | $30,000 \times 10\% = 3,000$원 | 27,000원 | 3,000원 | 0원 | **30,000원** | 쿠폰 할인 조건 진입 경계값 | | **TC-03** | 선택 | 일반 | **49,999원** | $49,999 \times 10\% = 4,999.9 \rightarrow$ 버림 **4,999원** | 44,999원 | 3,000원 | 0원 | **47,999원** | 소수점 버림 처리 검증 | | **TC-04** | 선택 | 일반 | **50,000원** | $50,000 \times 10\% = 5,000$원 | 45,000원 | 3,000원 | 0원 | **48,000원** | 최대 할인 적용 / 무료배송 금액 미달 | | **TC-05** | 선택 | 일반 | **54,999원** | 최대 한도 제한 $\rightarrow$ **5,000원** | 49,999원 | 3,000원 | 0원 | **52,999원** | 무료배송 조건 미달 경계값 (49,999원) | | **TC-06** | 선택 | 일반 | **55,000원** | 최대 한도 제한 $\rightarrow$ **5,000원** | 50,000원 | 0원 | 0원 | **50,000원** | 할인 후 5만원 달성 $\rightarrow$ 기본 무료배송 조건 경계값 | | **TC-07** | 선택 | 일반 | **55,001원** | 최대 한도 제한 $\rightarrow$ **5,000원** | 50,001원 | 0원 | 0원 | **50,001원** | 할인 후 5만원 초과 무료배송 유지 | | **TC-08** | 선택 | **도서산간** | **55,000원** | 최대 한도 제한 $\rightarrow$ **5,000원** | 50,000원 | 0원 | 3,000원 | **53,000원** | 기본 무료배송 + 도서산간 추가비 부과 검증 | | **TC-09** | 미선택 | 일반 | **50,000원** | 쿠폰 미선택 $\rightarrow$ 0원 | 50,000원 | 0원 | 0원 | **50,000원** | 쿠폰 미선택 시 할인 없음 및 무료배송 | --- ### B. 예외 처리 및 입력값 유효성 테스트 케이스 (오류 처리) | TC ID | 입력 상품 합계 | 예상 결과 (오류 처리 및 결제 금액) | 비고 / 검증 포인트 | | --- | --- | --- | --- | | **TC-10** | **0원** | 결제 금액 계산 불가. "상품 금액은 0원보다 커야 합니다." 에러 문구 노출 및 결제 진행 차단 | 0원 입력 처리 | | **TC-11** | **-10,000원** | 결제 금액 계산 불가. 에러 문구 노출 및 결제 진행 차단 | 음수 입력 처리 | | **TC-12** | **35,000.5원** | 결제 금액 계산 불가. "소수점 금액은 입력할 수 없습니다." 에러 문구 노출 및 결제 진행 차단 | 소수점 입력 처리 | | **TC-13** | **문자/공백/Special Code** | 결제 금액 계산 불가. 입력 필드 차단 또는 즉시 유효성 에러 처리 | 비정상 입력값 방어 | --- ### C. 놓치기 쉬운 추가 경계값 및 엣지 케이스 | TC ID | 조건 | 입력 상품 합계 | 할인 및 배송비 계산 logic | 예상 최종 결제 금액 | 검증 포인트 | | --- | --- | --- | --- | --- | --- | | **TC-14** | 쿠폰 선택 / 일반 | **1원** | 최소 금액 정상 입력값 / 쿠폰 할인 0원 / 기본 배송비 3,000원 | **3,001원** | 0보다 큰 최소 정수(1원) 처리 | | **TC-15** | 쿠폰 선택 / 일반 | **30,001원** | $30,001 \times 10\% = 3,000.1 \rightarrow$ 버림 **3,000원** | **30,001원** | 소수점 발생 시 원 미만 버림 처리 ($30,001 - 3,000 + 3,000$) | | **TC-16** | 쿠폰 선택 / 도서산간 | **29,999원** | 쿠폰 할인 0원 / 기본 배송비 3,000원 / 도서산간 3,000원 | **35,999원** | 유료 배송 조건 + 도서산간 추가비 이중 부과 | --- ## 2. 우선순위 가이드 (무엇부터 테스트할 것인가?) QA 진행 시 아래 **3단계 순서**로 실행하는 것을 권장합니다. 1. **1단계: 예외 처리 및 결제 차단 검증 (Blocker 방지)** * **대상:** TC-10 ~ TC-13 (0원, 음수, 소수점 입력) * **이유:** 잘못된 입력값이 시스템에 들어갔을 때 결제 연동 에러가 발생하거나 서버 장애로 이어질 수 있으므로, 입구 단계에서 올바르게 차단되는지 최우선 확인해야 합니다. 2. **2단계: 단올림/버림 및 경계값 이중 조건 검증 (핵심 로직)** * **대상:** TC-03, TC-05, TC-06, TC-08, TC-15 * **이유:** 특히 54,999원(TC-05)과 **55,000원(TC-06)** 구간은 쿠폰 최대 할인 한도(5,000원)와 무료배송 기준(5,000원 할인 후 50,000원)이 동시에 맞물리는 지점입니다. 1원 차이로 배송비 3,000원이 변동되므로 오차가 발생하기 가장 쉬운 핵심 구간입니다. 3. **3단계: 기본 정상 흐름 및 일반 지역/도서산간 조합 검증** * **대상:** TC-01, TC-02, TC-04, TC-07, TC-09, TC-14, TC-16 * **이유:** 쿠폰 선택 유무 및 도서산간 3,000원 추가 수수료가 무료배송 수수료 계산 결과에 영향을 주지 않고 독립적으로 정확히 가산되는지 확인합니다.
Claude · 2026-09-21 12:04–12:08 KST
쇼핑몰의 쿠폰·배송비 기능을 출시하기 전에 QA 테스트 케이스를 만들고 싶어. 아래는 우리가 만든 가상 요구사항이야.
상품 합계는 0보다 큰 정수 원 단위여야 해. 0, 음수, 소수 금액은 오류로 처리하고 결제 금액을 계산하지 않아. 쿠폰을 선택했을 때 할인 전 상품 합계가 30,000원 이상이면 10% 할인하되 할인액은 원 미만을 버리고 최대 5,000원까지만 적용해. 30,000원 미만에서는 쿠폰을 선택해도 할인은 0원이야. 쿠폰을 선택하지 않으면 할인은 없어. 다른 할인이나 세금은 없어.
기본 배송비는 쿠폰 할인 후 상품 금액이 50,000원 이상이면 0원, 그 미만이면 3,000원이야. 도서산간 지역은 무료배송 여부와 관계없이 3,000원을 추가해. 최종 결제 금액은 할인 후 상품 금액에 기본 배송비와 도서산간 추가비를 더한 값이야.
담당자가 바로 실행할 수 있는 테스트 케이스와 예상 결과를 만들어줘. 쿠폰을 선택한 일반 지역의 상품 합계 29,999 / 30,000 / 49,999 / 50,000 / 54,999 / 55,000 / 55,001원, 쿠폰을 선택한 도서산간 지역 55,000원, 쿠폰을 선택하지 않은 일반 지역 50,000원은 꼭 포함해줘. 잘못된 금액 입력과 놓치기 쉬운 경계값도 함께 검토하고, 무엇부터 테스트할지 네 판단도 알려줘.
**핵심:** 아래 케이스는 유효값 20건(필수 9건 + 추가 11건)과 오류 입력 10건입니다. 가장 먼저 볼 곳은 **쿠폰 할인 후 금액 기준의 무료배송 경계(54,999 / 55,000)** 입니다. 무료배송 판정을 할인 전 금액으로 잘못 구현하는 실수가 가장 흔하고 금액 영향도 크기 때문입니다.
**계산 기준:** 할인 = 쿠폰 선택 시, 합계 ≥ 30,000이면 min(⌊합계×10%⌋, 5,000), 아니면 0. 배송비 = 할인 후 금액 ≥ 50,000이면 0, 아니면 3,000. 최종 = 할인 후 금액 + 배송비 + 도서산간 3,000(해당 시).
## 1. 필수 케이스 (요청 항목)
| ID | 쿠폰 | 지역 | 상품 합계 | 할인 | 할인 후 | 기본 배송비 | 도서산간 | **최종 결제** | 확인 포인트 |
|---|---|---|---|---|---|---|---|---|---|
| TC-01 | O | 일반 | 29,999 | 0 | 29,999 | 3,000 | 0 | **32,999** | 쿠폰 최소금액 직전 |
| TC-02 | O | 일반 | 30,000 | 3,000 | 27,000 | 3,000 | 0 | **30,000** | 쿠폰 최소금액 경계 (이상) |
| TC-03 | O | 일반 | 49,999 | 4,999 | 45,000 | 3,000 | 0 | **48,000** | 원 미만 절사, 상한 직전 |
| TC-04 | O | 일반 | 50,000 | 5,000 | 45,000 | 3,000 | 0 | **48,000** | 할인 상한 정확히 도달 |
| TC-05 | O | 일반 | 54,999 | 5,000 | 49,999 | 3,000 | 0 | **52,999** | 할인 후 49,999 → 유료배송 |
| TC-06 | O | 일반 | 55,000 | 5,000 | 50,000 | 0 | 0 | **50,000** | 할인 후 50,000 → 무료배송 경계 |
| TC-07 | O | 일반 | 55,001 | 5,000 | 50,001 | 0 | 0 | **50,001** | 무료배송 경계 직후 |
| TC-08 | O | 도서산간 | 55,000 | 5,000 | 50,000 | 0 | 3,000 | **53,000** | 무료배송이어도 추가비 부과 |
| TC-09 | X | 일반 | 50,000 | 0 | 50,000 | 0 | 0 | **50,000** | 미선택 시 할인 없음, 무료배송 |
## 2. 추가 경계값 (유효 입력)
| ID | 쿠폰 | 지역 | 상품 합계 | 할인 | 할인 후 | 기본 배송비 | 도서산간 | **최종 결제** | 확인 포인트 |
|---|---|---|---|---|---|---|---|---|---|
| TC-10 | O | 일반 | 1 | 0 | 1 | 3,000 | 0 | **3,001** | 최소 유효 금액 |
| TC-11 | O | 일반 | 30,009 | 3,000 | 27,009 | 3,000 | 0 | **30,009** | 3,000.9 → 절사(반올림 아님) |
| TC-12 | O | 일반 | 50,001 | 5,000 | 45,001 | 3,000 | 0 | **48,001** | 상한 직후 (5,000.1 → 5,000) |
| TC-13 | O | 일반 | 1,000,000 | 5,000 | 995,000 | 0 | 0 | **995,000** | 고액에서도 상한 유지 |
| TC-14 | O | 도서산간 | 29,999 | 0 | 29,999 | 3,000 | 3,000 | **35,999** | 쿠폰 미달 + 추가비 합산 |
| TC-15 | O | 도서산간 | 54,999 | 5,000 | 49,999 | 3,000 | 3,000 | **55,999** | 배송비 + 추가비 중복 부과 |
| TC-16 | X | 일반 | 30,000 | 0 | 30,000 | 3,000 | 0 | **33,000** | 쿠폰 최소금액 충족이어도 미선택이면 할인 없음 |
| TC-17 | X | 일반 | 49,999 | 0 | 49,999 | 3,000 | 0 | **52,999** | 미선택 시 무료배송 직전 |
| TC-18 | X | 도서산간 | 50,000 | 0 | 50,000 | 0 | 3,000 | **53,000** | 미선택 + 도서산간 |
| TC-19 | O→X | 일반 | 55,000 | 0 | 55,000 | 0 | 0 | **55,000** | 쿠폰 선택 후 해제 시 재계산 (선택 상태 50,000 → 해제 후 55,000) |
| TC-20 | O | 일반→도서산간 | 55,000 | 5,000 | 50,000 | 0 | 0→3,000 | **50,000 → 53,000** | 지역 변경 시 재계산 |
## 3. 잘못된 금액 입력
**공통 기대 결과:** 오류 표시, 할인·배송비·최종 결제금액 모두 계산·표시하지 않음, 결제 진행 불가.
| ID | 입력 | 쿠폰 / 지역 | 비고 |
|---|---|---|---|
| TC-E01 | 0 | O / 일반 | 명세 |
| TC-E02 | -1 | X / 일반 | 명세 |
| TC-E03 | -30,000 | O / 일반 | 쿠폰 조건을 절댓값으로 처리하지 않는지 |
| TC-E04 | 0 | O / 도서산간 | 오류가 쿠폰·추가비보다 우선하는지 (3,000 등이 남지 않아야 함) |
| TC-E05 | 30,000.5 | O / 일반 | 소수 (명세) |
| TC-E06 | 0.5 | X / 일반 | 0 < x < 1 소수 |
| TC-E07 | 54,999.99 | O / 일반 | 소수, 무료배송 경계 근처 |
**명세에 없어 확인이 필요한 입력** (기대 결과는 제 가정입니다):
| ID | 입력 | 가정한 기대 결과 | 확인할 점 |
|---|---|---|---|
| TC-E08 | 빈 값 / null | 오류 | 요구사항에 명시 필요 |
| TC-E09 | "abc", "3만원" | 오류 | 입력 UI가 숫자 전용이면 N/A |
| TC-E10 | 30000.0 | 불명확 | "소수 금액"에 포함되는지. 정수값이면 허용할지 정해야 함 |
## 4. 명세 공백 (테스트 전 확인 권장)
1. 상품 합계의 상한이 있는가 (TC-13보다 큰 값, 정수 오버플로 포함)
2. 쉼표 포함 입력("30,000")을 허용하는가
3. 쿠폰 선택 + 30,000원 미만일 때 "적용 불가" 안내가 필요한가 (현재는 할인 0원만 명시)
## 5. 테스트 우선순위 (제 판단)
| 순서 | 대상 | 이유 |
|---|---|---|
| 0 | TC-09 (스모크) | 미선택 기본 경로가 깨져 있으면 이후 결과를 신뢰할 수 없음 |
| 1 | TC-05, 06, 07, 08, 15 | 무료배송 판정 기준이 "할인 후 금액"인지 확인. 오류 시 매 주문 금액이 틀어짐 |
| 2 | TC-01, 02, 16 | 쿠폰 발동 경계(30,000)와 선택 여부 의존성 |
| 3 | TC-03, 04, 12, 11 | 절사와 5,000원 상한 경계 |
| 4 | TC-E01~E07 | 입력 검증 (오류 시 결제 자체가 막히므로 영향은 크지만 구현 실수는 상대적으로 드묾) |
| 5 | TC-19, 20, 10, 13, 14, 17, 18 | 재계산과 나머지 조합 |
| 6 | TC-E08~E10 | 명세 확정 후 |
한 가지 가정: 최종 결제금액과 할인 후 금액을 화면에 각각 노출한다고 보고 검증 포인트를 잡았습니다. 결제금액만 노출되는 화면이라면 중간값 검증은 API 응답이나 로그로 바꿔야 합니다.