软件测试Day5|软件测试理论03

白盒测试方法

针对程序的代码进行测试,代码覆盖率高;缺点:覆盖所有代码路径大、业务功能可能覆盖不全、测试开销大

  • 静态方法:1)桌面检查(一个人检查);2)代码审查(开会议检查,卡法人员说明功能;主要是代码规范);3)代码走查(开会,与会人员提前准备测试数据,人工计算逻辑走向;主要是功能实现);4)代码扫描工具
  • 动态方法:
    • 逻辑覆盖法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖
    • 基本路径测试法

逻辑覆盖法

  • 是通过对程序逻辑结构的遍历实现程序的覆盖
  • 覆盖率 = 至少被执行一次的item数 / item总数
    在这里插入图片描述

1.语句覆盖法

  • 语句覆盖率 = 至少被执行一次的语句数量 / 可执行的语句总数
  • 以下语句覆盖率 = 4/4 = 100%
数据语句
x=3,y=1,magic=21,4
x=-3,y=-1,magic=-22,3,4
  • 局限:语句覆盖不能准确的判断运算中的逻辑关系错误;【如果语句a中的 && 变成 || ,以上两个用例仍正确通过】

2.判定覆盖法

  • 判定覆盖也称为分支覆盖;使得程序中的每个判断执行的”真“”假“都至少被执行一次
  • 判定覆盖率 = 每个判定的真假值至少出现一次 / 判定结果的总数
  • 以下判定覆盖率 = 4/4 = 100%
数据P1P2
x=3,y=1,magic=2TF
x=-1,y=0,magic=-2FT
  • 判定覆盖能满足语句覆盖
  • 局限:判定覆盖不能准确的判断运算中的逻辑关系错误;【如果语句a中的 && 变成 || ,以上两个用例仍正确通过】

3.条件覆盖法

  • 设计测试用例,使得每个判定中的每个条件至少有一次取真值,有一次取假值
  • 条件覆盖率 = 每个条件的真假值至少出现一次 / 条件结果的总数
  • 以下条件覆盖率 = 6/(2*3) = 100%
数据C1C2C3P1P2路径
x=3,y=0,magic=-2TFTFTa-c-d-f
x=-1,y=3,magic=2FTFFFa-c-e-f
  • 局限:100%条件覆盖并不能完全覆盖判定覆盖;

4.判定条件覆盖法

  • 设计测试用例,使得每个判定以及每个判定中的每个条件至少有一次取真值,有一次取假值;即同时满足判定覆盖和条件覆盖

  • 判定条件覆盖率 = 每个判定和每个条件的真假值至少出现一次 / (判定结果总数+条件结果总数)

  • 以下数据判定条件覆盖率 = 6/(2*3) = 100%

数据C1C2C3P1P2路径
x=3,y=3,magic=2TTFTFa-b-e-f
x=-3,y=0,magic=-2FFTFTa-c-d-f
  • 判定条件覆盖能满足判定覆盖语句覆盖条件覆盖
  • 局限:判定条件覆盖可能不能准确的判断运算中的逻辑关系错误(or);【如果语句a中的 && 变成 || ,以上两个用例仍正确通过;】

5.条件组合覆盖法

  • 设计测试用例,使得每个判定中的每个条件所有可能组合至少进行一次

  • 判定条件覆盖率 = 条件组合至少出现一定的数量 / (条件组合总数)

  • 案例中判定2个-》条件2+1个-》条件组合2*2+2=4+2=6

  • 以下数据条件组合覆盖率 = 6/(2*3) = 100%

数据C1C2C3P1P2路径
x=3,y=0,magic=-2TFTFTa-c-d-f
x=-3,y=15,magic=2FTFFFa-c-e-f
x=3,y=3,magic=2TTFTFa-b-e-f
x=-3,y=0,magic=-2FFTFTa-c-e-f
  • 条件组合覆盖能满足判定条件覆盖判定覆盖语句覆盖条件覆盖
  • 局限:不能保证所有路径都覆盖【以上差a-b-d-f】

6.路径覆盖法

  • 设计测试用例,覆盖程序

  • 路径覆盖率 = 至少被执行一次的路径数 / 总路径数

  • 案例中两个分支 2*2 = 4条路经

  • 以下数据条件组合覆盖率 = 6/(2*3) = 100%

数据C1C2C3P1P2路径
x=3,y=3,magic=-2TTTTTa-c-d-f
x=-3,y=3,magic=-2FTTFTa-c-d-f
x=3,y=3,magic=2TTFTFa-b-e-f
x=-3,y=15,magic=-2FTFFFa-c-e-f
  • 路径覆盖不能满足条件覆盖也就不能满足条件组合覆盖以及判定条件覆盖【C2为假没有】
  • 局限:逻辑循环覆盖工作量巨大

基本路径覆盖法

  • 在程序控制流图的基础上,通过分析程序的环路复杂性,导出可执行路径集合,从而设计测试用例。
  • 案例:数字代表代码行数
    在这里插入图片描述在这里插入图片描述
    流图G的圈复杂度为V(G)=路径总数,E为边的数量,N为节点的数量,P为判定节点的数量
    1)V(G) = E-N+2 = 10-8+2 = 4;
    2)V(G) = P+1 = 3+1 = 4
数据结果路径
iRecodNum=0,x=04-14
iRecodNum=1,iTtype=0x=24-6-7-14
iRecodNum=1,iTtype=1x=104-6-9-10-13-4-14
iRecodNum=1,iTtype=2x=204-6-9-12-13-4-14

总结

  • 主要用于单元测试
  • 先静态,后动态
  • 设计用例一般使用基本路径测试,重点模块使用多种逻辑覆盖率标准

逻辑覆盖方法间的覆盖关系 and 发现错误能力排序

语句覆盖判定覆盖判定条件覆盖条件组合覆盖
语句覆盖条件覆盖判定条件覆盖条件组合覆盖
语句覆盖判定覆盖路径覆盖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/101860.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

链表OJ练习(2)

一、分割链表 题目介绍: 思路:创建两个链表,ghead尾插大于x的节点,lhead尾插小于x的节点。先遍历链表。最后将ghead尾插到lhead后面,将大小链表链接。 我们需要在创建两个链表指针,指向两个链表的头节点&…

WebAssembly 在云原生中的实践指南

1 WebAssembly 介绍 WebAssembly(Wasm)是一种通用字节码技术,它可以将其他编程语言(如 Go、Rust、C/C 等)的程序代码编译为可在浏览器环境直接执行的字节码程序。 WebAssembly 的初衷之一是解决 JavaScript 的性能问…

Nginx基础+高级(2022版):待更新

1. 文章说明 说明:目前讲的是第一部分nginx核心技术篇,后需篇章会以第一部分为核心技术篇为基础来展开深度讲解,详情关注后续课程的发布。 2. 介绍和准备环境 2.1 介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器&#xf…

【QT】使用qml的QtWebEngine遇到的一些问题总结

在使用qt官方的一些QML的QtWebEngine相关的例程的时候,有时在运行会报如下错误: WebEngineContext used before QtWebEngine::initialize() or OpenGL context creation failed 这个问题在main函数里面最前面加上: QCoreApplication::setAttr…

元素居中的方法总结

目录 垂直居中 行内元素垂直居中 单行文本垂直居中 1.line-height: 200px; 多行文本垂直居中 1.tablevertical-align:middle 块级元素垂直居中 1.display: flex;align-items: center; 2.使用position top margin-top 水平居中 行内元素水平居中 1.text-align:cente…

CUDA小白 - NPP(3) 图像处理 Color and Sampling Conversion

cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus&#xf…

说说TIME_WAIT和CLOSE_WAIT区别

分析&回答 TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接&#xf…

【ES6】—类与继承

一、 定义类 class People {constructor (name, age) {this.name namethis.age age}showName () {console.log(this.name)} } let p1 new People(xiaoxiao, 30) console.log(p1) // People {name: xiaoxiao, age: 30}小节: 使用class关键字声明类使用construc…

查看GPU占用率

如何监控NVIDIA GPU 的运行状态和使用情况_nvidia 85c_LiBiGo的博客-CSDN博客设备跟踪和管理正成为机器学习工程的中心焦点。这个任务的核心是在模型训练过程中跟踪和报告gpu的使用效率。有效的GPU监控可以帮助我们配置一些非常重要的超参数,例如批大小,…

安防监控/视频存储/视频汇聚平台EasyCVR接入海康Ehome车载设备出现收流超时的原因排查

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚平台既具…

ubuntu22.04搭建verilator仿真环境

概述 操作系统为 Ubuntu(22.04.2 LTS),本次安装verilator开源verilog仿真工具,进行RTL功能仿真。下面构建版本为5.008的verilator仿真环境。先看一下我系统的版本: 安装流程 安装依赖 sudo apt-get install git perl python3 make autoc…

linux深入理解多进程间通信(未完)

1.进程间通信 1.1 进程间通信目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件…

第一章辩证唯物论,考点七思维导图

逻辑框架 考点七思维导图:

交换机端口安全实验

文章目录 一、实验的背景与目的二、实验拓扑三、实验需求四、实验解法1. PC配置IP地址部分2. 在SW1上开启802.1X身份验证3. 创建一个用户身份验证的用户。用户名为wangdaye,密码为1234564.创建一个端口隔离组,实现三台PC无法互相访问 摘要: 本…

使用gradio库的File模块实现文件上传和生成可下载文件

使用gradio库的File模块实现文件上传和生成可下载文件 文章目录 使用gradio库的File模块实现文件上传和生成可下载文件一、背景二、介绍1、gradio简介2、File模块简介3、tempfile 模块 三、文件上传demo实战1、具体代码2、运行样例 一、背景 在用Gradio设计改写效果审核AI的de…

使用Docker安装和部署kkFileView

🎈1 参考文档 kkFileView官方文档 🚀2 安装kkFileView 拉取Redis镜像。 docker pull keking/kkfileview启动docker容器。 docker run -it -d -p 8012:8012 keking/kkfileview --restart always解释: docker run redis # 从kkfileview镜像运行…

【kubernetes】使用KubeSphere devops部署我的微服务系统

KubeSphere Devops 入门使用KubeSphere的Devops功能部署"我的微服务系统" (内容学习于尚硅谷云原生课程) kubesphere devops官方文档: https://v3-1.docs.kubesphere.io/zh/docs/devops-user-guide/how-to-use/create-a-pipeline-u…

Vue2+Vue3笔记(尚硅谷张天禹老师)day02

声明:只是记录,初心是为了让页面更好看,会有错误,我并不是一个会记录的人,所以有点杂乱无章的感觉,我先花点时间把视频迅速过掉,再来整理这些杂乱无章的内容 组件化编程 按照视频来的话,这里应该有一些概念的东西&…

多线程应用——阻塞队列

阻塞队列 文章目录 阻塞队列1.队列的概念2.阻塞队列3.现实中的例子4.消息队列5.使用队列的优势1.解耦2.削峰填谷3.异步操作 6.实现 1.队列的概念 一种先进先出的数据结构 2.阻塞队列 队列写元素是从队尾插入,从对头取出 当插入元素时,先判断一下队列…

com.squareup.okhttp3:okhttp 组件安全漏洞及健康度分析

组件简介 维护者square组织许可证类型Apache License 2.0首次发布2016 年 1 月 2 日最新发布时间2023 年 4 月 23 日GitHub Star44403GitHub Fork9197依赖包5,582依赖存储库77,217 com.squareup.okhttp3:okhttp 一个开源的 HTTP 客户端库,可以用于 Android 和 Jav…