功能测试+界面测试+兼容性测试+安全测试+易用性测试+性能测试
针对有需求的案例来设计测试用例:邮箱注册,部分测试用例
https://zay1xofb7z6.feishu.cn/mindnotes/bmncnKD5Ak6GSZl3PRlWDgF9z3g#mindmap
一)等价类:
场景需求:姓名长度是6-200位,那么如何进行设计测试用例?
对于软件来说,开发人员实现需求里面的要求,也要避免实现需求里面没有要求的,不符合需求要求的你实现了,那么就是一个BUG
1)划分有效等价类和无效等价类
有效等价类:6-200
无效等价类:(0-5)&(200~+OO)
无效等价类更考验同学们的一个发散性思维
2)根据等价类来编写测试用例:
长度:针对于长度设计无效等价类,数字长度大于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
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来设计测试用例,也就是说会有遗漏的测试用例;
三)根据正交表编写测试用例
总结:如何使用allpairs工具生成正交表?
1)把因素数和水平数写入到excel表格中直接进行复制
2)找到allpairs文件夹路径,新建文本将因素数和水平数粘贴到文本中
3)打开cmd,cd到allpairs文件夹路径底下,找到allpairs.exe,在cmd上执行命令,找到allpairs.exe源文件>目标文件,目标文件就是我们生成的正交表
设计测试用例的方法:
5)场景设计法:
主要分为基本事件流和多个备用事件流
总结:找出场景中的每一个功能点,根据每一个功能点的正常的和异常的情况去设计测试用例
以ATM机取款为例:
插卡----->选择语言---->输入密码----->选择取款业务----->输入取款金额------->出钞------>吐卡
1)插卡
1.1)卡插反了,提示请重新插入卡
1.2)卡插错了,插入一些饭卡,会员卡,公交卡,其他无法识别的银行卡1.3)卡无效,卡的磁片消磁,损坏,提示该银行卡无效,注销卡;
2)选择语言
选择英语不能显示是中文,选择中文不能显示英语
3)输入密码
密码输入正确
密码输入错误
1)密码输入共有三次机会,密码第一次输入错误,第二次输入正确,可以取钱
2)密码前两次输入错误,第三次输入正确,可以取钱
3)三次都输入错误,吞卡/账户锁定
4)选择取款业务
1)充值服务
2)存款服务
3)转账服务
5)取款金额
5.1)输入钱数小于等于银行卡总金额,输入钱数大于银行卡金额(系统提示)
5.2)输入的不足整百,不是整百的倍数,选择超过5W的金额,选择刚好是5W的金额,选择小于5W的金额
5.3)超过每日取款限额
5.4)超过每日取款最大次数
5.4)ATM机没钱(输入余额小于银行卡余额)
5.5)取款时,确认取款钱数后,ATM机会吐出相应的钱数
5.6)比如说长时间不取吞出来的钱,ATM机会自动把吐出来的钱收回到ATM机里面
6)等待出钞
6.1)机器计算故障:机器故障导致不出钞,少出钞,多出钞票
6.2)机器停电,ATM机断电,断网,出现故障
6.3)当用户的所有操作都超时,就会出现吞卡,这是一种安全机制;
7)吐卡
7.1)忘记取卡,肯定要吞卡,防止卡丢了,这是一种保护机制
7.2)正常吐卡
7.3)不吐卡
编写测试用例:基本事件流+异常事件流
卡成功插入进ATM机,选择合适的语言,密码输入正确,输入小于银行卡余额的钱数,取钱成功,退卡
6)错误猜测法:这是根据测试人员的直觉,知识,经验,判断软件的哪一块有问题,找哪一个功能模块有问题,专门针对性的设计测试用例
验证码大小写是否进行区分?把输入的搜索信息的前后空格忽略
依赖于测试人员的个人工作经验和积累
测试人员可以用其他设计测试用例的方法设计需求的测试用例,用错误猜测法作为一种补充的方式,这个方法最后再用,一旦有遗漏的测试面,线上就会出现问题