测试用例及设计测试用例的常用方法

黑盒测试就当整个程序是个黑盒子,我们看不到它里面做了些什么事情,只能通过输入输出看是否能得到我们所需的来测试。而白盒测试可以当盒子是透明的,里面的一切我们都看的清楚,从而我们可以通过去测内部结构来测试。 

黑盒测试测试用例

黑盒测试又称为功能测试、数据驱动测试或基于规格说明书的测试,是一种从用户观点出发的测试。测试人员一般把被测程序当作一个黑盒子。

黑盒测试主要测到的错误类型有:不正确或遗漏的功能;接口、界面错误;性能错误;数据结构或外部数据访问错误;初始化或终止条件错误等等。

测试用例是为了实施测试而向被测试的系统提供一组集合,这组集合包括:测试环境、操作步骤、测试数据、预期结果等。

测试用例的基本要素

标题、测试思路、预设条件、步骤、预期输出。

好的测试用例的标准

* 用例表达清楚,无二义性;
* 用例可操作性强;
* 用例的输入与输出明确,一条用例只要一个预期结果;
* 用例的可维护性好;
* 用例对需求的覆盖率高;
* 暴露程序Bug的能力强。

测试用例的设计方法

测试用例常见的设计方法有:等价类划分法、边界值分析法、错误推测法、判定表法、正交实验法、场景设计法。

一、等价类划分法

1.定义

将测试的范围划分为几个互不相交的子集,它们的并集是全集,从每个子集中选出若干个具有代表性的值作为测试用例。

2.划分等价类

(1)有效等价类
指对于程序的规格说明是合理的、有意义的输入数据构成的集合。
(2)无效等价类
指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。
设计测试用例时,需要考虑这两种等价类,软件不仅要接受合理的数据,也要接受意外的考验,这样的测试才能确保软件具有更高的可靠性。

3.实例

例如,测试一个用户名是否合法,用户名的定义为8位数字组成的字符。
第一步,划分子集。
(1)1-7位数字;
(2)8位数字;
(3)9位及其以上的数字;
(4)非数字。
第二步,从每个子集选取若干个有代表性的值。
(1)空用户名;(无效等价类实例)
(2)123;(1-7位数字,无效等价类实例)
(3)88888888;(8位数字,有效等价类实例)
(4)123456789;(9位及其以上的数字,无效等价类)
(5)def*#>>+;(非数字,无效等价类)

其实,等价类的划分不是固定的,可以更进一步划分,划分的更细,如何划分要根据实际情况定的。

二、边界值分析法

1.定义

对输入或者输出的边界值进行测试的一种黑盒方法。通常,边界值分析法是对等价类划分方法的补充,其测试用例来自于等价类的边界。
选出的测试用例,应选取min,min+,max-,max。

2.常见的边界值

(1)16比特位的整数,32767、-32768是边界;
(2)数组元素的第一个和最后一个;
(3)屏幕光标在 最左上和最右下的位置;
(4)报表的第一行和最后一行;
(5)循环的第0次、第1次、倒数第二次和最后一次。

3.实例

例如,假设a是整数,1<=a<=99,那么a在测试中应该选取的边界值是:1、2、98、99。

三、错误推测法

1.定义

错误推测法是经验丰富的测试人员惯用的一种测试方法。根据经验和直觉,找出程序中可能出现的错误,有针对地设计测试用例,没有固定的格式。

2.实例

例如,注册一个用户。我们可以从以下几个方面推测可能会出现问题。
(1)校验中特殊字符空格的处理;
(2)密码校验的大小写问题;
(3)姓名中出现特殊字符如何处理;
(4)密码是否可见。

四、判定表法

1.定义

又称策略表,基于策略表的测试,是功能测试中最严密的测试方法,利于逻辑判断复杂的场景,通过穷举条件获得结果,对结果再进行优化合并,最终得到一个判断清晰的策略表。

2.实例

例如,双十一是无数美眉的福音,这一天在淘宝上可以用比以往少的价钱淘到自己喜欢的对象,就会有这样的活动,满300元或者领店铺的红包就可以有优惠,不足300元没有优惠。
第一步,考虑输入和输出的可能结果。
(1)输入:订单已提交,大于等于300元,领到红包;
(2)输出:优惠、不优惠。
第二步,分析输入和输出的关系。
(1)小于300,不优惠;
(2)订单已提交,大于300,有优惠;
(3)订单已提交,抢到红包,有优惠;
(4)订单已提交,大于300,抢到红包,有优惠;
第三步,对所有的输入和输出进行编号。
输入:订单已提交(1),大于等于300元(2),领到红包(3)。
输出:优惠(a)、不优惠(b)。
第四步,画因果图。
这里写图片描述
第五步,画判定表。
这里写图片描述
三个判定条件(输入),每个判定条件有两种取值,表的列数为8.

五、正交实验法

1.定义

减少用例数目,用尽量少的用例覆盖输入的组合。正交表是按照一定规则生成的表。

2.步骤

(1)列举所有因素,即变量;
(2)每个因素有什么水平,即变量的取值;
(3)找一个合适的正交集;
(4)把变量的值映射在表中;
(5)将每一行的各因素水平组合作为一个测试用例;
(6)根据经验,添加一些没有在表中出现的用例组合。

3.实例

根据性别=“男、女”,班级=“1班、二班”,成绩=“及格、不及格”查询。

判定表法设计:2*2*2=8个测试用例;
正交表法设计:3*(2-1)+1=4个测试用例;
这里写图片描述
优点:均匀分散、整齐可比。通过正交实验法减少了测试用例,工时与费用,提高测试用例的有效性。是一种高效、快速、经济的实验设计方法。
缺点:对于每个状态同等对待,重点不突出,容易造成在用户不常用的功能或场景,花费不少时间进行测试设计与执行,而在重要路径的使用上反而没有重点测试。

六、场景设计法

1.定义

同一种事件的不同触发顺序和处理结果就形成事件流,描绘事件触发时的情景,有利于测试设计者设计测试用例,同时也使得测试用例更容易理解和执行。

2.设计过程

将经过用例的每条路径都用基本流和备选流来表示。

3.实例

以用户登录为例。
这里写图片描述
可能出现的场景:
用户登录失败,是否可以重新登录?
用户登录成功后,在下一次登录时是否需要输入所有信息?

白盒测试

为什么要考虑白盒测试呢?举个栗子说明,设x=0,y=5, 程序设计z=y/x, 如果只考虑输入输出的黑盒测试,我们看不出程序内部的逻辑错误(分母不能为零),即使我们使用黑盒测试的测试用例覆盖的再全也发现不了这个问题,这个时候就要考虑使用白盒测试了。

而什么是白盒测试呢?白盒测试也称为结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。

白盒测试法检查程序内部逻辑结构,对所有的逻辑路径进行测试,是一种穷举路径的测试方法,但即使每条路径都测试过了,但仍然有可能存在错误。因为:穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序;穷举路径测试不可能检查出程序因为遗漏路径而出错;穷举路径测试发现不了一些与数据相关的错误。

白盒测试需要遵循的原则有:

  1. 保证一个模块中的所有独立路径至少被测试一次;
  2. 所有逻辑值均需要测试真(true)和假(false);两种情况;
  3. 检查程序的内部数据结构,保证其结构的有效性;
  4. 在上下边界及可操作范围内运行所有循环。

白盒测试方法有: 静态测试、动态测试。

静态测试是不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具(Fxcop)自动进行。动态测试则需要执行代码,也是我们用的最多的一种测试,通过运行程序找到问题,包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等。

  • 单元测试
  • 代码检查
  • 同行评审
  • 技术评审

要检验测试的效果,就要去看测试的覆盖率,当覆盖率越大,说明测试成效越好,软件的缺陷越少。但覆盖率不是目标(质量才是目标)而只是一种手段。测试覆盖率包括功能点覆盖率和结构覆盖率,其中,功能点覆盖率大致用于表示软件已经实现的功能与软件需要实现的功能之间的比例关系;而结构覆盖率包括语句覆盖率、分支覆盖率、循环覆盖率和路径覆盖率等等。

而逻辑覆盖法中根据覆盖目标的不同和覆盖源程序语句的详尽程度,逻辑覆盖又可分为:语句覆盖; 判定覆盖;条件覆盖;判定/条件覆盖;组合覆盖;路径覆盖,且这些覆盖程度越往后越全。

灰盒测试

灰盒测试更像是白盒测试和黑盒测试的混合测试,现阶段对灰盒测试没有更明确的定义,但更多的时候,我们的测试做的就是灰盒测试,即既会做黑盒测试又会做白盒测试。

猜你喜欢

转载自blog.csdn.net/ZWE7616175/article/details/81486683