【软件测试 复习】第3章 软件测试基本方法(重中之重,估计占70%分值)

四、基于逻辑覆盖的方法

下面方法以该图为例子:

可知有4种判定条件:T1: a>1,T2: b<2,T3: a==3,T4: x>3。

4种路径:L13: p1+p3,L14: p1+p4,L23: p2+p3,L24: p2+p4。

1.语句覆盖(最弱)

(1)基本思想:应保证程序的每一条可执行语句至少执行一次。(例如本题,只要执行一个分支L24即可满足语句覆盖100%)。

(2)等同于对图中所有节点的覆盖。

(3)只关注语句而非判定表达式,所以对隐式分支根本察觉不到错误,铁fw。

2.判定覆盖

(1)基本思想:应保证程序中每个判定节点的取真和取假分支至少执行一次。(每个分支都要执行一次)

(2)等同于对图中所有边的覆盖

(3)画出判定表:

(4)依然有局限性,不是直接关注单个条件,依然会有小杂鱼跑掉。(例如本题,如果错写成(a>1)||(b<2),那如果只采用3,4依然无法发现缺陷,所以有用但不多)

3.条件覆盖

(1)基本思想:应保证程序中每个复合判定节点中,每个简单判定条件的取真和取假情况至少执行一次(例如本题两个判定节点,但是有四个判定条件)。

(2)每个判定条件取真/假各一次,不考虑判定节点的真假情况

(3)写出条件表(条件1和条件2各为真为假一次,加上条件3和条件4各为真为假一次,不过两者错开,则刚好完成下面的表格):

4.判定/条件覆盖

(1)即判定覆盖+条件覆盖,就是既要条件覆盖率100%,又要判定覆盖率100%。

(2)每个判定条件和判定节点均取到真/假各一次。

(3)设计一组符合该指标要求的测试用例比较困难,修改流程图得:

(4)写出判定表:

5.条件组合覆盖

(1)基本思想:应满足每个判定节点中,所有简单判定条件的所有可能的取值组合情况应至少执行一次(注意是取值,无穷无尽)。

(2)实质是通过列出真值表的方式来得到完全的覆盖,即以冗余换取方法的简单性

(3)当判定节点非常复杂,或者判定节点数过多,这方法就变成纯nt了。

6.对路径的测试——基本路径测试法(超级重点)

(1)根据程序代码 画出程序流程图

关键点在于判定节点写成菱形,正常语句写成方块,该图 方块序号14就是结束的地方。

还有就是把判定条件写上,分别是Y和N,写成T和F应该也不错吧?

(2)根据程序流程图画出控制流图

这步骤不要觉得简单,真的画出来就能拿分!

(3)计算程序的环路复杂度V(G)

方法有三种:

a.区域法:流程图中区域的数量对应于环型的复杂性,图中共4个区域,故V(G)= 4。

b.边法:公式为V(G)= E-N+2,E是边的数量,N是节点的数量。V(G)=10-8+2

c.节点法:公式为V(G)= P+1,P是流图G中判定节点的数量。V(G)=3+1

(4)导出可执行路径

关键在于找到结束方块,本题上面说了就是14。

PS:独立路径数量 = 其程序图的环复杂度。

(5)设计测试用例

7.环路复杂度奇葩版

(1)使用公式V(G)= E-N+2,必须保证图是个强(双向)连通图,即结束的地方连回到开始地方。

但是注意区域法不需要加这条边,这个仅针对这个边法,也不需要修改源代码。

(2)使用公式V(G)= P+1,必须保证不包含孤立节点,即Switch语句引起的多分支的程序可以修改为if…else if…else形式的判定结构。

该图中转化后,2和3.5和4.5,共三个节点,最后复杂度就是3+1=4。

(3)对于多出口程序,就让几个出口合在一块,然后用区域法最快,注意这时候区域法不连一块就用不了,前面俩情况不是这样的。

这里可算出复杂度为5。

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值