一、等价类划分的含义
划分的意思就是把全集分成多个集合。
等价类的意思就是在同一个等价类里的元素师等价的,用谁都一样。
那么把全集分成多个等价类每个等价类取一个用例便可以覆盖所有情况,来达到最全面的测试范围,以及最少的测试次数。
二、如何划分等价类
分好多种情况,主要看自己取的分类标准。要注意等价类之间无交集,各等价类并起来为全集
1.数值类:区间中部,区间外的两部分
2.性质:按数字(奇数偶数),是否是字母等等
只要能分出有效等价类和无效等价类就行
三、如何通过等价类写测试用例
目标是覆盖所有的等价类
编写测试用例的时候会有一个测试用例覆盖多个等价类,要注意的是最后所有都覆盖即可,有点重复的覆盖没有关系
例:
要求输入框内只能输入数字和字母,长度必须是1-6之间
有效等价类:
1.长度1-6
2.输入字母或者数字
无效等价类
1.长度0,大于6
2.输入字母数字以外的字符
编号 | 测试用例 | 期待输出 |
1 | ok | 正确 |
2 | 111 | 正确 |
3 | ok.. |
请输入字母或者数字 |
4 | 111.. |
请输入字母或者数字 |
5 | 1234567 |
请输入字符的长度为1到6 |
6 | 1234567.. | 请输入字母或者数字 |
关键objective-c代码
- (IBAction)ok:(id)sender {
NSString* input = _input.text;
UIAlertView* alert = [[UIAlertView alloc]initWithTitle:nil message:nil delegate:self cancelButtonTitle:@"ok" otherButtonTitles: nil];
NSString* rangestr = @"^([A-Z0-9a-z])*$";
NSRange range1 = [input rangeOfString:rangestr options:NSRegularExpressionSearch];
if (range1.location == NSNotFound) {
alert.message = @"请输入字母或者数字";
[alert show];
}
else if (input.length>6 || input.length==0){
alert.message = @"请输入字符的长度为1到6";
[alert show];
}
else{
alert.message = @"输入正确";
[alert show];
}
}
测试结果图