第六章:Property-based Testing and Test Oracles

news/2025/2/23 3:10:27/

文章目录

  • 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.ppmy.cn/news/1201785.html

相关文章

Flink SQL Regular Join 、Interval Join、Temporal Join、Lookup Join 详解

Flink ⽀持⾮常多的数据 Join ⽅式,主要包括以下三种: 动态表(流)与动态表(流)的 Join动态表(流)与外部维表(⽐如 Redis)的 Join动态表字段的列转⾏&#xf…

LeetCode75——Day28

文章目录 一、题目二、题解 一、题目 649. Dota2 Senate In the world of Dota2, there are two parties: the Radiant and the Dire. The Dota2 senate consists of senators coming from two parties. Now the Senate wants to decide on a change in the Dota2 game. The…

2.3.3 交换机的RSTP技术

实验2.3.3 交换机的RSTP技术 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.交换机的基本配置。2.开启交换机的STP。3.配置SW3A和SW3B上STP的优先级。将SW3A配置为根交换机,SW3B配置为备用根交换机。4.配置SW2A和SW3B的边缘接口 六、任务验收七、…

unity【动画】脚本_角色动画控制器 c#

首先创建一个代码文件夹Scripts 从人物角色Player的基类开始 创建IPlayer类 首先我们考虑到如果不挂载MonoBehaviour需要将角色设置成预制体实例化到场景上十分麻烦, 所以我们采用继承MonoBehaviour类的角色基类方法写代码 也就是说这个脚本直接绑定在角色物体…

HR人才测评,采用线上测评做春招秋招

从人力资源管理的工作,已经有好些年了,我只想说这不是一个有创意和创造性的工作,因为大部分时间我都在从事数据方面的工作。关于公司内部的文案工作先且不说,这里分享下我做招聘工作的过程。 每年春秋两季的校招,算是…

加工企业仓库管理系统软件哪个好

加工企业仓库管理系统软件可以帮助企业更好地管理仓库,提高工作效率和准确性。针对一些小微加工企业,应用一款适合的仓库管理软件是非常重要的,对于网络上如此之外的仓库管理系统软件,我们应该使用哪一些比较好。 可易ERP5000系统…

电脑屏幕远程监控软件有没有可试用的?

先回答,有可以试用的! 电脑屏幕远程监控软件有很多种,以下是一些比较知名的软件: 1、TeamViewer:这是一款国外开发的远程控制软件,支持多种操作系统,包括Windows、Mac、Linux等。它是一款简单、…

Ubuntu18.04安装pcl-1.12.1,make时报错:/usr/bin/ld: cannot find -lvtkIOMPIImage

解决方案: 在vtk安装包中,重新打开cmake-gui,然后勾选上VTK_Group_MPI和VTK_Group_Imaging。 cd VTK-8.2.0 cd build cmake-gui然后重新编译生成。 make -j8 # 或者j4,量力而行。 sudo make install 就可以解决了。 然后重新回到pcl安装…