手机软件测试最佳实践(一)

第2章 手机软件测试用例设计

本章要点:

● 用例设计考虑因素;

● 用例设计基本原则;

● 用例设计常用方法。

2.1  用例设计考虑因素

从理论上讲,手机软件规模越大,模块间的关系越复杂,组合的情况越多,测试用例数目占的比例也就越大,因而总是很难设计出“足够”的测试用例。

虽然理论上缺陷空间(测试空间上所有可能发生的缺陷构成的集合就是缺陷空间)可以接近无限大,但实际情况中存在的缺陷只是缺陷空间的一个很小的子集。测试中最重要的是要找到已经存在的缺陷,但在没有进行测试前,手机软件中存在多少缺陷却是不知道的。

从理论上讲,测试是不能穷尽的,就意味着不存在一种方法能将所有的缺陷都所以找出来,找到缺陷的问题注定是一个概率问题,将那些发生概率较大的缺陷找出来就成了测试的主要任务。

测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。测试用例是执行的最小实体。简单地说,测试用例就是设计一个场景,使测试程序在这种场景下运行并且达到程序所设计的执行结果。

设计测试用例首先要考虑以下几个问题:

● 为什么要设计测试用例?

● 谁来写测试用例?这些写测试用例的人的测试技术如何?以及对被测试产品了解有多深入?

● 测试用例写给谁看,多少人将使用测试用例文档?

● 分配给编写测试用例的时间是多长?要安排几个人来写?

● 怎么在测试用例的成本、质量和效率方面达到平衡?

目前的手机市场对于新推出的功能和应用程序有着迫切的需要,使得产品周期非常短;然而只有回答了这些问题,才能确定测试用例的具体写作方法和表现形式。一般而言,手机软件测试项目中分配写测试用例的时间并不长,而且提供的文档也不全面,所以写测试用例要符合测试部门的当前现状和项目的测试特点。

对于测试设计工程师来说,设计测试用例需要考虑以下几个方面:

● 测试用例设计必须考虑有效:容易发现并呈现错误;

● 测试用例设计必须覆盖全面又不冗余:数量上不应有重复的、多余的用例,对软件规格说明书和设计功能点有全面的覆盖,不仅包括功能测试用例,还包括性能测试用例,外场测试、易用性等测试用例;

● 测试用例设计必须明确粒度和测试分类的程度:粒度越细,测试成本就越高,测试周期就越长;分类越多,测试成本相应增加,测试周期就越长;

● 测试用例设计完成后必须经过评审:以帮助进一步补充用例,提高测试覆盖率,提高用例质量。

对于测试执行工程师来说,测试用例的内容应包括以下几个方面:

● 测试用例的测试目标;

● 测试用例的被测功能点描述;

● 测试用例的测试运行环境;

● 测试用例的执行方法(包括测试步骤,输入测试数据或测试脚本);

● 测试期望的结果;

● 执行测试的实际结果;

● 其他辅助说明。

2.2  用例设计基本原则

● 测试用例的代表性:能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。

● 测试用例的可执行特点:在测试前提符合的情况下,依照测试步骤,每一个测试用例都能够顺利地使程序运行,同时呈现相应的期望结果。

● 测试结果的可判定性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。

测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的。

2.3  用例设计常用方法

一个好的测试用例是指可能找到迄今为止尚未发现的错误的测试,由此可见,测试用例设计工作在整个测试过程中占有十分重要的地位,所以我们不能只凭借一些主观或直观的想法来设计测试用例,而应该要以一些比较成熟的测试用例设计方法为指导,再加上设计人员个人的经验积累来设计测试用例。

2.3.1  等价类划分方法

1.等价类划分方法基本概念

如果把所有可能的输入数据分为有效等价类和无效等价类两种,那么可以做出这样的合理假定:如果等价类中的一个输入数据能发现一个缺陷,那么等价类中其他输入数据也能发现同一个缺陷;反之,如果一个输入数据不能发现某个错误,那么等价类中其他输入数据也不能发现这一错误。

有效等价类是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

与有效等价类恰巧相反,无效等价类是指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。

等价类分析法不但可以针对输入数据,而且可以针对输出数据进行划分。总之,他们发现缺陷的概率是等效的。

2.等价类划分方法设计用例的原则

● 如果输入条件规定了取值范围,或者值的个数,则可以确定一个有效等价类和两个无效等价类;

● 如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可以确立一个有效等价类和一个无效等价类;

● 如果输入条件是一个布尔量,则可以确立一个有效等价类和一个无效等价类;

● 如果规定了输入数据的一组值,则程序要对每一个输入值分别进行处理;这时要对每一个规定的输入值确立一个等价类,并且对于这组值之外的所有值也都确立一个等价类;

● 如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(即遵守规则的数据)和若干无效等价类(从不同角度违反规则的数据);

● 如果已划分的等价类中的各元素在程序中的处理方式不同,则应进一步划分成更小的等价类。

3.利用等价类划分方法选择用例

● 为每一个等价类规定一个唯一的编号;

● 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类;重复这一步骤,直到所有的无效等价类都被覆盖为止;

● 设计一个新的测试用例,使其仅覆盖一个无效等价类,重复这一步骤,直到所有的无效等价类都被覆盖为止。

【举例1】以短消息编辑用户场景为例。

第一步:为每一个等价类和无效等价类规定一个唯一的编号,如表2.1所示。

表2.1  输入字符有效等价类

有效等价类编号 有效等价类字符长度 有效等价类编号 有效等价类字符长度
1 0 10 数字
2 1 11 字母
3 35 12 汉字
4 69 13 汉字+符号
5 70 14 汉字+数字+字母+符号
6 80 15 字母+符号
7 159 16 字母+数字+符号
8 160 17 71
9 符号 18 161

第二步:尽可能多地覆盖有效等价类,如表2.2所示。

表2.2  有效等价类测试用例

用例编号 字符类型 长     度 覆盖有效等价类编号
1 0 1
2 符号 1 2、9
3 数字(电话号码为11位) 11 1
4 汉字 35 3、12
5 汉字+符号 70 5、13
6 汉字+数字+字母+符号 69 4、14
7 字母 80 6、11
8 字母+符号 159 7、15
9 字母+数字+符号 160 8、16

第三步:所有无效等价类均被覆盖,如表2.3所示。

表2.3  无效等价类测试用例

用例编号 字符类型 长     度 覆盖无效等价类编号
10 汉字 71 17
11 字母 161 18

【举例2】某保险公司承担人寿保险,保费计算方式为投保额 * 保险率,保险率又依点数不同而有别,10点以上费率为0.6%,10点以下费率为0.1%。

年龄:一或两位数字

性别:以英文【Male】、【Female】、【M】、【F】表示

婚姻:【已婚】、【未婚】

扶养人数:空白或一位数字

保险费率:10点以上,10点以下

该例的需求描述、等价类划分和测试用例的情况分别如表2.4、表2.5和表2.6所示。

表2.4  需求描述

参 数 名 参数取值范围 参数取值 点    数
年龄 1~99 1~19 2
20~39 6
40~59 4
60~99 2
性别 Male,Female Male 5
Female 3
婚姻状况 已婚,未婚 已婚 3
未婚 5
扶养人数 1~9 1~2 4
3~6 3
6~9 1

表2.5  等价类划分

参 数 名 有效等价类 无效等价类
年龄 1~19 <1
20~39 >99
40~59  
60~99  
性别 Male 非Male,非Female
Female  
婚姻状况 已婚 非已婚,非未婚
未婚  
扶养人数 1~2 <1
3~6 >9
6~9  

表2.6  测试用例

测试用例 年    龄 性    别 婚姻状况 扶养人数
1 9 MALE 已婚 1
2 28 FEMALE 未婚 4
3 45 MALE 已婚 7
4 65 MALE 未婚 1
5 0 MALE 未婚 1
6 100 MALE 已婚 1
7 45 FEMALE 已婚 1
8 45 MALE 未婚 6
9 34 MALE 已婚 0
10 34 MALE 已婚 10

2.3.2  边界值分析方法

1.边界值分析法基本概念

首先我们读0这个数,小学时我们已经知道大于0的叫正数,形成正数区域;小于0的叫负数,形成负数区域,0也就成了数学上我们大家所熟悉的边界点。然而我们常常去做些测试:用小的数减去大的数,老师告诉我们不够减,让我们记住小的数不能减去大的数。随着数域概念的扩大,发现这里有错误。同样,实际程序逻辑中也有类似的这种差别,钱不够可以向别人借钱;如果数据库内没有数据,仍然去删除一条记录,而这样的删除操作将报错。

长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。说明程序在边界值上出现错误概率的可能性大。

2.边界值分析法设计用例的原则

通常边界值分析法是作为对等价类划分法的补充,其测试用例来自等价类边界,每个边界都要作为测试条件。因此,边界值分析不仅考虑输入条件,还要考虑输出产生的测试情况。边界值分析法设计用例的原则如下:

(1)如果输入条件规定了值的范围,则应该取刚刚达到这个范围的边界值,及刚刚超越这个范围边界的值作为测试数据;

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

(3)根据软件规格说明书的每个输出条件,应用上述的原则(1)和原则(2);

(4)如果软件程序规格说明书所给出的输入域或输出域是有序集合,则应该选取集合的第一个元素和最后一个元素作为测试数据;

(5)如果程序中采用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试数据;

(6)分析软件规格说明书,找出其他可能的边界条件。

按照上述方法,可以做到更好地使用边界值对用例进行选择,更容易发现缺陷。在实际测试中可以按照这样的分类思路进行扩展。

3.利用边界值分析法选择用例

【举例】LCD屏幕上有效显示区域为4行,每行8汉字;

LCD显示屏列边界值需要考虑:7个汉字,8个汉字,9个汉字;

LCD显示屏行边界值需要考虑:31个汉字,32个汉字,33个汉字;1行,4行,0行,5行。

通常情况下,软件测试所包含的边界检验有几种类型:数值、字符、位置、重量、大小、速度、方位、尺寸、空间等。以上类型的相应边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等情况下,如表2.7所示。

  表2.7  常见边界值

边 界 值 测试用例的设计思路
字符 起始-1 个字符/结束+1个字符 假设一个文本输入区域允许输入1个到255个字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值
数值 最小值-1/最大值+1 假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的数值来作为边界条件
空间 小于空余空间一点/大于满空间一点 例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件

手机软件测试过程中,常需要考虑的边界值如下:

● 短消息在default 7bit alphabet编码时边界为0~160;UCS-2编码时边界为0~70;

● 对16-bit的整数而言32767和-32768是边界;

● 屏幕上光标在最左上、最右下位置;

● 报表的第一行和最后一行;

● 数组元素的第一个和最后一个;

● 循环的第0次、第1次和倒数第2次、最后一次。

等价类划分是一种用例设计的思想,是按照输入项和输出项的情况把要执行的具体测试用例划分成等价类和无效等价类两种,然后执行测试。边界值分析也是设计用例时的指导思想,它是在具体执行测试用例时要用到的一种测试技巧(取边界值)。具体实施用例设计时往往要两者结合考虑,一起使用。现以编辑一个彩信测试用例为例,输入项的划分如表2.8所示。

  表2.8  输入项划分

输 入 项 有效等价类 无效等价类
彩信帧数:0-8 0、1、2、8 9
彩信size:最小-50KB 最小、30KB左右、50KB 60KB
帧内容:

图片:无、BMP、JPEG、WBMP

无、WBMP或JPEG、GIF(图片格式由图形系统处理,对彩信测试无区别,因此只取一种) TIFF

目前是JPG文件

帧内容:

音频:无、WAV、IMEDODY、MIDI、AMR、MP3

无、WAV、IMEDODY、MIDI、AMR、MP3  
帧内容:

视频:无、MPEG

无、MPEG  
帧内容:

文本:无、中文、英文、符号

无、中文+英文+符号  

 

文章分类 未分类

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>