第六章:Property-based Testing and Test Oracles

news2024/11/26 10:40:53

文章目录

  • Test Oracles
    • Active and Passive Test Oracles
    • Types of Test Oracles
      • Formal, executable specifications
      • Solved examples
      • Metamorphic oracles
    • Alternative implementations (备用实现)
    • Heuristic oracles (启发式)
    • The Golden Program!
    • Oracle Deviation (Oracle偏差)

Test Oracles

测试的三部分:

  • test input

  • expected output

  • testing environment

  • 执行测试用例的正常流程是:

    • 使用测试用例中的输入来执行程序,记录结果,
    • 然后确定所获得的输出是否为失败。
  • 谁或什么决定了程序产生的结果是否为失败?一种方式是由人工测试员查看输入并手动计算他们认为输出应该是什么。在这种情况下,人工测试员扮演着一个 test oracle 的角色。

  • 一个 test oracle 是指某个人或某个事物判断程序是否通过了或未通过了该测试用例。当然,它也可以是另一个返回“yes”(表示实际结果不是失败)或“no”(表示实际结果为失败)的程序。

在这里插入图片描述

  • test oracle 决定了根据当前的 test input, 系统给出的 output 是否 fail (充当了判官的角色)
  • 理想情况下,Oracle 应该是自动化的(在运行时没有人为干预),因为这样我们可以执行更多的测试用例并获得程序更广泛的覆盖率,但实际上这通常并不容易。

Active and Passive Test Oracles

在这里插入图片描述

  • 自动化预言可以分为两类:

    • 主动预言(active oracle): 一个程序,给定一个待测试程序的输入,能够生成该输入的期望输出。

    • 被动预言(passive oracle): 一个程序,给定一个待测试程序的输入和该待测试程序产生的实际输出,验证实际输出是否正确。

一般情况下更倾向于使用 被动预言。这有两个主要原因。

  1. Easier Implementation 实现更简单

    • Active oracles might require simulating the entire program-under-test. 主动 oracle 可能需要模拟整个被

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

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

相关文章

Rust编程基础之引用与借用

1.引用与借用 在上一章节最后的代码中, 我们必须将 String 返回给调用函数,以便在调用 calculate_length 后仍能使用 String,因为 String 被移动到了 calculate_length 内。相反我们可以提供一个 String 值的引用(reference)。引…

BGF-YOLO | 增强版YOLOV8 | 用于脑瘤检测的多尺度注意力特征融合

基于You Only Look Once(YOLO)的目标检测器在自动脑瘤检测中展现出卓越的准确性。在本文中,我们开发了一种新的BGF-YOLO架构,通过将双层路由注意力(BRA)、广义特征金字塔网络(GFPN)和第四检测头整合到YOLOv8中来实现。BGF-YOLO包含了一个注意力机制,用于更加关注重要的…

北马“破3收割机”,特步成赛场和市场双面“赢家”

北马已经落下帷幕,尽管当天全国共有20多场城市马拉松开跑,但作为国内第一个城市马拉松,有“国马”之称的北马,还是赛事的中心点。北马相关的所有标签,都会在跑圈内外引起足够多的讨论,比如一双跑鞋——顶级…

局域网和广域网的区别

局域网靠交换机通信; 广域网靠路由器将多个局域网连接起来通信; 在防火墙内部的叫内网,外部的叫外网; 用ipconfig查到的ip是本机的内网IP;在网页上看到的是连接互联网所用的IP即往往IP 记住:IP地址是唯一的&#x…

阿里云服务器省钱购买和使用方法(图文详解)

阿里云服务器使用教程包括云服务器购买、云服务器配置选择、云服务器开通端口号、搭建网站所需Web环境、安装网站程序、域名解析到云服务器公网IP地址,最后网站上线全流程,新手站长xinshouzhanzhang.com分享阿里云服务器详细使用教程: 一&am…

访问控制、RBAC和ABAC模型

访问控制、RBAC和ABAC模型 访问控制 访问控制的目的是保护对象(数据、服务、可执行应用该程序、网络设备或其他类型的信息技术)不受未经授权的操作的影响。操作包括:发现、读取、创建、编辑、删除和执行等。 为实现访问控制, 计…

第二阶段第二章——数据库SQL

到这里就是属于原有的知识的扩充了。、 发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发…

CentOS 7 安装 JDK11(注意版本号要与自己的版本一致)

查看是否有自带的 JDK java -versionrpm -qa | grep jdk卸载自带 JDK rpm -e --nodeps [name] # 如 rpm -e --nodeps java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64查看自带 JDK 是否卸载干净 java -versionrpm -qa | grep jdk在 oracle 官网下载自己所需 JDK 版本&#x…

JavaEE平台技术——MyBatis

JavaEE平台技术——MyBatis 1. 对象关系映射框架——Hibernate、MyBatis2. 对象关系模型映射3. MyBatis的实现机制4. MyBatis的XML定义5. Spring事务 在观看这个之前,大家请查阅前序内容。 😀JavaEE的渊源 😀😀JavaEE平台技术——…

Mythical Beings里的DAO治理指南——Mythical DAO使用方法浅析

DAO(Decentralized Autonomous Organization)去中心化自治组织,正在成为Web3世界的重要组织和治理形式。通过区块链和加密通证等技术实现transparent、inclusive的社区自治。Mythical Beings游戏也推出了Mythical DAO,帮助玩家社区自治。本文主要介绍当前热门的DAO治理工具,以及…

行政处罚有哪些?

一、行政处罚的定义 行政处罚,是指行政机关依法对违反行政管理秩序的公民、法人或者其他组织,以减损权益或者增加义务的方式予以惩戒的行为。这是首次以立法的形式明确“行政处罚”的定义。 二、行政处罚与行政处分的区别 行政处分是指国家行政机关对其…

分布式系统之BASE理论

BASE理论是对分布式系统设计和处理的一种理论指导,相对于ACID(原子性、一致性、隔离性和持久性)这一强一致性模型,BASE更强调在分布式系统中牺牲强一致性以获得可用性和性能的平衡。 BASE理论的核心概念包括: Basica…

用了这款工具,让我效率提升了80%

目录 一、写在前面 二、优势 三、主要功能点 四、低代码归根结底差不多 五、小结 一、写在前面 低代码开发平台,一个号称能在几分钟的时间里开发出一套公司内部都可使用的应用系统开发工具。很多人或许都隐隐听说过低代码,因为低代码不仅远名国外&#x…

FastGPT | 3分钟构建属于自己的AI智能助手

这是一篇使用指南!!! FastGPT是什么? FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景&…

DASCTF X CBCTF 2023|无畏者先行

前言 笔者没有参加此次比赛,由于团队后面会复现此次比赛,所以笔者在此进行复现记录。 EASYBOX 考点:命令执行? 栈溢出 附件给了 docker 环境,可以直接在本地复现,但是 docker 我不会调试,幸…

视频号提取视频工具,使用教程合集

第一步: 点击关注公众号下方菜单,视频下载-【视频号提取视频工具】,长按识别二维码,添加视频下载小助手为好友。 没有关注的可以,点击下载关注一下 第二步: 选择你要下载的视频,找到转发图标…

AD教程 (八)器件的复制和对齐

AD教程 (八)器件的复制和对齐 设置原理图工作区域 设置Sheet Size,将A4改为A3,增大原理图区域 按照原理图布局大致排布元件 框选需要复制的元件,按住Shift即可复制元件并拖动到合适的位置。如果元件需要对齐&#xf…

JUC-3-并发锁

一 JAVA 多线程锁介绍 1 悲观锁 定义:悲观锁指对数据被外界修改持保守态度,认为数据很容易就会被其他线程修改(很悲观),所以在数据被处理前先对数据进行加锁,并在整个数据处理过程中,使数据处…

seata事务回滚引起的skywalking数据库存储空间剧增的问题排查

基本信息 产品名称:ATS3.0 问题分类:编码问题 环境类型:环境无关 问题现象 11月1日上午华润DBA收到数据库磁盘空间告警,检查后发现skywalking连接的mysql数据库占用空间从之前一直是比较稳定的,但是10月31日…

ElasticSearch与Lucene是什么关系?Lucene又是什么?

一. ElasticSearch 与 Lucene 的关系 Elasticsearch(ES)和Apache Lucene之间有密切的关系,可以总结如下: Elasticsearch构建于Lucene之上:Elasticsearch实际上是一个分布式的、实时的搜索和分析引擎,它构建…