测试流程之如何设计测试用例

前言:在功能测试中测试人员使用的测试用例设计方法大多都是黑盒用例设计方法,黑盒用例设计方法有其中又以等价类划分法、边界值分析法为使用最多的方法,同时等价类和边界值也是最简单的,但这二个方法根据自身的属性,如果测试人员稍有不留意就会造成数据的遗漏,今天就主要分析一下测试人员是如何使用这二种方法的。

1 如何编写测试用例

测试人员应该怎样编写一份高质量的测试用例?

1.测试用例设计方法

等价类划分法

边界值分析法

因果图

决策表

正交试验

场景法

状态迁移

错误推测法

2.测试用例的组成元素

用例编号

用例标题

功能模块名称

前置条件

输入数据

操作步骤

预期结果

优先级

执行结果

编写人

执行人

以上元素在一个测试用例中并不是需要完全包括,但是像用例编号,用例标题,前置条件,输入数据,操作步骤,预期结果,优先级,执行结果则是每一条测试用例必要元素。

3.用例标题

  • 字数不能太多
  • 概括性-看到标题就能清楚这条用例测试点是什么
  • 不能歧义性

4.测试用例的特点

  • 步骤清晰

操作步骤要清楚明了,如果刚开始不知道怎么写,建议就按执行测试的步骤一步一步写清楚

例如现在有一个QQ登录成功的用例,操作步骤就可按如下写:

1.点击QQ应用程序

2.输入正确的用户名

3.输入正确的密码

4.点击登录

  • 结果唯一

一条测试用例只允许有一个测试结果;一条测试用例只包含一个测试点;一条测试用例可以有多个检查点;预期结果中不要包含有歧义性或二义性的字

  • 可操作性强

这一点主要体现在不同的测试人员在不同的测试平台上运行,最终的结果都是相同的

注意点:不管是用例标题还是预期结果,尽量不要使用含糊不清的语句

2 用例设计方法

1.等价类划分法

等价类划分法,顾名思义,就是指将界面上的输入框的输入域看成一个大饼,然后又根据某方面输入值之间等价性进行划分,再而从每个等价域中选取少量具有代表性的数据做为测试用例的输入数据。每个等价类值又根据是否对程序有无作用,而分为有效等价类和无效等价类。

有效等价类:此类中值对程序来说是有意义的、合理的,可检验程序是否实现了需求规格说明中所规定的功能和性能

无效等价类:此类中的值正好相反,对程序来说是不合理的、无意义,输入此类中值程序无法实现相应的功能和性能,但是不是说程序不会对此类中值有反应,从程序的健壮性来考虑,程序也应该对此类中的值做出正确的反应。

等价类划分的原则:

1、按区间划分

在输入条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类

2、按数据集合划分

在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类(该集合有效值以外)

3、按数据布尔值划分

在输入条件是布尔值的情况下,可确定一个有效等价类和一个无效等价类

4、按数值划分

要规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类

5、按限制条件或规则划分

在规定了输入数据必须遵守的规则情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)

6、按细分等价划分

在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类

根据以上的原则将输入域的值从不同的维度进行划分后,就可以在每个等价类中选取少量的、并具有代表性意义的值作为程序的输入数据,并开始设计测试用例。其实在设计测试用例数据时,测试人员不仅要考虑输入域,还需要考虑输出域,输出域的等价类划分和输入域的划分相同。

设计测试用例的方法:

1)设计新的测试用例,使其尽可能多地覆盖未覆盖的有效等价类,按照这一步骤重复进行,直到所有的有效等价类都被覆盖为止

2)设计新的测试用例,使其只覆盖一个尚未被覆盖的无效等价类,按照这一步骤重复进行,直到所有的无效等价类都被覆盖为止

注意点:一条测试用例只能包含一个无效等价类,这一点是非常重要的,就像测试人员经常说一条测试用例只包含一个测试点一样。如果是测试新手刚开始不能一下子理清有效等价类和无效等价类,可以先输出一个等价类表,然后再根据等价类表和设计测试用例的方法输出测试用例。

2.边界值分析法

边界值分析法经常用于对等价类划分法完成之后作的补充,但这也是必不可少的,原因就是程序的大量错误是发生在输入或输出范围的边界上的,而不是在输入范围的内部,因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。

所谓的边界是指相当于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。边界值分析不仅考虑输入条件,还要考虑输出空产生的测试情况。空值(空格,null)是比较特殊的情况,在设计测试用例时尤为需要注意。

边界值分析的值:

内点:域内的任意点都是内点

上点:指边界上的点,无论此时域是开区间还是闭区间,上点就是域的上限与下限值

离点:指的就是离上点最近的点,这里就跟闭区间还是开区间就有关系了,如果是开区间,那么离点就在域内,如果闭区间,那么离点就在域外(开内闭外)

例如:输入框的输入数据范围为3-6(包含3和6),则内点是4,5;上点是3,6;离点是2,7。

边界值分析的原则:

  • 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据(内点,上点,离点)
  • 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据
  • 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
  • 如果程序中使用的一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例
  • 分析规格说明,找出其他可能的边界条件

边界值分析法不仅可以针对输入框中数值进行分析,对于下拉框、空间都是可以进行分析的。

黑盒用例设计方法除了以上二种还有很多,测试人员在编写测试用例时不需要强制要求使用哪一种方法,并且在编写用例过程中,一般都需要搭配多种设计方法共同编写,以满足测试用例对需求规格说明书的最大覆盖。

原文发布于微信公众号 - 资深Tester(zishentester)

原文发表时间:2017-11-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Knapsack problem algorithms for my real-life carry-on knapsack

I'm a nomad and live out of one carry-on bag. This means that the total weight o...

982
来自专栏成长道路

org.apache.spark.sql.AnalysisException: Table or view not found: `traintext`.`train`; line 1 pos 14;

恭喜老铁,跟我遇到了一样的问题,接下来是解决方法: 遇到的问题: org.apache.spark.sql.AnalysisException: Table o...

7870
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

3838
来自专栏智能计算时代

IBM Research: WatsonPaths

A new cognitive computing project that enables more natural interaction between ...

2967
来自专栏GIS讲堂

Openlayers2唯一值渲染

612
来自专栏草根专栏

适合在Markdown里面使用的emoji

因为Markdown里面加颜色需要写html style, 所以对于一些标题, 还是用一下emoji吧: RED APPLE (&#x1F34E;): ? GR...

2654
来自专栏SAP最佳业务实践

SAP S/4 HANA新变化-CO物料帐(for Ver.1610)

Material Ledger Actual Costing has been activated already in the system before t...

4245
来自专栏JAVA高级架构

程序员的春节对联集锦

上联:为系统而生,为框架而死,为debug奋斗一辈子! 下联:吃符号的亏,上大小写的当,最后死在需求上! 横批:杯具程序员。 上联:算法数据思路清晰 下联:编译...

2524
来自专栏闵开慧

Software caused connection abort: socket write...

严重: Servlet.service() for servlet default threw exception java.net.Socke...

39411
来自专栏遊俠扎彪

删除Windows右键新建文件类型

Win+R 运行regedit,效果如下:

2129

扫码关注云+社区