java 区分缺陷Defects/感染Infections/失败Failure

news2024/11/28 22:35:09

java 区分缺陷Defects/感染Infections/失败Failure

缺陷Defects
软件故障总是从代码中一个或多个缺陷的执行开始。
缺陷只是一段有缺陷、不正确的代码。
缺陷可能是程序语句的一部分或完整部分,也可能对应于不存在但应该存在的语句。
尽管程序员要对代码中的缺陷负责,但从技术上讲,他们可能并不总是有错——例如,问题可能是由一组规定不周的需求引起的。

传染Infections
感染是指执行缺陷时发生的情况,并且程序的状态受到影响。
当程序的状态被感染时,它开始不正确地工作:
•变量开始采用错误的值
•程序中做出的决策评估不正确,执行路径偏离正确路径。
但在这一点上,它并没有影响程序的输出(到目前为止,故障还没有明显的影响)。

故障Failure
当感染传播到程序
也就是说,程序明显地表现不正确。

软件故障是如何发生的?
Method:
此方法包含一个错误。或者更准确地说,是一个缺陷。
缺陷示例为第二个循环初始化程序。它应该使用i+1而不是i本身来迭代
这部分也是一种感染,让它过早地开始迭代字符串中的索引。这进一步导致字符串中的每个字符都被添加到重复集。但在这一点上,该程序没有明显的错误
因此,失败取决于程序何时交付可观察的输出。在本例中,我们在测试中询问方法的返回值,从而导致测试失败
但在整个软件的执行过程中,该方法可能会被另一种方法在内部使用,并且故障可能会在很久以后发生在不同的地方。
在这里插入图片描述
Tests:
在这里插入图片描述第一测试通过,而第二测试失败。

Failures vs Test Failures
因此,我们需要区分故障和测试故障。
故障是指软件在生产中作为一个整体运行时表现不正确。
测试失败是指测试本身失败,原因是:
(a) 测试显示软件出现故障
(b) 测试本身是不正确的,例如,它对软件的行为做出了不正确的断言。

Testing vs Debugging
我们现在也可以揭穿测试和调试是相同的想法。
测试是通过观察软件的执行情况来评估软件的过程。
调试是将故障/测试故障追溯到最终导致故障的缺陷的过程。

软件故障是如何发生的?
1.包含缺陷的程序位置是在执行过程中达到。(Defect)
2.缺陷影响程序的状态 (Infection)
3.感染传播到程序的输出,导致失败。(Failure)

examples:
(1) 海平运行他的Python程序,根据学生一年级的模块成绩预测他们的最终学位分类。它产生了几行输出,但随后崩溃并出现错误。
故障
(2) Siobhan正在编写一个Java方法忘记将对象分配给引用,这意味着它为NULL。
缺陷
(3) 拉姆齐正在编写一个计算学生分数的程序。一个功能是找到最适合他的作业的学生。他的程序错误地从位置1而不是0开始迭代他的标记数组。但是位置0对应的是一个贫困学生,所以该程序仍然返回了正确的答案。
感染
(4) Emma正在测试她的RubyonRails应用程序。全部的测试通过了,但后来发现她误解了客户的一个要求。
缺陷/感染/失败,取决于情况

Defects are not always reached (executed)

for(int j = i; j < s.length(); j++)

如果输入字符串s为空,则满足条件
一个好的测试套件需要尽可能多地使用软件。

Defects may not always cause infections

for(int i = 0; i > s.length(); j++)

对于空字符串,缺陷将被执行,但没有变量采用错误的值和循环;loop body并没有被处死——这是正常的。
因此,对于这种特定的输入,没有感染。

Infections may not always propagate to the output

for(int j = i; j < s.length(); j++)

考虑原始缺陷会发生什么,如果输入字符串s=“stst”。
缺陷被执行,字符“s”和“t”过早地输入到副本集中,但总体输出是正确的

Test cases need to reveal failures

测试用例如何检测软件故障?
The RIPR model:
Defect Reached 😫
State Infected 🤢
Infection Propagated 🤮
Failure Revealed 🤓

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

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

相关文章

基于SSM的甜品店商城系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着社会经济的发展和…

Altium Designer 相同电路多组复制布线

在进行设计开发的时候&#xff0c;总会遇到相同的电路&#xff0c;或者模块&#xff0c;这些电路可以使用相同的布局和走线。我们可以画好其中一部分&#xff0c;然后直接复制&#xff0c;就可以提高效率。下面记录我自己的实际操作过程&#xff0c;有一些地方遇到了问题&#…

Android | Android OS 源码结构

参考&#xff1a;AndroidXRef (http://androidxref.com/)版本&#xff1a;Pie - 9.0.0_r3 整体结构 对于 Android OS 的源码目录来说&#xff0c;各个版本的结构大同小异&#xff0c;随不同版本特性会有个别目录差异。编译后会额外产生一个 out 文件夹用于存储编译产生的文件。…

Unity使用SteamVR2.0实现基本功能(瞬移,抓取物品,射线点击,UI交互等)

基础设置 把SteamVR的Player预制件拖到一个空场景,删掉场景内原本的相机 一.瞬移 新建一个Plane,当做地板找到SteamVR的人物瞬移控制器 Teleporting ,把它拖到场景里 1. 范围移动 我们需要在可以移动的区域,也就是碰撞器上,挂TeleportArea脚本 这个脚本会自动修改你的材质球…

抖音seo源码--开源,支持二开不加密

抖音seo源码&#xff0c;抖音seo矩阵系统源码技术搭建&#xff0c;抖音seo源码技术开发思路梳理搭建 开发思路&#xff1a; 抖音seo源码如何搭建&#xff1f;抖音seo排名优化系统软件部分源码分析&#xff0c;代码打包中。。。 场景&#xff1a;在 python 中&#xff0c;你可…

windows下修改PyCharm默认terminal 在Git Bash中使用conda

windows下修改PyCharm默认terminal & 在Git Bash中使用conda windows下修改PyCharm默认terminal在Git Bash中使用conda windows下修改PyCharm默认terminal PyCharm的terminal默认使用的是powershell&#xff0c;但是conda环境是通过cmd运行的&#xff0c;因此可以将PyChar…

安捷伦N5182A是德KEYSIGHT N5182B 100KHZ至3G/6G信号发生器

Agilent N5182A、Keysight N5182A MXG 射频矢量信号发生器&#xff0c;100 kHz - 3 GHz 或 6 GHz ​Keysight N5182A (Agilent) MXG 射频矢量信号发生器具有快速频率、幅度和波形切换、带电子衰减器的高功率和高可靠性 – 所有这些都集成在两个机架单元 (2RU) 中。Keysight N5…

H743 USBHOST协议栈 CPU占用率高的问题。

经过查看&#xff0c;是因为USBHOST频繁的进入中断导致&#xff0c;单步执行发现&#xff0c;是因为发生了USB_OTG_HCINT_CHH或者USB_OTG_HCINT_NAK中断了&#xff0c;只在CHH中断服务函数里&#xff0c;给USB主线程发了1个消息&#xff0c;又引起了USBH_Process_OS主线程的频繁…

YOLOV7训练TT100K交通标识符数据集

《临江仙》 作者&#xff1a;缠中说禅 浊水倾波三万里&#xff0c;愀然独坐孤峰。龙潜狮睡候飙风。无情皆竖子&#xff0c;有泪亦英雄。 长剑倚天星斗烂&#xff0c;古今过眼成空。乾坤俯仰任穷通。半轮沧海上&#xff0c;一苇大江东。 一、yolov7环境搭建 参…

【内网穿透】远程访问RabbitMQ服务

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 转载自cpolar内网穿透的文章&#xff1a;无公网IP&…

【C语言】刷题训练营 —— 每日一练

文章目录 前言 BC113 小乐乐定闹钟BC114 小乐乐排电梯BC115 小乐乐与欧几里得BC116 小乐乐改数字BC107 矩阵转置BC117 小乐乐走台阶BC118 小乐乐与序列BC119 小乐乐与字符串BC121 小乐乐学编程BC122 小乐乐算平均分完结 前言 大家好&#xff0c;继续更新专栏 c_牛客&#xff0…

【C++】二叉搜索树Binary Search Tree

Binary Search Tree 二叉搜索树的概念二叉搜索树的操作二叉搜索树的实现查找插入删除 二叉搜索树的应用二叉搜索树的性能分析 二叉搜索树的概念 二叉搜索树又被称为二叉排序树&#xff0c;顾名思义&#xff0c;当我们使用中序遍历时&#xff0c;会得到一个有序的序列。二叉搜索…

进程信号的保存和处理

目录 &#x1f3c6;一、信号的保存 ①信号的捕捉 ②sigset_t ③sigaction &#x1f3c6;二、不可重入函数 &#x1f3c6;三、volatile &#x1f3c6;四、SIGCHLD &#x1f3c6;一、信号的保存 在聊信号保存之前&#xff0c;我们不妨想一个问题&#xff0c;如果把所有信号…

易岸教育:高端篇!公务员面试经验总结!

根据众多应聘者的面试经验&#xff0c;总结出以下几点供应聘者参考&#xff1a; 1、注意着装。 适当提高服装档次。 衣着得体大方&#xff0c;可以提升形象&#xff0c;增强自信。 2、安心。 要以一颗平常心正确对待面试&#xff0c;就要有受挫的心理准备。 即使面试失败了一…

【Python】学习导论:Python 简介

前言&#xff1a;XMind 脑图大纲 一、Python 的发展和演变 1.1 Python 1.0&#xff08;1994年&#xff09; 版本&#xff1a;Python 的第 1 个正式版本典型里程碑&#xff1a;包含了基本的语言特性和标准库 1.2 Python 2.0&#xff08;2000年&#xff09; 版本&#xff1a;Pyt…

XDP入门--通过用户态程序自动加载与卸载eBPF程序字节码到网卡

本文目录 1、测试环境1、eBPF字节码的源代码实现3、用户态应用程度实现简介4、编译与运行5、运行状态验证 通过文章XDP入门–之hello world 我们知道&#xff0c;可以通过iproute2的ip工具向网卡去加载和卸载eBPF程序的字节码。但这个使用起来不太方便。而且在需要网卡恢复正常…

浅析Java 多线程中的锁

前言 随着互联网技术的快速发展&#xff0c;多线程编程已经成为了现今编程领域中必不可少的知识点之一。Java 是一种广泛使用的编程语言&#xff0c;也是一些底层应用程序和高并发应用程序的首选语言。而 Java 提供的多线程编程机制和相关的锁机制&#xff0c;则成为了 Java 开…

SpringBoot 上传图片-指定目录按照日期存储

SpringBoot 上传图片-指定目录按照日期存储 1. 在配置文件中指定文件保存根目录 我用的yaml,用properties也行 file-save-path: D:/upload/2. 文件上传接口 package com.admin.controller.wechat;import cn.hutool.core.lang.UUID; import com.redic.base.Result; import com…

SpringMVC 程序开发

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录 什么是 Spring MVCMVC 定义 怎么学 Spring MVCSpring MVC 创建和连接创建 Spring MVC 项目RequestMapping 注解介绍PostMappi…

二叉搜索树的实现(C语言)

目录 前言&#xff1a; 一&#xff1a;准备工作 (1)需要的头文件 (2)树节点结构体描述 (3)初始化 二&#xff1a;指针 三&#xff1a;插入新节点(建树) (1)生成一个新节点 (2)找插入位置 四&#xff1a;查找和遍历 (1)查找 (2)遍历 五&#xff1a;删除节点 六&…