功能测试用例设计方法大全

测试用例(Test Case)是为实施测试而向被测系统提供的输入数据、操作或各种环境设置以及期望结果等信息的一个特定集合。测试用例要解决的问题是:要测什么,怎么测,如何衡量。如果不写测试用例的话,就无法判断是否较全面地测试了所有的功能;测试的覆盖率也无法衡量;对新版本的重复测试很难实施;无法对测试质量进行有效评估;无法形成有效的知识积累。

测试用例可以证明被测软件的某功能符合需求说明书中规定的要求,我们的测试首先要符合需求规格说明书;可以保证一个软件被测试的有效性;指导测试的工作,不至于盲目测试;可以为评估测试结果和编写测试报告提供依据。

一个好的测试用例应该符合以下几个特性:

有效性:是测试人员测试过程中的重要参考依据。

可复用性:良好的测试用例具有重复使用的功能,使得测试过程事半功倍。

易组织性:可能在数月甚至几年的测试过程中被创建和使用,正确的测试计划会很好地组织这些测试用例 。

可评估性:从测试的项目管理角度来说,测试用例的通过率是检验代码质量的保证。

可管理性:可以作为检验测试人员进度、工作量以及跟踪/管理测试人员的工作效率的因素 。

下面我们针对这几个方面展开来讲一下。

对需求覆盖的完整性就要求我们做到对需求的完全理解, 从全局上把握需求。还应对需求进行归类,做到对需求的100%覆盖。

有效性指的是测试用例应该包含清晰的输入数据以及预期输出。如果环境或者业务发生变更后,测试用例及相关数据必须进行更新维护。

测试用例的可理解性,这一点很重要,它要求测试用例步骤必须描述清晰,使用陈述句,不能出现模棱两可以及重复的话语或者夹杂个人情绪。测试用例要按照一定的顺序进行编写,这样执行的时候效率比较高。

清晰性,测试用例的验证点必须明确清晰重点突出,一个用例进行一个功能点的验证。测试用例包含前置条件的必须描述清楚,包括入口等。因为我们一些比较小的项目可能是专门有一个人写用例,一个人去执行测试,一些比较大的项目可能还会有专门编写测试用例的组。所以测试用例的清晰性和可理解性都会直接影响到测试人员的效率。

可维护性,测试用例因为业务需求发生变更的时候,需要及时更新维护测试用例,做到测试用例的实时性与有效性。测试用例需要细化和不断的完善,是个循序渐进的过程。通过测试实践检验测试用例并添加,删除,修改测试用例。

测试用例应该按照一定的顺序进行编写,这样执行的时候效率比较高。

因为我们在写测试用例的时候,可能是依据文档,或者根据以往经验来编写的,在测试执行的时候,可能会发现有遗漏的地方,或者我们的软件、业务、需求发生变更的时候,都需要对我们的用例进行维护,所以我们的测试用例需要具有可维护性。

测试用例的编写是非常重要的,它直接影响到下面一个环节,测试执行环节。无论是我们自己执行还是其他的测试人员、测试组去执行这个测试用例,都需要测试用例是完整、有效、可理解、清晰和可维护的,以上就是测试用例的特点。下面我们就一起来看一下测试用例的设计方法。

黑盒测试用例设计方法

下面我们将要讲到的内容是测试用例书写的灵魂,是编写测试用例的设计理念,这一部分是比较重要的。

黑盒测试(Black-box Testing),又称为功能测试或数据驱动测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。

大家都知道,黑盒就是把一个软件/被测的一个功能/产品功能/软件功能/系统功能都看成一个黑匣子,然后输入内容,得到一个输出内容,我们并不需要知道它的内部结构或者处理的过程,只要知道输入和输出对了就可以了。

黑盒测试行常见的测试方法主要有以下几大类,等价类划分方法、边界值分析方法、错误推测方法、因果图方法、场景法。它不限于这几项,我们列举的是现在比较常用的一些方法。

等价类划分法

等价类划分法是指依据需求对输入的范围进行分类,然后在分出的每一个区域内选取一个有代表性的测试数据开展测试。等价类划分法是比较容易理解的,我们现在设计测试用例用等价类划分法比较多,它适用的场景也比较多。

我们为什么使用等价类划分法呢?是因为我们的穷举测试是根本穷举不完的,所以我们要把它进行分类,取一些有代表性的数据,就产生等价类了。做完合理的分类之后就可以设计测试用例了,它适合于任何一个测试过程,不受局限。

等价类划分法的划分方法

等价类是指某个输入域的子集合。分为有效等价类和无效等价类。

有效等价类 : 符合需求说明,合理地输入数据集合

无效等价类 : 不符合需求说明,无意义地输入数据集合

我们也可以把无效等价类看作反向用例,也可以看作在健壮性测试时我们设计的一个测试用例。有效等价类是用来验证需求的,无效等价类是用来经受考验的。

等价类划分法的步骤

简单来说就是,划分等价类,把有效等价类和无效等价类划分出来,然后建立图表并编号,然后再设计用例。

下面我们介绍一下等价类划分法常用的几种方法

等价类划分法常用方法1

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

例如:输入值是学生成绩,范围是0~100。

分析:

有效等价类:0≤成绩≤100

无效等价类:成绩<0 或 成绩>100

在数轴上表示:

等价类划分法常用方法2

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

例如:某系统注册页面用户密码规定为4位的串。

分析:

有效等价类:长度为4位的串

无效等价类:长度不是4位的串

等价类划分法常用方法3

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

例如:某系统注册时,性别输入必须为男(true)。

分析:

有效等价类:输入true

无效等价类:输入false

等价类划分法常用方法4

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

例如:某校员工管理系统对老师工资进行维护,按老师学历(博士、研究生、本科与专科)设置基本工资。

分析:

有效等价类:学历取博士、研究生、本科与专科

无效等价类:其他学历均为无效等价类

等价类划分法常用方法5

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

例如:某系统注册时用户名必须以“a”字母开头。

分析:

有效等价类:字母a开头的用户名

无效等价类:字母b开头的用户名、数字2开头的用户名等等

等价类划分法常用方法6

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

例如:某系统注册时用户名必须以字母开头,并且必须包含数字。

分析:

有效等价类:字母开头且含有数字(有效,如a1),字母开头且不含数字(无效,如a)

无效等价类:非字母开头的,如数字开头(1a)等

等价类划分法举例

我们针对等价类划分法举一个例子,QQ账号为5-11位自然数,请用等价类划分方法设计测试用例。界面原型如下:

第一步:确定并划分等价类:

有效等价类:5-11位,类型是自然数

无效等价类:小于5位,大于11位,非自然数

第二步:建等价类表并编号

第三步:设计测试用例

我们按照前面划分的等价类就可以生成9个测试用例,如果我们不按照等价类划分法这一系列的步骤来执行的话,设计的用例就可能会有遗漏。

边界值分析(boundary value analysis)

接下来我们来介绍一下第二大常用的方法,边界值分析法。由于程序的错误经常在定义域和等价类的边界处被发现,所以在等价类分析还应该对于每个测试的变量加上边界值的分析。

一般情况下我们会设计5组边界值,取一个中间值,一个最小值,一个最大值,一个略小于最小值,一个略大于最大值。

边界值分析法与等价类的关系:

边界值分析假定错误存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。

如何设计边界值测试用例:

首先确定边界情况,通常输入或输出等价类的边界就是应该着重测试的边界情况。

正常选取(正向):最小值、略高于最小值、正常值、略低于最大值和最大值处变量值。

健壮性测试(反向):还需考虑小于最小值,大于最大值

例如,在某程序的需求规格说明中,对输入条件的限制为:

“…… 年龄可以输入从15到60的整数 ……”

边界值正常用例分析:输入应选择15、16、30、59、60

同时我们还要考虑它的健壮性或者容错性,就需要设置健壮测试(反向用例),一个是小于最小值,一个是大于最大值,所以输入还需考虑:14、61

常见的边界值:

并不是所有的值都需要考虑边界值,通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等。

相应的,以上类型的边界值应该在:

最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最长/最短、空和满等情况

一旦我们的需求说明书里对这些方面有相关的描述的时候,就一定要考虑,这个时候是不是需要增加边界值的测试。

下面这个图是边界值分析的取值,我们前面也讲了,正常选取(正向)包括五种:最小值、略高于最小值、正常值、略低于最大值和最大值处变量值。健壮性测试(反向):还需考虑小于最小值,大于最大值。

边界值分析法常用方法

边界值分析法常用方法1:

如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。(中间正常的再取一位)

例如,如果程序的规格说明中规定:“重量在10公斤至50公斤范围内的邮件,其邮费计算公式为……”。

分析:设计测试用例时,我们应取边界是10~50,还应取9,10,11,30,49,50,51

边界值分析法常用方法2:

如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。

例如:一个输入文件应包括1~255个记录,则测试用例可取1和255,还应取0及256等。

边界值分析法常用方法3:

将方法1和方法2应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。

例如,某程序的规格说明要求计算出“每月保险金扣除额为0至1165.25元”,其测试用例输出考虑0.01及1165.24、还要考虑-0.01及1165.26。

再如一程序属于情报检索系统,要求每次”最少输出1条、最多输出4条情报摘要”,这时我们应考虑的测试用例的输出包括1和4,还应包括0和5等

边界值分析法常用方法4:

如果程序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个元素和最后一个元素作为测试用例。

边界值分析法常用方法5:

分析规格说明,找出其它可能的边界条件。

边界值分析法举例

请用边界值分析方法为NextDate函数设计测试用例,规定了变量month和变量day的取值范围为1≤month≤12和1≤day≤31,并设定变量year的取值范围为1912≤year ≤2050 。

第一步:确定边界值:month为1-12,day为1-31,year为1912-2050

第二步:设计测试用例(假设中间值year=2000,month=6,day=15)

第三部:健壮考虑,month<1或>12,day<1或>31,year<1912或>2050

测试用例如下表所示:

错误推测法

错误推测法是基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。带有破坏性的输入错误的值或方法去进行测试,如果程序要求输入数字,那么我们就输入特殊字符,如果软件只接受正数,我们就输入负数。

例如:输入数据和输出数据为0的情况;

输入表格为空格

输入超长字符

删除全部数据或记录为空的情况

......

这个方法没有太大的规律,就是靠经验和直觉,我们做测试工作时间长了,就可以积累出这方面的能力了。

例如:如对某个公司的销售工作人员某一天的销售额进行排序。可推测列出以下几项需要特别的测试的情况:

分析:

当天所有销售工作人员均无销售额;

当天所有销售工作人员只有一人有销售额;

当天所有销售工作人员的销售额均相同;

当天销售额均已升序排列好;

当天销售额均已降序排列好。

因果图法

这种方法是有适用条件的,不是所有的场景都可以用这种方法的。它是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。

等价类划分方法和边界值分析方法,都未过多考虑输入条件之间的联系,相互组合、相互制约等。

考虑输入条件间的相互组合不是一件易事, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。这就需要利用因果图( Cause一Effect Graphics )方法。

采用因果图方法能够帮助我们按一定步骤,高效率地选择测试用例,同时还能为我们指出,程序规格说明描述中存在着什么问题。

步骤:

1、提取因和果,赋予标识符:根据软件规格说明书分析并确定因(输入条件)和果(输出结果),并给每个因和果赋予一个标识符。

2、提取因果关系,标识因果:分析软件规格说明书,提取因果关系,根据这些关系,画出因果图。

3、标明约束条件:由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。

4、转换成判定表:把因果转换为判定表。

5、设计测试用例:把判定表的每一列拿出来作为依据,设计测试用例。

例1:某软件规格说明要求:第一列字符必须是A或B,第二列必须是一个数字,在此情况下进行文件修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。

分析:第一步:确定因果关系,画出因果图

注:⑤是中间过程, ①和②不能同时满足,所以用⑤来施加约束

第二步:因果图转判定表

场景法

场景法也就是事件流,现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。流,是指一系列的步骤。

一般情况下我们会分基本流和备选流,所谓的基本流是能够顺利执行的一个场景,从开始到结束一切都顺利的场景。备选流是指除基本流之外的另外一些正常场景、偶尔发生的场景、异常或错误处理。

基本流和备选流如下图所示:

图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。

备选流用不同的色彩表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。

设计测试用例的步骤:

1、确定基本流和备选流

2、根据已确定的基本流和各项备选流生成不同的场景

3、为确定的场景生成相应的测试用例

4、复审和验证测试用例,取消多余和等效的。

例1:ATM取款测试的场景设计方法。

第一步:确定基本流和备选流

第二步:根据基本流和备选流确定场景

第三步:根据场景设计测试用例

测试用例的内容

一个测试用例需要包含:对一个特定的测试对象(test object)在规定的条件或环境下(前置条件和后置条件)输入一组输入数据或执行操作步骤后,生成一组相应的期望的结果。

测试用例=〈输入数据+,期望的结果+,测试对象,边界条件*〉

这些因素就组合成了一个测试用例。我们的测试用例分为逻辑测试用例和具体测试用例。逻辑测试用例没有具体的数据的描述,它是对测试数据的抽象描述。具体测试用例是对测试数据的具体化,具体的测试用例对于我们后续的回归有非常重要的作用。

下表是定义一个测试用例所需的项:

其实我个人认为,这里面还应该包含测试用例的设计方法,比如说我们这个测试用例是用等价类划分法设计的?还是边界值法设计的?如果加上这样一列的话,可以起到更加有效的说明作用。

这个也是看要求的,像比较大型的如金融行业,对用例要求比较精准的情况下,我们就要标注这个测试用例的设计方法。为了方便追溯,测试用例还应该包含编写人是谁,执行人是谁。

如果测试用例的内容是一个可执行的序列,我们称之为测试套件(“手动测试脚本”)

下面是一个测试用例模板的举例,这是一个比较通用的测试用例的模版,包含编号、模块、功能、测试需求、正向还是反向用例、测试步骤、预期结果、实际结果、如果实际结果和预期结果不符,就是一个缺陷,我们后面还会讲,如何精准地把这个缺陷描述给开发人员。开发人员进行bug修复之后,我们就可以有一个再测试影响分析以及执行结果。最后为了可追溯性,会有一个编写人和执行人。

测用例编写常见问题

接下来我们一起来看一下测试用例编写中存在的问题,这里我简单列举了一下:

测试用例虽有步骤,但太过简单,且缺少测试数据,导致该用例无法执行,没有可用性。我们的测试步骤里面要尽量明确测试数据,是精准的数据,还是模糊的抽象数据,这点对于编写人员、执行人员、包括后面的回归人员来说都是非常重要的,所以希望大家在设计测试用例的时候要准备无误、全面地来设计。

测试用例步骤描述不清晰,过于冗余。像下图的例子,当你这个用例写完了之后,交给执行人员看,如果你执行100条数据都这样写的话,这个时候执行人员是很懵的。

这个是我们曾经做过的一个简单的测试用例,如果测试不同过的话,我们会标红,然后写到缺陷里面去,大家可以参考。

我们今后书写测试用例的时候要注意哪些事项呢?通过前面的一些分析,大家也看出来了一些好与坏的差距,最后我们再总结一下它的注意事项:

1、正确性:

设计的测试用例保证至少覆盖需求规格说明书内容、计划任务书内容、或测试文档内容。不要没有任何文档依据,简单测测。

2、完整性:

对测试依据文档进行全面覆盖,尽可能地测试的完整和充分,尽量避免未被测试用例设计到地潜在bug。

3、全面性:

设计的测试用例尽可能地全面,多角度去考虑问题;尽量做到测试用例的各要素完整全面,且尽量包含必要地测试数据和步骤。

4、清晰简洁:

书写地测试用例尽量描述清晰,每一步都应有相应,有很强的针对性,不应出现一些无用的操作步骤。

5、可重用性:

书写完测试用例,自己可以想一下,其他的测试人员,在同样的测试环境下使用该的测试用例是否都能得出相应的结论。

以上就是我们为大家整理的功能测试的方法、步骤和内容,后面的文章会继续为大家分享缺陷分析技巧等内容,欢迎大家继续关注。

(谢绝转载,更多内容可查看我的主页)

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
测试阶段 3 测试用例的分类 3 文本框需求 4 字段为特殊代码校验: 4 文本框为数值型 4 文本框为日期型 5 文本框为时间型 6 密码框 返回目录 6 单选按钮 7 组合列表框/下拉列表 7 数码框(up-down)控件 8 搜索框填充域测试 8 复选框 9 滚动条 9 通过测试: 返回目录 9 失败测试: 10 登陆 10 添加 10 删除 10 查询 返回目录 11 翻页控件 12 树控件的测试外观操作返回目录 12 命令按钮 返回目录 13 一、各种控件在窗体中混和使用时的测试 13 选项卡 返回目录 14 默认焦点 14 TAB顺序 14 快捷键/热键 14 上传文件的测试 14 下载文件的测试 15 【安全性测试】 16 功能测试 v返回目录 16 兼容性测试 17 【性能测试】 17 邮箱输入框字段校验测试 18 验证码输入框字段校验测试 18 替换测试大体相同. 返回目录 19 插入文件 19 链接文件 19 插入对象 19 编辑操作 19 界面测试【UI】 20 窗体 20 标题栏 21 文字 21 控件 21 图片 22 窗口在任务栏上的系统菜单 22 提示对话框测试要点: 23 菜单 23 特殊属性 24 其他 24 新增功能 24 修改功能 24 删除功能 25 查询功能 25 权限检查 26 提示功能检查 26 并发功能 27 导出功能 28 导入功能 28 多币别测试 29 打印功能 29 日志检查 29 导航相关检查 30 返回功能检查 30 重置检查 30 PDF测试 30 发送邮件 31 扫描枪 31 安装测试 31 卸载测试 32 更新 33 键盘操作 33 快捷键支持 34 测试驱动程序设计 34 【易用性测试】 35 导航 功能导航 主要功能的导航是否在明显位置 35 菜单 采用“常用--主要--次要--工具--帮助”的位置排列 35 工具栏 相同或相近功能的工具栏放在一起 36 索引 索引的排列顺序要主次有分 36 按钮 按钮大小基本相近,忌用太长的名称,免得占用过多的界面位置 36 快捷键 常用功能要支持快捷键 36 帮助和支持 获取帮助 操作时要提供及时调用系统帮助的功能 36 通用类 系统业务流程需要易于用户理解 37 错误处理 错误规避 37 错误提示 37 一致性 37 与Windows等标准一致 37 内部操作一致 38 反馈信息 38 工作提示 38 功能提示 38 功能性 38 完备性 38 便捷功能 39 控制 可控性 39 视觉清晰 39 布局 39 资源 39 字体 39 颜色 40 语言 文字表达 40 专项测试角度:push测试(推送测试)、交互模式: 40

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值