博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【软件质量保证与测试】4.2逻辑覆盖测试
阅读量:3957 次
发布时间:2019-05-24

本文共 1591 字,大约阅读时间需要 5 分钟。

文章目录

逻辑覆盖:一种动态白盒测试方法,基于程序的内部逻辑结构进行的测试。主要包括
语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖

1. 语句覆盖

  1. 语句覆盖:使被测程序中的每一条可执行语句至少执行一次
  2. 语句覆盖率=(至少被执行一次的可执行语句的数量)/(可执行语句的总数)
  3. 语句覆盖是最弱的逻辑覆盖标准
  4. 语句覆盖优点
    1、检查所有语句;
    2、结构简单的代码的测试效果较好;
    3、容易实现自动测试;
    4、代码覆盖率高;
    5、如果是程序块覆盖,则不涉及程序块中的源代码
  5. 语句覆盖缺点:对控制结构不敏感,对程序执行逻辑结构的覆盖率低,不能发现判断逻辑运算符中出现的错误
    在这里插入图片描述

2. 分支覆盖/判定覆盖

  1. 分支覆盖/判定覆盖:报告在控制结构中是否测试了布尔表达式取值分别为真和假的情况
  2. 分支覆盖保证只要程序能跳转,就能跳转到所有可能的目标语句
  3. 判定覆盖率=(判定结果被评价的次数)/(判定结果的总数)
  4. 实际应用:首先设计若干个测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足
  5. 只要满足了判定覆盖标准的测试用例就一定满足语句覆盖标准,反之则不然
  6. 判定覆盖的测试充分性仍然较弱,它只是判断整个判定表达式的最终取值结果,而不考虑表达式中每个条件的取值情况
    在这里插入图片描述

3. 条件覆盖

  1. 条件覆盖:使每个判断中的每个条件的可能取值至少满足一次
  2. 条件覆盖率:在测试时运行被测程序后,所有判断语句中的每个条件的可能取值(真值和假值)出现过的比率
  3. 条件覆盖率=(条件操作数值至少被评价一次的数量)/ (条件操作数值的总数)$$
  4. 条件覆盖缺点
    1、并不能全面覆盖所有路径
    2、用例数量的增加
    在这里插入图片描述
    在这里插入图片描述

4. 判定-条件覆盖

  1. 条件覆盖不一定包含判定覆盖,反之亦然。因此,就需要一种能将两者结合起来的逻辑覆盖标准,这就是判定-条件覆盖,也称为分支-条件覆盖或条件判定组合覆盖
  2. 分支条件覆盖率:在测试时运行被测程序后,所有判断语句中每个条件的所有可能值(为真为假)和每个判断本身的判定结果(为真为假)出现的比率
  3. 分支条件覆盖率=(条件操作数值或判定结果至少被评价一次的数量)/(条件操作数值总数+判定结果总数)
  4. 判断条件覆盖率实际上就是分支覆盖率和条件覆盖率的组合
  5. 判定-条件覆盖并不一定能够查出逻辑表达式中的所有错误。从测试充分性上来看,满足判定-条件覆盖就一定能够满足条件覆盖、判定覆盖和语句覆盖
  6. 实际应用:首先设计若干个测试用例,然后运行被测程序,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次
  7. 判定-分支覆盖优缺点
    1、既考虑了每一个条件,又考虑了每一个分支,发现错误能力强于分支覆盖和条件覆盖
    2、并不能全面覆盖所有路径
    3、用例数量的增加

例1

在这里插入图片描述

在这里插入图片描述

例2

在这里插入图片描述

在这里插入图片描述

5. 路径覆盖

  1. 路径覆盖就是设计足够多的测试用例,使被测程序的每条可执行路径都至少执行一次
  2. 路径覆盖率:在测试运行时运行被测程序后,程序中所有可能的路径被执行过的比率
  3. 路径覆盖率=(至少被执行到一次的路径数)/(总的路径数)
  4. 对于复杂性大的程序要做到所有路径覆盖(测试所有可执行路径)是不可能的
  5. 在不能做到所有路径覆盖的前提下,如果某一程序的每一个独立路径都被测试过,便可认为程序中的每个语句都已经检验过了,即达到了语句覆盖。这就是通常所说的基本路径测试方法
  6. 基本路径测试方法是在控制流图的基础上,通过分析控制结构的环形复杂度,导出执行路径的基本集,再从该基本集设计测试用例
  7. 基本路径测试方法包括以下4个步骤:
    (1)画出程序的控制流图。
    (2)计算程序的环形复杂度,导出程序基本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。
    (3)导出基本路径集,确定程序的独立路径
    (4)根据(3)中的独立路径,设计测试用例的输入数据和预期输出

在这里插入图片描述

转载地址:http://hkxzi.baihongyu.com/

你可能感兴趣的文章
@Produces注解
查看>>
谈谈序列化—实体bean一定要实现Serializable接口?
查看>>
实用小技巧之电脑如何滚动截屏/截取长图
查看>>
Eclipse离线安装Java Decompiler插件
查看>>
Http预请求options
查看>>
未来设计师的工作模式?从室内设计领域的实时设计说起 | Mixlab趋势
查看>>
智能设计 | MixAI 知识库 No.69
查看>>
通过研究微信文章的相关推荐逻辑 ,尝试生成指南| Mixlab设计黑客
查看>>
浏览器低成本实现免手提的用户体验,使用人脸、手势、姿态追踪 | Mix群聊
查看>>
这个世界上肯定有另一个我,做着我不敢做的事,过着我想过的生活 | MixAI 知识库 No.70...
查看>>
表情包数据挖掘 | Mix群聊
查看>>
如何阅读科研论文
查看>>
理解本真的REST架构风格
查看>>
10款免费且开源的项目管理工具
查看>>
java调用javascript :js引擎rhino
查看>>
asp 中常用的文件处理函数
查看>>
ADO中sqlserver存储过程使用
查看>>
Linux KernelTech版FAQ 1.0
查看>>
ntfs分区iis故障的解决
查看>>
个人创业“六大死穴”
查看>>