计算软件测试数据流图独立路径,软件测试技术(2)

最小值,其中k<i

期望结果:基于k的正确平均值和总数

路径5测试用例:

value(i)=有效输入,其中i<100

value(k)>最大值,其中k≥i

期望结果:基于k的正确平均值和总数

路径6测试用例:

value(i)=有效输入,其中i<100

期望结果:基于k的正确平均值和总数

执行每个测试用例,并和期望值比较,一旦完成所有测试用例,测试者可以确定在程序中的所有语句至少被执行一次。

重要的是要注意,某些独立路径(如,例子中的路径1)不能以独立的方式被测试,即,穿越路径所需的数据组合不能形成程序的正常流,在这种情况下,这些路径必须作为另一个路径测试的一部分来进行测试。

16.4.4 图矩阵

导出流图和决定基本测试路径的过程均需要机械化,为了开发辅助基本路径测试的软件工具,称为图矩阵(graph matrix)的数据结构很有用。

图矩阵是一个正方形矩阵,其大小(即列数和行数)等于流图的节点数。每列和每行都对应于标识的节点,矩阵项对应于节点间的连接(边),图16-7显示了一个简单的流图及其对应的图矩阵[BEI90]。

该图中,流图的节点以数字标识,边以字母标识,矩阵中的字母项对应于节点间的连接,例如,边b连接节点3和节点4。

这里,图矩阵只是流图的表格表示,然而,对每个矩阵项加入连接权值(link weight),图矩阵就可以用于在测试中评估程序的控制结构,连接权值为控制流提供了另外的信息。最简单情况下,连接权值是 1(存在连接)或0(不存在连接),但是,连接权值可以赋予更有趣的属性:

·执行连接(边)的概率。

·穿越连接的处理时间。

·穿越连接时所需的内存。

·穿越连接时所需的资源。

举例来说,我们用最简单的权值(0或1)来标识连接,图16-7所示的图矩阵重画为图16-8。字母替换为1,表示存在边(为清晰起见,没有画出0),这种形式的图矩阵称为连接矩阵(linkmatrix)。图16-8中,含两个或两个以上项的行表示判定节点,所以,右边所示的算术计算就提供了另一种环形复杂性计算(参16.4.2节)的方法。

Beizer[BEI90]提供了可用于图矩阵的其他数学算法的处理,利用这些技术,设计测试用例的分析就可以自动化或部分自动化。

16.5 控制结构测试

16.4节所述的基本路径测试技术是控制结构测试技术之一。尽管基本路径测试简单高效,但是,其本身并不充分。本节讨论控制结构测试的其他变种,这些测试覆盖并提高了白盒测试的质量。

16.5.1 条件测试

条件测试是检查程序模块中所包含逻辑条件的测试用例设计方法。一个简单条件是一个布尔变量或一个可能带有NOT(“┓”)操作符的关系表达式。关系表达式的形式如:

E1<关系操作符>E2

其中E1和E2是算术表达式,而<关系操作符>是下列之一:“<”,“≤”,“=”,“≠”(“┓=”),“>”,或“≥”。复杂条件由简单条件、布尔操作符和括弧组成。我们假定可用于复杂条件的布尔算子包括OR“|”,AND“&”和NOT“┓”,不含关系表达式的条件称为布尔表达式。

所以条件的成分类型包括布尔操作符、布尔变量、布尔括弧(括住简单或复杂条件)、关系操作符或算术表达式。

如果条件不正确,则至少有一个条件成分不正确,这样,条件的错误类型如下:

·布尔操作符错误(遗漏布尔操作符,布尔操作符多余或布尔操作符不正确)。

·布尔变量错误。

·布尔括弧错误。

·关系操作符错误。

·算术表达式错误。

条件测试方法注重于测试程序中的条件。本节后面讨论的条件测试策略主要有两个优点,首先,测度条件测试的覆盖率是简单的,其次,程序的条件测试覆盖率为产生另外的程序测试提供了指导。

条件测试的目的是测试程序条件的错误和程序的其他错误。如果程序P的测试集能够有效地检测P中的条件错误,则该测试集可能也会有效地检测P中的其他错误,此

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值