【软件测试篇5】如何设计测试用例

在前面的文章当中,也提到了什么是测试用例。

测试用例就是测试人员向被测试系统提供的一组测试数据。

包括:

测试环境、测试步骤、测试数据、预期结果。

那么,下面将来聊一聊,具体怎样设计测试用例。 

简称:两能、两性、安全、界面

目录

一、设计测试用例的万能思路(6个方面)

功能测试

对于软件:

性能测试

软件的性能

兼容性测试

软件的兼容性

易用性测试

对于软件

安全测试

对于软件

界面测试

软件的界面:

二、设计测试用例的方法

①基于需求进行测试用例设计

②等价类

根据等价类划分测试用例的步骤

1、确定有效等价类和无效等价类;

2、编写测试用例

③边界值(对于等价类的补充)

④判定表法

1、确认输入条件和输出条件

2、找出输入条件和输出条件之间的关系

3、画判定表

4、根据判定表编写测试用例

判定表法的优势 

因果图&判定表

⑤正交法

下面有一个需求是:

因素数(输入条件):

水平数(输入条件的可选项):

下载allpairs的步骤:

4、补充其他测试用例

⑥场景设计法(了解)

基本事件流:

备用事件流:


一、设计测试用例的万能思路(6个方面)

下面,通过一个例子:测试水杯来简单聊一下功能测试是什么样的

功能测试

 ①装水、喝水;

 ②水杯如果有安全刻度,那么到了安全刻度有没有溢出的风险。

 ③水杯是否是保温杯?如果是保温杯,保温功能怎样。

 ④水杯是否隔热?

 ⑤如果可以折叠,怎样折叠,支持反复折叠吗?


对于软件:

用户的基本功能需求是否可以实现。


性能测试

①如果是保温杯,那么保温的性能怎样?最久可以保温多久?

②如果有隔热功能,那么装的热水温度达到了多少摄氏度,用户会感觉到烫手?加入了沸水会烫手吗?

③抗摔性:在合理范围的高度内,测试水杯坠落的时候是否出现变形?破损?或者其他材质上面的损耗。

④水杯的使用寿命(最好以月为单位)

⑤合理的范围内测试耐热性耐冻性、耐腐蚀性

⑥水杯是否抗压?抗压性能怎样。


软件的性能

响应时间(1秒以内/或者2秒以内)。

多个人同时访问,服务器是否来得及响应


兼容性测试

既然是水杯,那么可不可以装下其他的液体,例如油、盐、汽水等等;

软件的兼容性

1、各个版本的操作系统是否兼容?

2、能否在各个浏览器上面兼容?

3、运行的环境:PC端,微信端,移动端等等。

4、能否在各个版本的浏览器、操作系统上面运行。


易用性测试

这个水杯是否便携

这个水杯是否老少皆宜

这个水杯开盖装水喝水的过程容不容易。


对于软件

用户的使用体验怎样?对于关键性的功能,是否可以令用户比较明显地看到?

对于不那么明显的功能,是否有明显的提示,有无用户的引导?


安全测试

这个水杯如果装了高温的水,那么会不会在水中检测出有毒的物质

如果装了其他的常见液体,会不会发生恶性的化学反应

这个水杯会不会在装了热水之后热胀冷缩发生爆炸。


对于软件

是否​​存在SQL注入的问题?

是否存在XSS漏洞

是否做好权限管理?包括垂直越权,水平越权。用户不登陆可不可以访问到需要访问的页面?

接口安全方面,是否对于一些重要的参数进行加密处理?例如用户的密码等等


界面测试

字面意思:水杯的外观怎样,例如:

形状是否合理、大小是否合理、颜色是否符合用户需求、是否有图案图案是否符合用户需求等。


软件的界面

文字/输入框/图片/下拉框.....颜色、形状、大小、形状、大小、布局。

是否存在错别字、病句、折行、折叠、重叠等都需要进行测试。


二、设计测试用例的方法

①基于需求进行测试用例设计

用户提出的需求是什么,那么软件开发就根据这一个需求来进行设计。

例如:邮箱注册,可以这样进行:设计测试用例:(脑图)

测试用例副本 - 百度脑图 (baidu.com)


②等价类

      分区分块:使用较少的测试用例达到符合的系统测试覆盖

概念:

       针对需求的输入范围划分为若干个等价类,从其中一个等价类当中取一个测试用例来进行测试。如果该测试用例通过,则认为该测试用例所在的等价类是通过的。


根据等价类划分测试用例的步骤

1、确定有效等价类和无效等价类;

有效等价类:针对需求来说,有效并且有意义的数据构成的集合。

无效等价类:针对需求来说,无效并且没有意义的数据构成的集合。

2、编写测试用例

针对每一个模块的有效等价类无效等价类分别设计测试用例

下面,举一个例子:

用户需求为:姓名的长度为6-200个字符的长度。

那么,就可以这样设计等价类:


③边界值(对于等价类的补充)

       边界值法通常是对于等价类的一种补充方法。一般都是在等价类设计的测试用例的基础上面,考虑一些比较临界的情况表而设计的测试用例。

       例如在上面的地方:需求为:密码长度为6-200字符。那么我设计的测试用例可以是在6(边界值),200(边界值),5(次边界值),7(次边界值),199(次边界值),201(次边界值)位的字符里面设计,测试这样的设计是否可以通过。


④判定表法

判定表法设计测试用例的步骤:

同样,现在有一个需求有待测试:

当用户名的长度>600字符的时候,那么提示用户名称过长。

当用户名称的长度<6字符的时候,那么提示用户名过短。

其余情况合格

1、确认输入条件和输出条件

输入条件:

条件Ⅰ:用户名的长度>600;

条件Ⅱ:用户名的长度<6;

条件Ⅲ:用户名的长度在【6,600】之间。

输出条件:

输出1:用户名合格;

输出2:用户名不合格;


2、找出输入条件和输出条件之间的关系

      关系有以下几种:   

       与:每一个条件结果才为true;

       或:有一个成立结果为true;

       非:输入为true,输出为false;

       其实就是首先对于输入条件和输出条件进行组合,然后判定哪些组合是合法的,哪一些是不合法的。

       条件Ⅰ:输出2;

       条件Ⅱ:输出2;

       条件Ⅲ:输出1。 


3、画判定表

       依据输入条件、输出条件以及输入条件输出条件对应的情况组成的二维表。建立如图所示的关系。

情况1    情况2         情况3  
输入条件:条件Ⅰ:用户名的长度>600Y
条件Ⅱ:用户名的长度<6Y
条件Ⅲ:用户名的长度在【6,600】之间Y
输出条件:用户名合格Y
用户名不合格YY

4、根据判定表编写测试用例

测试用例1:用户名长度>600,用户名不合格

测试用例2:用户名长度<6,用户名不合格

测试用例3:用户名长度在【6,600】之间,用户名合格

判定表法的优势 

适用优势:需要考虑输入输出之间的组合关系,不同的组合对应的输出结果不一致。


因果图&判定表

因果图画判定表法比较多余,而且因果图实际在设计测试用例的时候并没有多大的意义。

判定表当中根据输入、输出结果已经得出了测试用例了。


⑤正交法

下面有一个需求是:

用户注册信息填写:姓名、电子邮箱、密码、确认密码、验证码。

那么,可以认为:

因素数(输入条件):

姓名、电子邮箱、密码、确认密码、验证码。


水平数(输入条件的可选项):

对于因素数当中的内容,选择填写/不填写


下面,需要借助一个工具:allpairs来生成正交表。

下载allpairs的步骤:

下载官网:Allpairs - Satisfice, Inc.

然后点击下载:

下载到本地磁盘当中的时候,需要进行解压缩,变成一个普通的文件夹。

 然后,在pairs文件夹当中,写一个excel表格。接下来,可以在excel表格当中填写因素数&水平数

填写完成之后,在pairs目录下面,新建一个文件夹,命名为:革凡成圣.txt

 然后,打开cmd,切换到pairs所在的目录:

接着,继续在cmd当中输入以下内容:

 allparis.exe 革凡成圣.txt>hello.txt

 那么,这样的话,就可以生成正交表了。


4、补充其他测试用例

使用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;
                }
            }
        }
    }

步骤1:从参数上面进行测试

也就是此处传入的参数

有效等价类:

int类型、数组


无效等价类:

比如:

数组类型:String类型的数组、float类型数组,byte类型的数组等等;

其他对象类型:或者字符串类型,数字类型,集合类型等等;

长度:过大?过小等等;


步骤2:从代码逻辑上面来讲

对于循环语句、if条件判断等语句进行测试:

在上图的代码当中,对于最外层的循环进行标号:a,

第二层的for循环进行标号:b;

第三层的if语句进行标号:c

进行如下代码可能执行到的组合:ab,abc、ab否c 进行测试;

需要注意的是,不可以从不


步骤3:从代码性能上面进行测试

考虑数组如果长度过大,时间是否超时?空间复杂度会不会超


步骤4:考虑运行的异常情况

传入的参数是否会导致代码运行异常

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值