功能测试+界面测试+兼容性测试+安全测试+易用性测试+性能测试
针对有需求的案例来设计测试用例:邮箱注册,部分测试用例
https://zay1xofb7z6.feishu.cn/mindnotes/bmncnKD5Ak6GSZl3PRlWDgF9z3g#mindmap
一)等价类:
场景需求:姓名长度是6-200位,那么如何进行设计测试用例?
对于软件来说,开发人员实现需求里面的要求,也要避免实现需求里面没有要求的,不符合需求要求的你实现了,那么就是一个BUG
1)划分有效等价类和无效等价类
有效等价类:6-200
无效等价类:(0-5)&(200~+OO)
无效等价类更考验同学们的一个发散性思维
2)根据等价类来编写测试用例:
练习:针对需求密码是6-20位的数字来设计无效等价类
长度:针对于长度设计无效等价类,数字长度大于6小于20
无效等价类:
1)只包含数字位数小于6或者是位数大于20
2)不仅仅位数小于6或者位数大于20,不只是包含数字,但是在正确范围之外又出现数字的其他符号
2)虽然位数大于6或者是位数小于20,但是不仅仅包含数字还含有其他符号,也就是在正确范围内有出现数字的其他符号;
有效等价类:对于程序的规格说明书是合理的,有意义的输入数据组成的集合,利用等价类验证程序是否实现了规格说明中所规定的功能和性能;
无效等价类:根据需求说明书,不满足需求的集合;
1)对于我们上面说的if语句,有效等价类就是a>10的数据,无效等价类就是a<=10的数据
2)例如我想要去商店买水果,有效等价类是苹果,桃子和梨,无效等价类是饮料,米
if(a>10) { printf("a大于10"); } b=a; printf("b等于a"); } 这时把a>10的数据归到一个等价类中 把所有小于10的数据归到一个等价类中 例如拿1和15举例子
输入用户名(必填项):字符类型A-Z,不区分大小写,长度是6-15位任何长度(6和15就是边界)
1)有效等价类:A-Z,a-z,大小写混合,大于等于6位,小于等于15位;
2)无效等价类:汉字,特殊符号#,?(),!,数字,空格,字母和前面符号的混合,小于6位,大于15位;
二)边界值法:
2.1)定义:边界值是对等价类的补充,边界值分析法就是对输入或者输出的边界值进行测试的一种黑盒的测试方法,通常边界值分析法是对等价类划分法的补充,这种情况下其测试用例来自于等价类的边界;
2.2)特点:针对我们的输入输出的边界进行测试用例的设计,因为边界是一种特别出现错误的地方,是一种黑盒测试方法;
2.3)需求:活动截止日期是7.14,变量是datetime;
if(datetime<7.15 00.00.00)
if(datetime<=7.14 23.59.59)
2.4)我们的边界值法就可以这么写,这就是边界值的重要性;
2.5)1的边界值是0和2,-1的边界值就是-2和0
时间:7月14号00:00:00 23:59:58,7月15日00:00:00 0:0:0
1)for循环(int i=0;i<arr1.length();i++),因为往往会出现问题,买一个小于3000元的智能手机,3000就是一个边界点;邮件小于24小时有效,24小时就是一个边界点,我们可以对23小时59分进行测试,和24小时01分开始测试;
2)还有6-15位,那么就要对5,6 ,7和14位,15位,16位边界点进行测试;
3)设计测试用例的时候,会把等价类和边界值结合在一起用于进行测试用例的设计;
三)判定表:
1)定义:逻辑图,当输入有多个,并且不同的输入组合对应着不同的输出,可以用因果图法来分析这个输入和输出之间的逻辑关系,来设计测试用例,有效地防止漏测;
使用场景:需要进行考虑输入之间的组合关系,不同的组合关系对应的输出结果不同;
输入有多个,不同的输入组合有不同的输出,为了防止漏测,就要用因果图来设计测试用例
2)需求:淘宝618活动,订单已经提交,订单总金额大于300元或者订单有红包,则认为该订单属于有优惠的订单,否则认为此订单没有优惠的订单
3)判定表设计测试用例的步骤:
1)确认输入条件和输出条件
2)找到输入条件和输出条件之间的关系
3)画判定表
4)根据判定表来编写测试用例
一)确认输入输出条件
输入条件:
1)是否提交订单?输入:提交订单,没有提交订单;
2)订单金额是否大于300?输入:金额大于300元或者小于等于300元
3)是否有红包?输入:订单有红包,订单无红包
输出条件:
输出(订单类型):有优惠,没有优惠
二)确认输入输出条件之间的关系
A:提交订单,B:没有提交订单
C:金额大于300元,D:金额小于300元
E:订单有红包,F:订单没有红包
因为所有的情况都要包含A和B,根据排列组合,划分除了以下几种情况:
ADE,ADF,ACE,ACF,BCE,BCF,BDE,BDF,AC,AD,AE,AF
订单已提交,没有红包,订单大于300,有优惠
订单已提交,有红包,金额大于300,有优惠
订单已提交,有红包,订单小于300,有优惠
订单已提交,没红包,订单没有大于300,没有优惠
订单未提交,有红包,订单大于300,没有优惠
订单未提交,无优惠;
红包和金额组成了四种情况:
1)订单没有提交,金额大于300,有红包,没有优惠
2)订单没有提交,金额大于300,没有红包,没有优惠
3)订单没有进行提交,金额小于300,有红包,没有优惠
4)订单没有提交,金额小于300,没有红包没有优惠
三)画判定表:画判定表,使用飞书新建表格
四)根据判定表来编写测试用例
进行组合情况:
四)正交表
定义:针对输入条件进行排列组合,研究多水平,多因素的一种测试用例的设计方法
因素数:输入的条件的个数
水平数:输入的条件对应的取值,不是输出结果
多因素:输入类型的种类,比如说订单已提交,有红包,金额大于300 多水平:对于每一种输入的取值,因素的取值,例如订单已经提交,订单没有进行提交,金额大于300,金额小于300,有红包,没有红包
正交表的性质:想让我们设计正交表非常难,呜呜呜,但是有一个专门生成正交表的工具
1)每一列中,不同的数字出现的次数相等,例如在两水平正交表中,任何一列都有数码"1"与"2",且任何一列中它们出现的次数是相等的,如在三水平正交表中,任何一列都有"1"、"2"、"3",且在任一列的出现数均相等
2)任意两列的数字的组合次数是相同的,假设第一列和第三列进行组合,第一列中的第一行和第三列第一行组合成了ac,又发现第一列的第四行和第三列的第四行有组成了ac,这里的组合是存在先后顺序的,从左向右看,这样子ac组合就出现了两次;那么假设说如果第一列的第二行和第三列的第二行组成的字母组合是bc,那么必定第一列的第N行和第三列的第N行的组成序列是bc,也一定出现两次;
正交表设计测试用例的方法:
根据正交表设计测试用例的步骤:
1) 找出因素数和水平数
2)确定每一个因素的水平
3)根据因素数和水平数确定正交标的行和列
4)根据正交表的性质去填充正交表里面的数据
5)根据正交表的每一行设计测试用例,正交表里面的填写的值都是水平数
6)补充正交表里面没有的,但是你认为比较关键的测试用例
例子:平台支持邮箱注册功能
例如说邮箱注册,在这种情况下只考虑填写和不填写两种情况
填写姓名,邮箱,密码,确认密码,验证码
一)找出因素书和水平数
因素:姓名,邮箱,密码,确认密码,验证码
水平:填写,不填写
针对所有的因素,只有相同的两种取值,就是填写和不填写
二)确定行和列
行=(水平数-1)*因素数+1;
列=因素数
因素数:5
水平数:2
列=因素数=5,行=(水平数-1)*因素数+1=6
为了验证注册的这5个必填项分别在填写和不填写各种情况下的表现,只要这里面有不填写的项,就都会注册失败
三)画正交表:
四)根据正交表编写测试用例
根据这个正交表此时就可以写测试用例了,测试用例为等等等
1)姓名输入,邮箱不输入,密码输入,确认密码输入,验证码不输入,注册失败
2)姓名输入,邮箱输入,密码不输入,密码不输入,验证码不输入,注册失败
五)补充测试用例
除此之外还要考虑姓名,邮箱,密码,确认密码,验证码全部输入;
姓名,密码,邮箱,确认密码,验证码全部不进行输入;
第二种方案:
1)找到因素数和水平数
2)使用allparis工具来生成正交表
3)根据正交表来填写测试用例
4)补充测试用例
一)找到因素数和水平数
因素数:姓名,电子邮箱,密码,确认密码,验证码
水平数:填写和不填写
二)使用allpairs工具生成正交表,不再使用计算行和列的方式
2.1)下载pairs压缩包进行解压缩,解压缩生成正常的文件夹之后,打开文件看到了allpairs.exe文件
2.2)在飞书里面或者是excel表格里面列出所有的因素数和水平数
2.3)在这个文件夹目录下面新创建一个文本文档txt,把在excel表格中的因素数和水平数进行复制粘贴
2.4)直接点击ctrl+s保存,将文件保存
2.5)打开控制台,直接进行运行
2.5.1)先切换到D盘
2.5.2)切换到pairs目录
2.5.3)执行exe文件,命令里面指明源文件和最终要生成的文件
注意:使用allpairs生成的正交表和实际的正交表有出路,但是仍然是不会影响到我们使用allpairs来设计测试用例
三)根据正交表编写测试用例