最近看了吴老在YY上录制的公开课视频:《黑盒测试框架--吴老分享》,觉得吴老在这一方面总结的挺好的,现摘录常用测试用例设计方法如下:
常用测试用例设计方法:
1、等价类划分
2、边界值分析法
3、因果图方法
4、正交实验设计方法
5、功能图分析方法
6、错误推测法
7、需求文档转化法
8、随机测试
9、对象属性分析法
1、等价类划分
(1)若输入条件中规定了输入数据的取值范围,则可划分出一个有效等价类和两个无效等价类。如:输入条件规定输入数据范围是1-10,则1-10之间的数据就是有效等价类;小于1和大于10的数据就是无效等价类。
(2)若输入条件中规定了输入数据的个数,则可划分出一个有效等价类和两个无效等价类。
(3)若规定了输入数据必须遵循的原则,则可以划分出一个有效等价类和若干个无效等价类。
(4)若输入条件中规定了输入数据的一组取值,而且软件对不同的输入值对应有不同的处理,则每个允许值构成一个有效等价类,其他值则构成一个无效等价类。
(5)若输入要求为整型数,则划分出正整数、零、负整数三个有效等价类,而小数为无效等价类。
等价类划分例子:
设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的日期检查功能。
输入等价类 | 有效等价类 | 无效等价类 |
日期的类型及长度 | ①6位数字字符 | ②有非数字字符 ③少于6位数字字符 ④多于6位数字字符 |
年份范围 | ⑤在1990~2049之间
| ⑥小于1990 ⑦大于2049 |
月份范围 | ⑧在01~12之间 | ⑨等于00 ⑩大于12 |
2、边界值分析方法
(1)若输入条件规定了取值范围,则选择恰好落在边界上,以及处在边界内、外边上的测试值
(2)若规定了输入数据的个数,则选择最小个数,最大个数,比最小个数多1、少1,比最大个数多1,少1等几种情况为测试时输入数据的个数
(3)若输入数据为有序集合结构,则应特别注意选取有序计划中的第一个和最后一个元素以及越界输入作为测试用例。
边界值分析法例子:
(1)对16bit的整数(即int型占2字节)而言32767和-32768是边界
(2)屏幕上光标在最左上、最右下位置
(3)报表的第一行和最后一行
(4)数组元素的第一个和最后一个
(5)循环的第0次、第一次和倒数第二次、最后一次
3、因果图法
前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等。考虑输入条件之间的相互组合,可能会产生一些新的情况。
因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。
(1)分析软件规格说明书中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
(2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的关系。根据这些关系,画出因果图。
(3)由于语法或环境限制,有些原因与原因之间原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。
(4)把因果图转换为判定表。
(5)把判定表的每一列拿出来作为依据,设计测试用例。
判定表例子:
|
| 1 | 2 | 3 |
屌丝男的个人情况 | 年薪 | 10w | 20w | 50w |
房子 | 无 | 100m2 | 300m2别墅 | |
车子 | 自行车 | 宝来 | 宝马 | |
拜金女的动作 |
| 看看他的发展,再说 | 他要是追我,我就嫁了 | 我要追他!!! |
|
|
|
|
|
4、正交实验设计方法:
正交实验设计方法:依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理的安排实验(测试)的一种科学实验设计方法。
类似的方法有:聚类分析方法,因子分析方法等。
对软件需求规格说明书中的功能要求进行划分,把整体的概要性的功能要求进行层层分解与展开,分解成具体的有相对独立性的基本的功能要求。这样就可以把被测试软件中所有的因子都确定下来,并为确定每个因子的权值提供参考的依据。确定因子与状态是设计测试用例的关键。因此要求尽可能全面的正确的确定取值,以确保测试用例的设计作到完整与有效。
5、功能图分析方法:
功能图方法中,要用到逻辑覆盖和路径测试的概念和方法,其属白盒测试方法中的内容,逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计方法,该方法要求测试人员对程序的逻辑结构有清楚的了解。由于覆盖测试的目标不同,逻辑覆盖可分为:
语句覆盖:程序中的每条语句至少应该执行一次
判定覆盖:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称为分支覆盖。
条件覆盖:一个判定语句是由多个条件组合而成的复合判定。构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。
条件组合覆盖:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。
6、错误推测方法:
基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。
(1)程序中所有可能有的错误
(2)容易发生错误的特殊情况
(3)以前产品测试中曾经发现的错误
7、需求文档转化法:
所见即所得的思想:
(1)所有的需求文档描述的文字信息,转化为用例
(2)所有的示意图、流程图、状态图等信息,直接转化为测试用例
(3)所有项目需求达成的口头共识,需求确认的邮件沟通信息,直接转化为测试用例。
8、随机测试法
随意测试,不考虑任何测试用例和需求,完全站在一个用户者的角度对产品进行使用。
适用场景:
(1)所有之前设定的用例已经执行完毕
(2)海量的条件组合无法一一遍历的时候