Three.js 几何图形变换 | 三维可视化 / AI 提示词
2026/6/10 15:23:58
publicvoidprocessUser(booleansuccess,intcode){if(success){if(code==200){System.out.println("处理成功");}else{System.out.println("处理失败");}}else{System.out.println("用户未登录");}}success=true,code=200→ 输出“处理成功”success=true,code≠200→ 输出“处理失败”success=false→ 输出“用户未登录”(忽略 code)但由于code只有在success=true时才被判断,当success=false时,code的值不影响流程。因此实际可行路径只有 3 条,而非理论上的 4 条(注意原题说“仅存在 2 个可行路径”略有偏差,应为 3 条)。更关键的是,由于数据之间的关联性(如success控制是否进入深层判断),许多理论路径不可达,导致路径覆盖难以完全实现。
✅ 实际应用中,常采用基本路径覆盖或分支覆盖来平衡测试成本与效果。
核心思想:将被测程序看作一个“黑盒”,测试人员不关心其内部结构、算法实现、代码逻辑,只关注:
✅ 优点:贴近用户视角,易于发现功能缺失或业务逻辑错误。
❌ 缺点:无法保证内部所有逻辑路径都被覆盖,可能遗漏代码级缺陷。
其中,等价类划分是最基础且广泛使用的技术之一。
分类:
| 类型 | 定义 | 示例(用户名长度要求6~18位) |
|---|---|---|
| 有效等价类 | 符合输入条件的合理数据 | 长度为8、12、15的字符串 |
| 无效等价类 | 不符合输入条件的非法数据 | 长度为3(太短)、20(太长)、空字符、特殊符号等 |
📌 使用该方法设计测试用例的步骤通常包括:
例如针对上述用户名规则:
"user12"(长度6)"ab"(长度2)、"this_is_too_long_username"(长度25)、""(空)结合等价类划分与边值分析设计测试用例,可以更全面地覆盖输入域的关键区域,尤其适用于具有明确输入范围的场景(如数值、字符串长度等)。其核心思想是:以等价类划分确定测试类别,再在边界附近选取典型值进行精细化测试。
假设需求:
用户注册时,密码长度必须为 8 到 16 位(含),且为有效字符串。
| 输入条件 | 有效等价类 | 无效等价类 |
|---|---|---|
| 密码长度 | 长度 ∈ [8, 16] | 长度 < 8 长度 > 16 空值(null 或 “”) |
对于区间[8, 16],边界值通常选择:
因此得到以下候选测试数据(按长度):
| 测试用例编号 | 输入(密码长度) | 预期结果 | 设计依据 |
|---|---|---|---|
| TC01 | 7 | 拒绝,提示“密码过短” | 无效等价类 + 下界外侧 |
| TC02 | 8 | 接受 | 有效等价类 + 下界 |
| TC03 | 9 | 接受 | 有效等价类 + 区间内 |
| TC04 | 15 | 接受 | 有效等价类 + 区间内 |
| TC05 | 16 | 接受 | 有效等价类 + 上界 |
| TC06 | 17 | 拒绝,提示“密码过长” | 无效等价类 + 上界外侧 |
| TC07 | “”(空) | 拒绝,提示“请输入密码” | 无效等价类(特殊输入) |
📌 注意:每次测试只引入一个“错误类型”,避免多个无效因素叠加导致错误被掩盖(例如不要同时测试“长度=17 且 包含非法字符”)。
| 方法 | 贡献 |
|---|---|
| 等价类划分 | 减少冗余测试,系统化分类输入 |
| 边值分析 | 聚焦最容易出错的边界区域(编程中常见 off-by-one 错误) |
二者结合后: