目录
![](/qrcode.jpg)
如何设计测试用例?
测试用例就是测试人员向被测试系统提供的一组测试数据。
它包含了测试环境,测试步骤,测试数据,预期结果等等
那么我们如何来设计测试用例?
记住两能(功能,性能),两性(易用性,兼容性),界面(UI,外观),安全
设计测试用例的万能公式
我们以网页的一个登录页面来进行设计测试用例;
①功能测试 (用户的基本功能需求)
如登录页的基本功能:登录,找回密码,二维码登录,记住密码,记住账号等等。
设计出来的测试用例可以是这样:
②性能测试
对于非软件来说,性能可以有耐寒性,耐高温性,耐腐蚀性,保温性,使用寿命,抗压性,耐摔性等等很多。对于我们软件来说,需要经常考虑这几个方面;
1、响应时间(1s以内或者2s以内)
2、多个用户同时访问,服务器是否响应,或者响应时间等等
如登录页:
③易用性(考虑用户体验)测试
易用性主要是考虑用户的使用体验,要适合用户去使用,千万不能搞的不当人的那种。
如:关键功能是否容易看到,操作起来是否方便,必要的功能是否会有提示,是否有使用教程等等
如登录页:
④兼容性测试
常见的兼容性有以下几个:
1、各个版本的操作系统是否兼容?
2、能否在各个浏览器上面兼容?
3、运行的环境:PC端,微信端,移动端等等。
4、能否在各个版本的浏览器、操作系统上面运行。
5、能否在不同分辨率下兼容
如果是物体,比如说水杯,它的兼容性可以考虑,水杯能否装一些饮料,装一些其他液体等等,你要是想要用水杯泡泡面,你可以试一试(手动滑稽)
比如登录页:
⑤界面(UI,外观)测试
对于物体来说就是外观,比如形状,颜色,大小,图案等等方面
而对于我们软件来说主要有以下几个方面:
1、页面布局是否合理
2、页面是否有错别字,病句
3、 文本框/输入框大小形状颜色等等是否合理
4、界面的设计是否符合页面的需求
5、密码等隐私信息是否支持密文等等
如登录页:
⑥安全测试
对于物体而言是在使用过程中可能出现的安全隐患,如爆炸,发生化学反应,高温,有毒物质等等。
对于我们软件而言主要有以下几个方面:
1、是否存在SQL注入
2、是否存在XSS漏洞
3、是否存在脚本攻击
4、是否有权限设置,用户信息认证,人脸识别
5、接口安全,私密信息以及参数是否进行加密
这里放一个完整的登录页面的测试用例设计(个人小白书写):
常用黑盒测试方法
首先最基本的一种测试方法时根据需求来进行测试用例的设计。这种方法是比较单一的方法,如果只根据需求来进行测试用例的设计难免会有很多地方考虑不到。所以我们引入使用黑盒测试的一些方法来进行弥补(注意:所以的测试用例设计的根本在于需求)
①等价类划分法
等价类简单来说就是将数据划分集合,也就是将输入划归为不同的等价类,从每一个等价类中抽取数据进行输入,如果结果满足需求则为有效等价类,否则为无效等价类,这样可以达到用少量的测试用例完成尽量多的功能覆盖的目的,解决了不能穷举测试用例的问题。
等价类的划分无非就两种情况:有效等价类、无效等价类
比如登录页面用户名限定长度6-15位,那么6位及以上,15及以下的都为有效等价类,其余的是无效等价类,如果还不明白,那么我们去超市买水果,葡萄,草莓,西瓜就是有效等价类,白菜,土豆,大米就是无效等价类。
②边界值分析法
通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界
其主要的测试点 是对“输入”或“输出”的“边界”值进行测试
这里说一下几个边界值的概念
1、上点:边界上的点(不关区间的开闭)
2、内点:边界内的点
3、离点:上点附近的点(当上点为闭区间的点时,离点为该点的外侧,当上点为开区间的点,离点为该点的内侧)
举例;
③判定表分析法(因果分析法)
因果图也是黑盒测试中常用的一个方法,它主要用于测试有多种输入,并且结果会依赖于输入的情况而有所不同的场景。因果图就是一个带有输入(不同情况),和相应的输出的一个图,输入是因,输出是果,在因果图中常用到以下几个逻辑:
恒等:输入为真,输出为真
与:所有输入都为真,输出才为真
或:输入中有一个为真,则结果为真
非:输入为真,结果为假,输入为假,结果为真
判定表分析法设计测试用例的步骤:
现在用一个功能需要测试:
用户名长度在大于15的时候,提示用户名过长。
用户名长度在小于6位的时候,提示用户名过短。
1、确认输入条件和输出条件
输入条件:
条件一:输入用户名长度在6-15位
条件二:输入用户名大于15位
条件三:输入用户名小于6位
输出条件:
1、用户名通过
2、用户名不通过
2、找出输入条件和输出条件之间的关系
条件一输出1
条件二输出2
条件三输出2
3、画判定表
4、根据判断表书写测试用例
测试用例1:用户名长度在6-15位,用户名通过。
测试用例2:用户名长度>15位,用户名不通过。
测试用例3:用户名长度<6位,用户名不通过。
判断表分析法的优势:
特别适用于需要考虑输入输出之间的组合关系,不同的组合对应的输出结果不一致的情况。
不画因果图的原因:因果图画判定表显得比较多余,实际情况下在判定表中根据输入输出就可以得到测试用例了。
④正交法
正交法的目的是为了减少用例数目。用尽量少的用例覆盖输入的两两组合。
这里以一个需求为例:
注册:用户名,邮箱,密码,确认密码,验证码
在这里面:
因素(输入条件) :用户名,邮箱,密码,确认密码,验证码
水平(输入条件的可选项) :输入条件中可填写,可不填写
用正交法的时候我们需要借助一个工具来实现正交表
下载allpairs:官网下载https://www.satisfice.com/download/allpairs#
下载即可。
然后在Excel中填写因素和水平:
填写完成后在allpairs下新建一个txt文件:20230511.txt
然后把Excel中数据复制进去:
保存后打开cmd切换到allpairs在的目录:
然后输入allpairs.exe 20230511.txt > 20230511_result.txt
正交表就出现在 20230511_result.txt中了
这部分就是我们要的正交表:
使用allpairs生成的内容,不一定完整。于是,还需要新增一些其他的测试用例。
比如这个还需要补充所有输入都不填写的情况。
⑤场景设计法(了解)
主要分为基本事件流和多个备用事件流。
基本事件流:
对于一个场景的最基本的事件流。
备用事件流:
对于一个业务可能发生异常情况的场景进行测试。
⑥错误猜测法(了解,这个方法主要是靠测试的经验)
这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个人的经验和直觉。
如何针对代码进行测试用例的设计
例如:冒泡排序
private static void bubble(int[] array) {
for(int i=0;i<array.length;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
int tmp=array[j];
array[j]=array[j+1];
array[j+1]=tmp;
}
}
}
}
①从参数上进行测试
如等价类划分法:
有效等价类:参数是int数组
无效等价类:参数是float数组,String数组,double数组,字符串,集合等等
②从代码逻辑上进行测试
判断for循环的执行,以及嵌套循环的执行和条件语句的判断及执行。
③从代码性能上面进行测试
数组过大的情况?时间复杂度,空间复杂度等等
④考虑运行的异常情况
传入参数后运行是否异常