1. 等价类划分(Equivalence Partitioning)中如何确定有效等价类和无效等价类?请以'用户年龄输入(18-65 岁)'为例完整列出等价类并设计测试用例。
在等价类划分方法中,如何确定一个输入域的有效等价类和无效等价类,并以"用户年龄输入(18-65岁)"为例完整列出各类等价类并设计对应的测试用例?
- 有效等价类与无效等价类的概念界定
- 从输入规格中识别等价类边界线的方法
- 将等价类转化为可执行测试用例
有效等价类是指对程序规格说明合理、有意义的输入集合,程序应接受并正确处理这些输入;无效等价类是指对规格说明不合理、无意义的输入集合,程序应拒绝并给出错误提示。划分方法是先读规格找到输入条件,再按约束把输入域划分为离散的、内部等价的集合,最后为每个无效等价类单独设计用例。以年龄18-65为例:有效等价类为"18≤年龄≤65"(一个类);无效等价类为"年龄<18"、"年龄>65"、"非数字输入(如字母/符号)"、"空值"、"负数"(注意负数与非法字符可合并为无效类,但通常会单独列出更清晰)。典型测试用例包括:年龄=30(命中有效类)、年龄=17(无效)、年龄=66(无效)、年龄=abc(无效)、年龄为空(无效)。关键原则是每个无效等价类设计时应"一次只违反一个约束",以便准确判定该输入被拒绝的原因。
等价类划分的价值在于"用一个代表值覆盖整个类",从而用少量用例覆盖海量输入。有效等价类验证"好的输入被正常接受",无效等价类验证"系统对非法输入具备防御能力"。年龄例子中,18和65是边界但属于有效类,17和66属于无效类,这正好衔接边界值分析。确定有效/无效类的核心是"规格是否允许该输入",而非"用户是否可能输入"。
boolean isValidAge(int age) {
return age >= 18 && age <= 65;
}
// 断言:30→true, 17→false, 66→false, 0→false, 100→false