第7章 软件测试(2)

杏花、白玉兰和一个我不知晓的粉色小花花都开了,满园春色收不住啊,没想到疫情却蔓延各大省份,眼看护照到今年8月份就过期了,身为一个旅游从业者,现在都已经忘记旅游的感觉了。真的希望疫情早点散去,让全世界的人民都回归正常生活,国内还想再次去南京、普陀山、杭州、苏州和上海呀,没去过的还想带娃去三亚、长隆和新疆呢。啊我想吃遍全中国的美食啊(咽口水中)还想再次去瑞士小镇上溜达、虽然手表还是买不起,上次许愿重回罗马都是9年前的事情了,也没看见过埃菲尔铁塔的夜景,想去泰国买山竹呀好便宜呢,嗯还想去皇帝岛看清澈的大海海。嗯风景都不错,理想总是丰满的,现实就是既是现在恢复正常了,出去玩也需要钱钱不是嘛。你现在还有吗(捂脸中)。。今天跑题有点严重啊。。。

7.4软件测试用例的设计

测试用例的设计人员必须努力以最少的测试用例来发现最大量的可能错误。

7.1白盒技术

是以程序结构为依据,被测对象基本上是源程序,以程序的内部逻辑结构为基础设计测试用例。

1、逻辑覆盖:是一组覆盖方法的总称,测试过程逐渐越来越完整的通路测试,在逻辑覆盖法中大致认为语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖这些不同的覆盖标准。

(1)语句覆盖:设计足够的测试用例运行被测程序,使程序的每条可执行语句至少执行一次,图7.1所示的程序流程图是一个被测模块的处理算法,语句覆盖好像全面的检验了每条语句,实际上它只测试了逻辑表达式为“真”的情况,语句覆盖测试很不充分,是一种较弱的覆盖标准。

图7.1

(2) 判定覆盖

设计足够的测试用例,运行被测程序,不仅使被测程序中的每条语句至少执行一次,而且每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每个分支至少通过一次,因此判定覆盖也称为分支覆盖。判定覆盖比语句覆盖强,但是对于程序逻辑的覆盖程度仍不充分。

(3)条件覆盖

设计足够的测试用例,不仅每条语句至少执行一次,而且使得判定表达式中的每个条件都能获得各种可能的结果,条件覆盖比判定覆盖强,但也有例外情况,为了解决这个问题需要对条件和分支同时考虑。

(4)判定条件覆盖

判定条件覆盖实际上是前两种方法结合起来的一种设计方法,它是判定和条件覆盖的交集。

(5)条件组合覆盖

条件组合覆盖:是比较强的覆盖,是设计足够的测试用例,使得每个判定表达式中的条件的各种可能组合都至少出现一次,条件组合覆盖是前述几种覆盖标准中最强的,但也有缺陷,所有的条件组合覆盖不能保证所有的路径被执行。

(6)路径覆盖

设计所有的测试用例来覆盖程序中的所有可能的执行路径。

在实际的测试用例设计过程中,可以根据需要和不同的测试用例设计特征,将不同的方法结合起来,交叉使用,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例,已达到路径覆盖测试标准以实现最佳的测试用例输出。

2、循环覆盖

在以上讨论的逻辑覆盖中,只讨论了程序内部在判定存在的逻辑结构的测试用例设计技术。而循环也是程序的主要逻辑结构,企图覆盖哟循环结构的所有路径同样是不可能的,但可以通过限制循环次数来测试,对单循环和嵌套循环分别考虑。

(1)单循环:设m为可允许执行循环的最大次数,可以从以下4个方面考虑测试用例的设计。

①只执行循环零次

②只执行循环一次

③执行循环n次,n<m

④执行循环m-1次,m次 m+1次

(2)嵌套循环

执行步骤如下

①对内循环进行单循环测试,此时置外循环为最小循环计数值。

②由内向外进行下一层的循环测试。

3基本路径测试

基本路径测试是在程序控制流程图的基数上,通过分析控制结构的环路复杂性,导出基本可执行路径集合,从而设计测试用例,设计出的测试用例保证这些路径至少通过一次。

使用基本路径测试技术设计测试用例的步骤如下

(1)根据详细设计结果或源程序画出相应的程序图,程序图时程序流程图的抽象化,是反映控制流图的有向图,其中小圆圈称为结点,代表程序图中每个处理符号:即矩形框、菱形框、有箭头的连线表示控制流向,称为程序图中的边式路径,图7.2(a)所示是一个程序流程图,可以将它转换成图7.2(b)所示的程序图    图7,2如下

在转换时要特别注意,一条边必须终止一个结点,如果判断中的逻辑表达式是复合条件,应当分解为一系列只有单个条件的嵌套判断。

(2) 计算程序图G的环形复杂度V(G)环形复杂度定量度量程序的逻辑复杂性,有了描述程序控制流的程序图之后,可以用以下3种方法之一来计算环形复杂度。

①Mccabe 定义程序图的环形复杂度等于程序途中的区域的个数,由边和结点围成的面积称为区域,当计算区域个数时,应该包括图外部未被围起来的区域。

②程序图的环形复杂度V(G)=E-N+2,其中E是程序图中的边(弧)数,N是结点数。

③程序图G的环形复杂度V(G)=P+1,其中P是程序图中的判定结点的个数。

(3)确定线性独立路径的集合的独立路径条数,所谓独立路径是指至少引入程序的一个新处理语句集合或一个新条件的路径。

(4)导出测试用例,通过程序流程图的基本路径来导出基本的程序路径的集合,这个过程和之前所述的逻辑覆盖法类似。

(5)准备测试用例,确保基本路径集中的每一条路径的执行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值