测试用例设计之黑盒测试

谁说我不能喝 提交于 2019-12-18 02:24:33

黑盒测试又叫功能测试,这是因为在黑盒测试中主要关注被测软件的功能实现,而不是内部逻辑。在黑盒测试中,被测对象的内部结构,运作情况对测试人员是不可见的,测试人员对被测产品的验证主要是根据其规格,验证其与规格的一致性。

在绝大多数没有用户参与的黑盒测试中,最常见的测试有:功能性测试、容量测试、安全性测试、负载测试、恢复性测试、标杆测试、稳定性测试、可靠性测试等。
在这里插入图片描述
黑盒测试主要发现的错误:

功能不正确或遗漏

界面错误

数据库访问错误

性能错误

初始化和终止错误

测试流程:
在这里插入图片描述

  1. 等价类划分测试
    等价类划分是一种典型的黑盒测试方法,该方法完全不考虑程序的内部结构,只根据对软件的要求和说明,即需求规格说明,把程序输入域划分成若干个部分,然后从每个部分中选取少数有代表性的数据作为测试输入。使用等价类划分方法设计测试用例,必须在分析需求规格说明的基础上划分等价类。等价类划分把程序的输入域划分成若干个互不相交的子集,称之为等价类。

所谓等价类是指输入域的某个子集合,所有等价类的并便是整个输入域,这对于测试有两个非常重要的意义:完备性和无冗余性。
由于等价类由等价关系决定,因此等价类中的元素有一些共同的特点:如果用等价类中的一个元素作为测试数据进行测试不能发现软件中的故障,那么使用等价类中的其他元素进行测试也不可能发现故障。

如果测试数据全都从同一个等价类选取,除去其中一个测试数据对发现软件故障有意义外,使用其他的测试数据进行测试都是徒劳,它们对测试工作的进展没有意义,不如把测试时间花在其他等价类元素的测试中。

传统的等价类划分测试的实现分两步进行,一是确定等价类,二是确定测试用例。

等价类划分有效等价类和无效等价类

例如:微信红包的例子【0.01-200】

按数据范围划分:

有效的:0.01-200(1)

无效的: 小于0.01(2)

大于200(3)

0.01-200区间小数点后超过2位的值 (4)

按数据类型组成划分:

有效:数字 (5)

无效:非数字类型,英文,中文,特殊字符,html标签…(6)

按是否为空:

有效:不为空(7)

无效:为空(8)

等价类划分法用例设计原则

1)划分有效及无效等价类,为每一个等价类规定一个唯一的编号。

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

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

二、边界值分析法

大量的软件测试实践表明,故障往往出现在定义域或值域的边界上,而不是在其内部。为检测边界附近的处理专门设计测试用例,通常都会取得很好的测试效果。因此边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。边界值分析法是对等价类划分法的补充,边界值一般都是从等价类的边缘去寻找。边界值分析的基本思路:正好等于、刚刚大于、刚刚小于边界值作为测试数据。0.01、200

注意:0是一个特殊值,我们在考虑边界值的时候同时也要考虑这个特殊值。负数

2、边界值的作用:人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误!

3、举例子:

eg:比如我们生活中大家所熟悉的微信红包:最小金额0.01,最大金额200元。

边界值:0, 0.01, 0.02, 199.99 ,200, 200.01

特殊值:负数

“五点法”:取变量的最小值(min),最大值(max),略大于最小值的值(min+),略小于最大值的值(max-)以及正常值(nom)这五个值。需针对问题的输入域、输出域边界,耐心仔细的逐个进行考虑。

边界值分析利用输入变量的最小值min,稍大于最小值min+、域内任意值nom、稍小于最大值max-和最大值max来设计测试用例,即通过使所有变量取正常值,只使一个变量分别取最小值,稍大于最小值、域内任意值、稍小于最大值和最大值。
不管采用什么语言,变量的min、min+、nom、max-和max值根据语境可以清楚地确定。

健壮性测试是边界分析测试的一种扩展,变量除了取min、min+、nom、max-和max5个边界值外,还要考虑采用一个略超过最大值max+以及略小于最小值min-的取值,看看超过极限值时系统会出现什么情况。
边界值分析的大部分讨论都可直接用于健壮性测试。健壮性测试最有意义的部分不是输入,而是预期的输出。

边界值分析不适用逻辑变量和布尔型变量。

3.决策表测试
所有的黑盒测试方法中,基于决策表的测试最为严格,最具有逻辑性的测试方法。
在一些数据处理问题中,某些操作的实施依赖于多个逻辑条件的组合,即针对不同逻辑条件的组合之,分别执行不同的操作,决策表很适合处理这类问题。
3.1 决策表
决策表通常由4部分组成:条件桩、条件项、动作桩和动作项。
条件桩分列出问题的所有条件,除了某些问题对条件的先后次序有特定的要求外,通常在这里列出的条件其先后次序无关紧要。条件项部分对条件桩给出的条件列出所有可能的取值。动作桩则给出了问题规定的可能采取的操作,这些操作的排列顺序一般没有什么约束。动作项指出在条件项的各组取值情况下应采取的动作。
把任何一个条件组合的特定取值及相应要执行的动作称为一条规则,在决策表中贯穿条件项和动作项的一列就是一条规则。显然,决策表中列出多少组条件取值,就有多少条规则。

3.2 决策表测试的指导方针

基于决策表测试适合于要产生大量决策的情况(如:三角形问题),或者输入变量之间存在重要的逻辑关系的情况(如:nextdate函数)。
决策表测试方法适用于具有以下特征的应用 程序:
1、if-then-else逻辑突出
2、输入变量之间存在逻辑关系
3、设计输入变量子集的计算
4、输入与输出之间存在因果关系

适合于使用决策表设计测试用例的情况有:
1、规格说明以决策表形式给出,或者是很容易转换成决策表
2、条件的排列顺序不会也不应影响执行的操作
3、规则的排列顺序不会也不应影响执行的操作
4、当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
5、如果某一规则要执行多个操作,这些操作的执行顺序无关紧要
给出这些情况的目的是为了说明操作的执行应完全依赖于条件的组合。其实对于某些不满足这几条的决策表,同样可以用设计测试用例,只不过需增加一些其他的测试用例罢了。

4.因果图
等价类划分和边界值分析方法,着重考虑输入条件,不考虑输入条件的各种组合,也不考虑各个输入条件之间的相互制约关系。
如果在测试时必须考虑输入条件的各种组合,可能的组合数将是一个天文数字,因此必须考虑使用一种适合于描述多种条件的组合,产生多个相应动作的测试方法,这就需要因果图。

因果图方法能够帮助测试人员按照一定的步骤,高效率地开发测试用例,以检测程序输入条件的各种组合情况。它是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明中存在的不完整性和二义性。
因果图中使用了简单的逻辑符号,以直线连接左右结点。左结点表示输入状态,右结点表示输出状态。因果图用4种符号分别表示规格说明中的4种因果关系。
在实际问题中,输入状态相互之间还可能存在某些依赖关系,称之为:“约束”。比如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。
对于输入条件的约束有以下4种:
1、E约束:a和b中最多有一个可能为1,即a和b不能同时为1。
2、I约束:a、b和c中至少有一个必须是1,即abc不能同时为0。
3、O约束:a和b必须有一个且仅有一个为1。
4、R约束;a是1时,b必须是1,即当a是1时,b不能是0。
输出条件的约束只有M约束:若结果a是1,则结果b强制为0。

因果图方法最终生成决策表。

利用因果图导出测试用例需要见过以下几个步骤:
1、分析程序规格说明中哪些是原因,哪些是结果。原因常常是输入条件或输入条件的等价类,结果则是输出条件。
2、分析程序规格说明中语义的内容,找出原因与结果之间,原因与原因之间的对应关系,并将其表示成连接各个原因与各个结果的“因果图”。
3、由于语法或环境的限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特定的情况,在因果图上使用一些记号表明约束或限制条件。
4、把因果图转换成决策表。
5、根据决策表中每一列设计测试用例。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!