测试用例的编写方法

测试用例

买手机、买电脑,要试用一下:开机、屏幕、运行速度、内存大小;这就是生活中的测试用例!

等价类划分法

等价类划分是一种重要的、常用的黑盒测试方法,不需要考虑程序的内部结构,只需要考虑程序的输入规格即可。它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。

在有限的测试资源的情况下,用少量有代表性的数据得到比较好的测试效果。

计算器:到底输入几组数据才算测试完毕论课题) 答案:一个一个测试效率低下,一定要分类测试!

  1. 整数(在范围内的整数-99到99)取最大、最小、中间
  2. 小数(在范围内的整数-99到99)
  3. 符 (±/,。、!@#¥%……&())
  4. 汉字
  5. 空格
  6. 不输入

通过上面的描述,我们发现我们用户所有可能输入的数据,划分成了若干份(或者也可以称为子集),然后从每一个子集当中选取少数具有代表性的数据作为测试用例,这种测试用例我们称为“等价类划分法”。

等价类的分类

有效等价类:指符合《需求规格说明书》,输入合理的数据集合。
无效等价类:指不符合《需求规格说明书》,输入不合理的数据集合。

思考步骤:

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

2、 有效等价类划分(题目条件,还要注意边界值(极值),中间再随意找个值)

3、 无效等价类划分(跟有效等价类相反,其它特殊情况(中文、英文、特殊符 、空格、空))

【注意】两个框要一个正确,一个错误,这样才能准确的判断;一定要根据需求来判断预期结果;

练习一:计算1-100的整数之和(包括1和100)

一般是一个框输入正确的值,一个框输入错误的值,没有两个框都输入错误的值,因为更容易确定到底是哪个框出现错误的值。

练习二:测试QQ账 ,账 的要求是 6-10位正整数。

练习三:测试电话 码

某城市电话 码由三部分组成,分别是

  • 地区码:空白或是3位数字
  • 前缀:非‘0’且非‘1’开头的三位数字
  • 后缀:4位数字

例子:1232341234

  • 用户名(昵称)长度为 3-19:以字母开头

  • 登录名称:非空

  • 密码: 非空

  • 确认密码: 值和密码相同

确定边界情况(输入或输出等价类的边界),选取正好等于、刚刚好大于或刚刚好小于边界值作为测试数据,边界值的取值依据输入范围区间不同而有所不同,但是都需要把上点值、离点值和内点值取到。(闭两边、开中间)

练习1:使用边界值的方法设计添加标题的测试用例 【标题长度>0 标题长度

(2)确定有效区域和无效区域;
(3)临界点:0、60、100;
(4)取值:-1、0、1、59、60、61、99、100、101;
(5)具体测试用例;

边界值的方法小结

1、如果输入条件规定了值得范围,则应取刚到到这个范围的边界值,以及刚刚超越这个范围边界的值作为输入数据。两位整数加法器数的范围为-99—99,则应测试-99,-100和99,100

2、输入条件规定了值的个数,姓名要求1—20个字符,需要测试0、1、2个字符和19、20、21个字符;某商品信息查询系统,每页最多显示10条商品信息,我们就应该准备商品信息,使能够查询出9、10条、11条、1条、0条商品记录。

边界值和等价类区别:边界值分析不是从某等价类中随便挑一个作为代表,而是这个等价类的每个边界都要作为测试条件

因果图法

因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况

特点:

  • 考虑输入条件的相互制约及组合关系
  • 考虑输出条件对输入条件的依赖关系

因果图法产生的背景

等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。

如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。

因果图的核心

因果图法比较适合输入条件比较多的情况,测试所有的输入条件的排列组合。所谓的原因就是输入,所谓的结果就是输出。

  • “因”——输入条件
  • “果”——输出结果

**因果图法要注意考虑:**所有输入/输出条件的相互制约关系以及组合关系;输出结果对输入条件的依赖关系,也就是什么样的输入组合会产生怎样的输出结果,即“因果关系”。

因果图中的基本符

通常在因果图中用Ci表示原因,用Ei表示结果,各结点表示状态,可取值“0”或“1”。“0”表示某状态不出现,“1”表示某状态出现。

恒等

含义:若原因出现,则结果不出现;若原因不出现,则结果出现。

  • 若c1=1,则e1=0
  • 若c1=0,则e1=1

如:搜索联系人,如果有就不提示错误,如果没就提示错误

或(V)

含义:若几个原因都出现,则结果才出现;若其中一个原因不出现,则结果不出现。

  • 若c1=1并且c2=1,则e1=1
  • 若c1=0或c2=0,则e1=0

如:在班里面戴眼镜、男的、老师==》我

1、找到所有输入条件编
2、找到所有输出条件编
3、找出所有输入、输出的制约关系

判定表法

因果图只是一种辅助工具,通过分析最终得到判定表,再通过判定表编写测试用例。但有时画因果图非常麻烦,影响测试效率,可以直接写判定表,进而编写测试用例。

判定表的组成

条件桩:问题的所有条件

动作桩:问题的所有输出

条件项:针对条件桩的取值

动作项:条件项的各种取值情况下的输出结果

判定表步骤

1、列出所有的条件桩和动作桩。
2、填入条件项。
3、填入动作项。得到初始判定表。
4、简化判定表(合并相似规则(相同动作))

案例:判断是否是一个好学生

怎样称为一个好学生守法的前提下,学习成绩好是一个好学生、品德高尚也是一个好学生;(只要违法乱纪就绝对不是一个好学生;成绩和品德有一项,再加遵纪守法也是好学生)

场景法

场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程。

当拿到一个测试任务时,我们并不是先关注某个控件的边界值、等价类是否满足要求,而是先要关注它的主要功能和业务流程是否正确实现,这就需要使用场景法来完成测试。

当业务流程测试没有问题,也就是该软件的主要功能没有问题时,我们再重点从边界值、等价类等方面对控件进行测试。

在冒烟测试时也主要采用场景法进行测试。

用例场景定义

基本流:按照正确的业务流程来实现的一条操作路径(模拟正确的操作流程)
备选流 :导致程序出现错误的操作流程(模拟错误的操作流程)

用例场景是用来描述流经用例路径的过程,这个过程从开始到结束遍历用例中所有基本流和备选流。

产生的背景

现在的软件几乎都是由事件触发来控制流程的,事件触发时的情景便形成了场景。而同一事件不同的触发顺序和处理结果形成事件流。
将这种在软件设计方面的思想引入到软件测试中,生动的描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时测试用例也更容易的得到理解和执行。

在使用场景法设计测试用例时,需要覆盖系统用例中的主成功场景和扩展场景,并且需要适当补充各种正反面的测试用例和考虑出异常场景的情形。

当使用场景法测试程序没有问题时,可以再使用边界值、等价类方法对账 、密码进行更加细致、完整的测试。

案例:使用场景法测试QQ登录功能

流程分析法

流程分析法主要是针对测试场景类型属于流程测试场景的测试项下的测试子项进行设计,是从白盒测试设计方法中的路径覆盖分析法借鉴过来的一种方法。
在白盒测试中,路径就是指函数代码的某个分支组合,路径覆盖法需要构造足够的用例覆盖函数的所有代码路径。
在黑盒测试中,若将软件系统的某个流程看成路径的话,则可以针对该路径使用路径分析的方法设计测试用例。

优点:降低了测试用例设计难度,只要搞清楚各种流程,就可以设计出高质量的测试用例来,而不需要太多测试方面的经验;在测试时间较紧迫的情况下,可以有的放矢的选择测试用例,而不用完全根据经验来取舍。

步骤

第一步:详细了解需求;

第二步:根据需求说明或界面原型,找出业务流程的各个页面以及各页面之间的流转关系;

第三步:画出业务流程(产品经理使用Axure软件制作);

第四步:写用例,覆盖所有的路径分支。

例:使用ATM机取款

一、详细了解需求;
二、找出业务流程的各个页面以及各页面之间的流转关系;

1、用户向ATM取款机中插入银行卡……
2、用户输入银行卡密码……
3、用户输入取款金额……
4、系统同步银行主机,点钞票,输出给用户并减去用户卡中相应数目的存款金额……
5、用户取款,银行卡退卡……
6、……

ATM正常流程

总结

流程分析法适用于有先后顺序的测试。常用于业务流程测试、安装流程测试等。
流程分析法重点在于测试流程。因此,一般每个流程用一个测试用例验证。

流程测试没有问题并不能说明系统功能没有问题,还需要针对每步功能进行测试。对于包含复杂流程的系统,只有功能点和处理流程都进行测试覆盖,才算是比较充分的测试。

错误推测法

错误推测法是指利用直觉和经验猜测出出错的可能类型,有针对性列举出程序中所有可能的错误和容易发生错误的情况,它是测试经验丰富的测试人员喜欢使用的一种测试用例设计方法。

基本思想:列举出可能犯的错误或错误易发生的清单,然后根据清单编写测试用例;这种方法很大程度上是凭经验进行的,即凭人们对过去所作测试结果的分析,对所揭示缺陷的规律性作直觉的推测来发现缺陷。

采用错误推测法,最重要的是要思考和分析测试对象的各个方面,多参考以前发现的Bug的相关数据、总结的经验,个人多考虑异常的情况、反面的情况、特殊的输入,以一个攻击者的态度对待程序,才能够设计出比较完善的测试用例。

正交排列法

正交排列法能够使用最小的测试过程集合获得最大的测试覆盖率。当可能的输入数据或者输入数据的组合数量很大时,由于不可能为每个输入组合都创建测试用例,可以采用这种方法。

一个有名的案例研究

1992 年AT&T发表了一篇讲述在测试过程中使用正交表一个案例研究。
它描述了对PC(IBM格式)和StarMail(基于局域 的电子邮件软件)做回归测试:
最初制定的测试计划是用18周的的时间执行1500个测试用例。但是,开发推迟了,测试时间被压缩到仅仅8周时间。

测试负责人采取另外一个测试方案和计划,即2个人8周的时间测试1000个测试用例,但是他不敢保证测试的质量,对这些用例检测缺陷的能力不放心。

为了减轻这种不确定性的问题,他用正交表法重新设计了测试用例,此时测试用例只有422个。用这422个测试用例去测试发现了41个缺陷,开发人员修复缺陷,然后软件就发布了。

在使用的两年时间内,凡被测试到的领域都没有再发现缺陷,因此在发现缺陷这方面,此测试计划是100%有效。

据测试负责人估计,如果AT&T采用1000个测试用例的测试计划,可能仅仅只发现这些缺陷中的32个。

与最初的计划相比,用正交表设计测试用例执行工作量不到50%,但却多发现28%的缺陷,而且测试人员个人的效率也增加了。

案例:字符属性设置程序

窗体中有多个控件(字体、字符样式、颜色、字 ),每个控件有多个取值

查找正交表:http://support.sas.com/techsup/technote/ts723_Designs.txt

正交排列法的使用步骤

1、根据所测程序中控件的个数(因素)以及每个控件的取值个数(水平),选取一个合适的正交排列表
2、把控件及其取值列举出来,并对其进行编
3、把控件及其取值映射到正交排列表中

  • 把正交排列表中的ABCD(因子)分别替换成4个控件
  • 把每列中的1,2,3(状态)分别换成这个控件的3个取值(水平),排列顺序要按照表中给出的顺序

4、根据映射好的正交排列表编写测试用例

现在我们了解了正交表概念,现在去把上面的字符设置案例实现!


步骤一:根据所测程序中控件的个数以及每个控件的取值个数,选取一个合适的正交排列表

  • 4个控件(因素):字体、字符样式、颜色、字
  • 每个控件有3个取值(水平)
  • 选择L9(34)正交排列表

步骤二:把控件及其取值列举出来,并对取值进行编

2、把每列中的1,2,3(状态)分别换成这个控件的3个取值,排列顺序要按照表中给出的顺序

然后去看看test2.txt,已经生成了我们需要的正交表,直接复制到表格使用即可

测试用例的编写方法
代表无关紧要,是男是女都一样

测试方法的选择

通常在确定测试方法时,有以下几条参考原则:
(1)拿到一个测试任务时,先关注它的主要功能和业务流程、业务逻辑是否正确实现,考虑使用场景法。
(2)需要输入数据的地方,考虑采用等价类划分法,包括输入条件和输出条件的等价划分,将无限测试变成有限测试。
(3)在任何情况下都必须采用边界值分析法。这种方法设计出的测试用例发现程序错误的能力最强。
(4)如果程序的功能说明中含有输入条件的组合情况,则一开始就应考虑选用因果图和判定表法。

(5)对于参数配置类的软件,需要考虑参数之间的组合情况,考虑使用正交排列法选择较少的组合方式
(6)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,则应当再补充更多的测试用例。
(7)采用错误推断法再追加测试用例——依靠测试工程师的经验和智慧。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月6日
下一篇 2021年4月6日

相关推荐