第四章:Coverage-based testing

news2024/11/29 2:29:47

文章目录

  • Control-flow testing
  • Data-flow testing
  • Mutation analysis
    • Control-flow testing
      • CFG 注意事项
      • Definitions for control-flow analysis
        • execution path
        • branch / decision
        • condition
        • feasible path
      • coverage-based 标准
        • Statement coverage (or node coverage)
        • Branch coverage (or decision coverage)
        • Condition coverage
        • Decision/Condition coverage
        • Multiple-condition coverage
        • Path coverage
        • 实例 1
        • 实例 2
        • Coverage 计算
    • Data-Flow Testing
      • Static Data-Flow Analysis
        • anomalies (anomaly)
          • u-r anomaly
          • d-u anomaly
          • d-d anomaly
          • 实例
        • data-flow analysis 适合分析的错误
    • Dynamic Data-Flow Analysis with Testing
      • 基础表示 C-use,P-use,d, u, c, p, k
      • definition clear path(清晰路径定义)
      • loop-free path (无环路径)
      • Coverage-based 标准(criteria)
        • All-Defs: 每个定义至少调用一次的 definition-clear 路径
      • All-Uses: 所有的 define 的所有 uses
      • All-Du-Paths:每个 use 的所有路径都要包含
    • Mutation Analysis
      • Coupling Effect
      • Coupling Effect, Mutants, and Testing
      • Equivalent Mutants
        • Problems
        • 好处方面
    • Comparing Coverage Criteria
    • Effectiveness of Coverage Criterion

Control-flow testing

  • 控制流策略根据 控制流图 中的控制信息选择测试输入来执行路径。它们基于图中的控制信息进行路径选择,通常由if语句和while循环中的谓词给出。
  • 覆盖标准有四个:
    在这里插入图片描述

Data-flow testing

  • 数据流策略根据 变量之间的数据流选择输入,以便在程序中执行路径;例如,在定义变量时(如给变量赋值)和在程序中使用该变量之间。
    在这里插入图片描述
  • 与控制流策略一样,test inputs 被选择以覆盖图形(因此也是代码)的测试用例。覆盖准则包括:
    在这里插入图片描述

Mutation analysis

  • 突变分析是一种 衡量测试套件有效性的技术,其副作用是创建并添加测试用例到该测试套件中。该技术基于在程序中引入故障,并评估测试套件是否能够检测到这些故障。如果不能,则说明该测试套件不足以发现故障,需要添加新的测试用例来找出这个故障。
    在这里插入图片描述
    在这里插入图片描述
  • 上述三种技术都是为了选更好的 test input, 而不是 test case (test case 应该还包括预期的 output 以及执行环境);而 expected output 是通过 oracle 技术来实现的

测试输入(Test Input):

  • 测试输入是指在进行软件测试时提供给系统或应用程序的数据。这些数据可以是用户输入的命令、文件、网络请求或任何其他可以被软件处理的信息。测试输入的目的是触发软件的处理流程,以便检测软件是否能正确地处理这些输入,或者是否存在处理输入时的缺陷。
    例如,如果你正在测试一个计算器程序,那么一个测试输入可能是数字“42”和操作符“+”。

测试用例(Test Case):

  • 测试用例是一个更为全面的概念,它不仅包含了测试输入,还包括预期结果和执行条件。测试用例描述了一个测试场景,包括执行步骤、测试输入、预期行为和预期输出的详细信息。测试用例是为了验证特定功能或软件需求而设计的,并且是测试计划的一部分。

Control-flow testing

  • 白盒测试最常见的形式是控制流程测试,其目的是理解程序内部的控制流程。有多种方法可以捕获程序中的控制流程,但迄今为止最常用的方法是使用控制流图(CFG)。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

CFG 注意事项

在这里插入图片描述

  • 首先,请注意我们已将CFG分成了许多基本块。每个基本块都是一系列没有分支的语句,只有一个入口点和一个出口点,并且只有一条通过该块的路径。使用基本块可以更容易地可视化和分析大型CFG。其次,我们已用字母标记了图中的所有节点。通常情况下,由于路径是控制流图中节点的序列&#x

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库的备份和恢复

备份 完全备份:整个数据库完整的进行备份 增量备份:在完全备份的基础上,对后续新增的变量进行备份 备份的需求: 1、在生产环境中,数据的安全至关重要。任何数据的丢失都可能产生非常严重的后果 2、数据为什么会丢失…

电力设备行业密钥管理系统的功能及特点 安当加密

电力设备行业密钥管理系统的主要功能包括: 密钥生成:密钥管理系统能够采用多因素身份验证技术,如指纹识别和动态口令等,确保生成的密钥对用户来说易于使用,同时又足够安全。密钥存储:应采用多层安全机制&a…

管道的介绍

管道 它是一个连接读写进程的文件,用户进程间数据交互和进程同步造作。管道是单向的,发送进程视管道为输出文件,将大量数据以字节流的形式送入管道;接收进程视管道为输入文件,接收管道的数据。 管道优缺点 1、管道…

【C++初阶】一、入门知识讲解(C++关键字、命名空间、C++输入输出、缺省参数、函数重载)

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 【数据结构初阶】十一、归并排序(比较排序)的讲解和实现 (递归版本 非递归版本 -- C语言实现)-CSDN博客 引入:什么是C C语言是结构化和模块化的…

HomeAssistant添加HACS插件并实现公网控制米家,HomeKit等智能家居

HomeAssistant添加HACS插件并实现公网控制米家,HomeKit等智能家居 文章目录 HomeAssistant添加HACS插件并实现公网控制米家,HomeKit等智能家居基本条件一、下载HACS源码二、添加HACS集成三、绑定米家设备 ​ 上文介绍了如何实现群晖Docker部署HomeAssist…

pytorch实现 --- 手写数字识别

本篇文章是博主在人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在Pytorch&#xff…

天津热力管网监测系统丨高效、稳定的供热解决方案

热力管网监测系统是一种用于监测和控制系统热力管道的智能技术。热力管网监测系统通过将传感仪器建设在热力管道上,实现对管道内温度、压力、流量等参数的实时监测,同时将数据传输到控制中心进行数据分析,以保障热力管道的安全稳定运行。 中央…

不学51直接学stm32可以吗?学stm32需要哪些基础?

不学51直接学stm32可以吗?学stm32需要哪些基础? 不管那些大佬技术多么牛逼,大多数入门都是从51单片机开始。 最近有一些入门的小伙伴问我说看到同学都从直接从STM32开始干了。最近很多小伙伴找我,说想要一些stm32的资料&#xff…

C++ reference

cppreference.com 《现代C语言核心特性解析》 这是一本 C 进阶图书,全书分为 42 章,深入探讨了从 C11 到 C20 引入的核心特性。 本书不仅通过大量的实例代码讲解特性的概念和语法,还从编译器的角度分析特性的实现原理,让读者…

王道p18 第11题 现在有两个等长升序序列 A和 B,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个序列 A和B的中位数。

视频讲解&#x1f447;&#xff1a; p18 第10题 c语言代码实现王道数据结构课后代码题_哔哩哔哩_bilibili 本题代码如下 int search(int a[], int b[], int c[]) {int i 0;int j 0;int k 0;while (i < 5 && j < 5){if (a[i] < b[j])c[k] a[i];elsec[k…

NOIP2005提高组第二轮T3:传纸条

题目链接 NOIP2005提高组第二轮T3&#xff1a;传纸条 题目描述 小渊和小轩是好朋友也是同班同学&#xff0c;他们在一起总有谈不完的话题。一次素质拓展活动中&#xff0c;班上同学安排坐成一个 m m m 行 n n n 列的矩阵&#xff0c;而小渊和小轩被安排在矩阵对角线的两端…

GraphCodeBert:基于数据流的代码表征预训练模型

GraphCodeBert https://arxiv.org/abs/2009.08366 1 模型结构 使用多层双向 Transformer 变量定义 &#xff1a; C&#xff1a;源码集合W&#xff1a;文本集合V&#xff1a;变量集合E&#xff1a;变量间的边的集合 输入&#xff1a;把注释&#xff0c;源代码和变量集连接为…

【MySQL基本功系列】第一篇 先熟悉MySQL的运行逻辑

​ 我将推出一系列关于MySQL的博客文章&#xff0c;涵盖了从入门到深入底层的原理。这些文章将包括MySQL的运行逻辑、InnoDB存储引擎、SQL优化、undo log、bin log等多个方面的知识。希望这些文章能为你提供宝贵的信息和洞见&#xff0c;并帮助你更好地理解和应用MySQL。同时&a…

国产系列 | Atlas 300I Pro 推理卡性能、应用场景、技术规格介绍

Atlas 300I Pro 推理卡是基于昇腾AI处理器的新一代高性能推理卡&#xff0c;融合“通用处理器、AI Core、编解码”于一体&#xff0c;提供超强AI推理、目标检索等功能&#xff0c;具有超强算力、超高能效、高性能特征检索、安全启动等优势&#xff0c;可广泛应用于OCR识别、语音…

UMS攸信技术与欣奕华复合机器人携手共进,领跑智能制造未来!

近年来&#xff0c;全球机器人领域的相关创新机构与科技企业不断探索人工智能、人机协作、多技术融合等领域&#xff0c;推动机器人在仓储运输、智能工厂、医疗康复等领域的深入应用。 2023年10月19日&#xff0c;攸信技术与浙江欣奕华达成战略合作&#xff0c;成为其产品特约经…

Mysql Cluster (NDB - Network Database) - 分布式

Mysql高可用架构 复制&#xff08;Replication&#xff09; 是本文中所有 MySQL 技术的基础。包括&#xff1a;异步复制、半同步复制&#xff0c;增强半同步复制。InnoDB 副本集&#xff08;MySQL InnoDB ReplicaSet&#xff09; 无缝衔接其他 MySQL 官方提供的应用程序&#…

Java智慧工地管理平台可视化大数据建造工地APP源码

建筑行业是国民经济的重要物质生产部门和支柱产业之一&#xff0c;同时&#xff0c;建筑业也是一个安全事故多发的高危行业。如何加强施工现场安全管理、降低事故发生频率、杜绝各种违规操作和不文明施工、提高建筑工程质量&#xff0c;是摆在各级政府部门、施工企业面前的一道…

多机位直播案例

目录 1、案例简述 2、设备准备&#xff1a; &#xff08;1&#xff09;笔记本电脑 &#xff08;2&#xff09;手机 &#xff08;3&#xff09;触控一体机 &#xff08;4&#xff09;教室前端监控摄像机 &#xff08;5&#xff09;教室后端监控摄像机 &#xff08;6&…

R语言piecewiseSEM结构方程模型在生态环境领域实践技术应用

结构方程模型&#xff08;Sructural Equation Modeling&#xff0c;SEM&#xff09;可分析系统内变量间的相互关系&#xff0c;并通过图形化方式清晰展示系统中多变量因果关系网&#xff0c;具有强大的数据分析功能和广泛的适用性&#xff0c;是近年来生态、进化、环境、地学、…

java拉取股票数据进行分析

1.背景 2.数据获取分析 3.代码获取数据 代码: package com.life.gupiao;import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; import cn.hutool.poi.excel.ExcelUtil; import…