为信用卡验证方法创建JUnit测试:三类测试技术的用例划分咨询
边界值分析测试用例设计方案
边界值分析核心聚焦输入的临界值、边界前后的取值,针对卡号和过期日期分别设计:
信用卡卡号(Luhn算法相关)
主流信用卡卡号长度范围为13-19位,结合Luhn算法特性设计用例:
- 13位有效卡号(Luhn验证通过):如
4111111111111,验证应通过 - 12位卡号(长度不足):无论是否符合Luhn规则,直接验证失败
- 19位有效卡号(Luhn验证通过):如
4917300800000000000,验证应通过 - 20位卡号(长度超限):直接验证失败
- 13位卡号临界Luhn失败:将上述13位有效卡号最后一位改为
2(4111111111112),Luhn验证失败,整体验证失败 - 空卡号:
"",非法输入,验证失败 - 全零13位卡号:
"0000000000000",长度合法但Luhn验证失败,整体失败
过期日期(假设格式为MM/YY)
围绕有效期临界时间和格式边界设计用例:
- 当前月份(已过期):若当前为2024年5月,输入
05/24,验证失败 - 当前月份下一月(刚生效):输入
06/24,验证通过 - 最小合法月份:
01/25(年份为未来),验证通过 - 最大合法月份:
12/25,验证通过 - 非法月份:
00/25(月份为00)、13/25(月份为13),均验证失败 - 最远未来年份:
12/99(系统支持的最远年份),验证通过 - 最近过期年份:
12/23(当前为2024年),验证失败 - 格式不合法:
01/2(年份仅1位)、1/24(月份仅1位,若方法不支持单数字格式),验证失败
因果图法测试用例设计方案
因果图先梳理**输入条件(因)和输出结果(果)**的逻辑关系,再转化为测试用例:
输入条件(因)
- 卡号长度在13-19位(合法)
- 卡号通过Luhn算法验证
- 过期日期格式为
MM/YY,月份01-12,年份为2位数字(合法) - 过期日期未过期(年份≥当前年,同年则月份≥当前月)
输出结果(果)
- 验证通过(Success)
- 验证失败(Failure)
逻辑规则
只有四个条件全部满足时,才会返回验证通过;任意一个条件不满足,都返回失败。
测试用例组合
- 卡号长度合法+Luhn通过+日期格式合法+日期未过期 → 验证通过
- 卡号长度不合法+Luhn通过+日期格式合法+日期未过期 → 验证失败
- 卡号长度合法+Luhn不通过+日期格式合法+日期未过期 → 验证失败
- 卡号长度合法+Luhn通过+日期格式非法+日期未过期 → 验证失败
- 卡号长度合法+Luhn通过+日期格式合法+日期已过期 → 验证失败
- 卡号长度不合法+Luhn不通过+日期格式非法+日期已过期 → 验证失败(多条件不满足的极端场景)
- 卡号长度合法+Luhn通过+日期格式合法+日期刚好当月(已过期) → 验证失败
- 卡号长度合法+Luhn通过+日期格式合法+日期为下一月(刚生效) → 验证通过
JUnit落地示例
边界值用例可针对每个临界值单独编写测试方法:
@Test void testValidMinLengthCard() { assertTrue(CreditCardValidator.validate("4111111111111", "06/25")); } @Test void testInvalidShortCard() { assertFalse(CreditCardValidator.validate("411111111111", "06/25")); }
因果图用例覆盖了所有逻辑分支,确保没有遗漏的判定场景
内容的提问来源于stack exchange,提问作者Adrian Floroiu
相关产品推荐
相关产品推荐

