深圳做网站在去那备案最好用的搜索神器

web/2025/10/2 12:44:52/文章来源:
深圳做网站在去那备案,最好用的搜索神器,南京网站制作的价格,vps做网站的环境海贼王为什么画风突变最近#xff0c;我再三提到突变测试一词。 因为可以说这种方法能够以超出代码覆盖范围的方式检测测试安全网的空白#xff0c;所以我花了一些时间来追赶这个话题并尝试一下。 这篇文章总结了我的发现#xff0c;作为对该主题的快速介绍。 什么是变异测… 海贼王为什么画风突变 最近我再三提到突变测试一词。 因为可以说这种方法能够以超出代码覆盖范围的方式检测测试安全网的空白所以我花了一些时间来追赶这个话题并尝试一下。 这篇文章总结了我的发现作为对该主题的快速介绍。 什么是变异测试 变异测试评估现有软件测试的质量。 想法是以较小的方式修改变异测试所覆盖的代码并检查现有测试集是否将检测并拒绝更改[MUTTES]。 如果不符合则意味着测试不符合代码的复杂性并且未测试其一个或多个方面。 在Java中将突变体视为与原始代码相比具有单个修改的附加类。 可能是如下所示的if子句中逻辑运算符的更改。 if( a b ) {...} if( a || b ) {...} 通过现有测试检测并拒绝这种修饰称为杀死突变体。 当然有了完善的测试套件没有任何类别的变异体能够生存。 但是创建所有可能的变体的成本非常高这就是为什么在现实世界中手动执行此方法不可行的原因。 幸运的是有一些工具可以即时创建突变体并针对每个突变体自动运行所有测试。 变异创建基于一组所谓的变异算子 这些变异算子用于揭示典型的编程错误。 在上面的示例中将采用的一个称为条件突变算子 。 使用JUnit进行测试 使用JUnit进行测试是Java开发人员可以学习的最有价值的技能之一。 无论您的背景是什么无论您是只是想建立一个安全网以减少桌面应用程序的性能下降还是要基于健壮且可重复使用的组件来提高服务器端的可靠性都需要进行单元测试。 弗兰克Frank写了一本书它为使用JUnit进行测试的基本知识提供了深刻的切入点并为您准备与测试相关的日常工作挑战做好了准备。 学到更多… 它与代码覆盖率有何关系 正如Martin Fowler所说的那样 “测试覆盖率是查找未测试代码库部分的有用工具 ”。 这意味着覆盖率不佳表明测试套件的安全网中存在令人担忧的漏洞。 但是仅覆盖范围就不能证明基础测试的质量 得出的唯一合理结论是显然没有发现斑点。 为了阐明这一点例如考虑一组测试这些测试完全省略了验证阶段 。 尽管这样的捆绑包可能会实现完整的代码覆盖但是从质量保证的角度来看这显然是毫无用处的。 这就是突变测试起作用的地方。 测试套件杀死的突变体越多生产代码的行为被良好构想并被实体测试完全覆盖的机会就越大。 听起来诱人 然后让我们继续看一个示例以了解实际应用。 如何使用 我们从我从《 用JUnit测试》一书中借来的清单开始然后针对实际上下文对其进行一些修改。 例如可以将时间轴视为UI控件的模型组件该控件可以按时间顺序显示列表条目例如Twitter界面。 在此阶段我们只关心状态变量fetchCount 其初始值可以通过正整数进行调整。 public class Timeline {static final int DEFAULT_FETCH_COUNT 10;private int fetchCount;public Timeline() {fetchCount DEFAULT_FETCH_COUNT;}public void setFetchCount( int fetchCount ) {if( fetchCount 0 ) {String msg Argument fetchCount must be a positive value.;throw new IllegalArgumentException( msg );}this.fetchCount fetchCount;}public int getFetchCount() {return fetchCount;} } 虽然这里没有什么复杂的但是我们对下面的测试用例感到放心让我们使用JUnit内置org.junit.Assert类的各种assert方法进行验证为了简化起见使用静态导入。 public class TimelineTest {private Timeline timeline;Beforepublic void setUp() {timeline new Timeline();}Testpublic void setFetchCount() {int expected 5;timeline.setFetchCount( expected );int actual timeline.getFetchCount();assertEquals( expected, actual );}Test( expected IllegalArgumentException.class )public void setFetchCountWithNonPositiveValue() {timeline.setFetchCount( 0 );} } 确实在使用EclEmma收集覆盖率数据的同时运行测试会产生完整的覆盖率报告如下图所示。 可能您已经检测到了弱点。 但是让我们天真地玩忽略地平线上的乌云然后继续进行突变测试。 我们将PIT用于此目的因为它似乎是该领域中最受欢迎和最活跃的工具。 其他可能性包括µJava和Jumble 。 PIT支持命令行执行 Ant和Maven构建集成以及第三方产品的 IDE和报告集成。 有关各种使用方案的更多详细信息请参阅相应的在线文档。 生成的针对特定项目的变异测试HTML报告包含程序包细分并且可以深入到类级别。 下图显示了时间轴组件的类列表报告。 下面同一报告在Eclipse IDE中显示为结构树。 太震惊了 我们对高覆盖率的信心是一种错觉。 如您所见该报告列出了将哪些突变应用于哪一行。 同样请记住对于每个突变都将执行单独的测试运行包括所有测试 带绿色下划线的列表条目表示被杀死的突变体而红色的表示幸存者。 仔细检查很快就会知道我们错过了什么。 我们通过在测试用例中添加初始状态验证来解决该问题如以下代码片段所示请注意Timeline.DEFAULT_FETCH_COUNT的静态导入。 public class TimelineTest {[...]Testpublic void initialState() {assertEquals( DEFAULT_FETCH_COUNT, timeline.getFetchCount() );}[...] } 就是这个 现在突变测试运行会杀死所有突变体。 下一张图片显示了一个列出所有内容的报告。 很难相信为这么小的一类人创造的突变数量。 9个突变体仅需22条指令 这将我们引到本文的最后一部分。 缺点是什么 上游覆盖率分析动态创建突变体以及所有必要的测试运行都需要花费大量时间。 我将突变测试纳入了完整的时间线示例应用程序的构建过程中该应用程序包含一个包含约350个测试的套件。 与常规运行相比这将执行时间增加了四倍。 有了这些数字很明显出于实际原因变异测试运行无法像单元测试运行那样频繁地执行。 因此找到合适的工作流程以在早期反馈和效率方面提供最佳折衷是很重要的。 对于大型软件系统这可能意味着突变测试运行可能更好地限于夜间构建等。 现场测试中出现了另一个问题表明PIT可能会遇到基础技术堆栈[STAPIT]的麻烦。 在我的情况下似乎不支持用于基于枚举的参数化测试的Burst JUnit 测试运行器 。 因此特定类别的所有突变都可以幸免。 但是手动复制证明了这些结果是错误的。 因此您要么不用麻烦的技术要么将PIT配置为排除麻烦的测试用例。 摘要 这篇文章简要介绍了突变测试。 我们已经了解了什么是测试突变体突变体的杀灭率如何说明现有测试套件的质量以及该测试技术与代码覆盖率之间的关系。 此外我们已经了解了如何使用该领域最受欢迎的工具PIT并对一些执行报告进行了评估。 考虑到从现场测试中得出的一些缺点得出了本主题的结论。 总之变异测试似乎是对基于自动化测试的质量保证工具集的有趣补充。 如开始时提到的我对这个话题还很陌生因此从更高级的用户那里听到他们可能错过或遗忘的经验和方面会很有趣。 参考资料 [MUTTES]变异测试Wikipedia https //en.wikipedia.org/wiki/Mutation_testing [STAPIT]JUnit测试通过了但是…Stackoverflow http //stackoverflow.com/questions/30789480/ [TESCOV]TestCoverageFowler http //martinfowler.com/bliki/TestCoverage.html 翻译自: https://www.javacodegeeks.com/2015/10/what-the-heck-is-mutation-testing.html海贼王为什么画风突变

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

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

相关文章

网站漂浮广告互联网品牌宣传推广服务公司

Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript 的完全编程的能力,这时你可以用 render 函数,它比 template 更接近编译器。 我这里,举一个简单的例子。在iviews中使用自定义D…

网站项目设计与制作综合实训wordpress适合门户网站吗

文章目录 题意思路代码 题意 题目链接 可以翻转任意列,求全是1和全是0的行,最多有多少行。 思路 对一行而言,能翻转成相同的(同为1,或者同为0),则相等。能反转成相反的,则巧好&am…

北京住总第一开发建设有限公司网站找个免费网站这么难吗

1. 正则表达式概述 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 正则表达式,又称正规表示法、常规表示法&#xff…

如何修改网站标题网站建设合同中英文模板

STL中的序列式容器主要包括 vector 向量容器、list 列表容器以及 deque 双端队列容器。 vector 实现的是一个动态数组。 定义在 <vector> 头文件中。 #include <iostream> #include <vector> using namespace std; int main() {//初始化一个空vectorvecto…

做淘宝客需要网站吗高端定制建站公司

在计算机科学中&#xff0c;shell俗称壳&#xff08;用来区别于核&#xff09;&#xff0c;是指“提供使用者使用界面”的软件&#xff08;命令解析器&#xff09;。它类似于DOS下的command.com。它接收用户命令&#xff0c;然后调用相应的应用程序。同时它又是一种程序设计语言…

网站建设方案实验报告想把自己做的网站放到网上

灾难性雪崩效应 简介 服务与服务之间的依赖性,故障会传播,造成连锁反应,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。 原因 1.服务提供者不可用(硬件故障、程序bug、缓存击穿、用户大量请求) 2.重试加大流量(用户重试,代码逻辑重试) 3.服…

湖南省金力电力建设有限公司 网站wordpress的免费模板

通过我们进行跨平台传输&#xff0c;我们需要把某一个平台特有的数据类型转化为一种通用的数据类型序列化和反序列化 通用形式有两种&#xff1a; 《1》JSON&#xff1a;是一种以键值形式组成 《2》XML&#xff1a;可扩展标记语言 XML文件格式要求&#xff1a; 《1》头部需要有…

山西威力网站建设推荐wordpress订阅关闭

首先配置好开发环境&#xff0c;下载安装Python并下载安装pycharm&#xff0c;在pycharm中创建项目功能目录。如果不会的可以百度Google一下&#xff0c;该内容网上的讲解还是比较多比较全的&#xff01; 大家可以先简单了解下该项目的目录结构介绍&#xff0c;后面会针对每个文…

做网站自己买服务器吗北京网站开发学习

来源&#xff1a; 学术头条作者&#xff1a;刘芳编辑&#xff1a;黄珊2021 年 4 月&#xff0c;马斯克公布了一段猴子用意念玩乒乓球游戏的视频&#xff0c;一时间为他旗下的脑机接口公司 Neuralink 赚足了眼球。然而最近&#xff0c;这些被用来做脑机接口实验的猴子的经历&…

大庆城市建设投资网站标准品购买网站

作者备注《进击吧&#xff01;Blazor&#xff01;》是本人与张善友老师合作的Blazor零基础入门系列视频&#xff0c;此系列能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力。视频地址&#xff1a;https://space.bilibili.com/483888821/channel/detail?cid151273Bl…

固安县城乡和住房建设局网站重庆工程造价信息价查询

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介YOLOv5 简介YOLOv5 特点 车辆和行人目标检测系统 二、功能三、系统四. 总结 一项目简介 # 深度学习之基于 YOLOv5 车辆和行人目标检测系统介绍 深度学习在…

贵州建设网老网站cms网站有哪些

Golang并发编程 进程和线程及协程并行和并发golang 创建一个协程golang停止一个协程golang协程休眠Golang协程状态golang协程安全golang共享变量和临界区golang协程优先级golang协程安全数据类型golang如何解决协程安全问题golang通道golang通道缓冲golang通道同步golang通道方…

网站导航颜色台山网站建设

ContentCachingRequestWrapper 是 Spring Framework 中提供的一种包装类&#xff0c;它扩展了 HttpServletRequestWrapper 类&#xff0c;用于缓存请求体的内容。 通常在处理 HTTP 请求时&#xff0c;原生的 HttpServletRequest 对象中的输入流 (getInputStream()) 只能被读取一…

网站建设框架程序企业如何建设网站

为什么需要参数化&#xff1f; 我们在做接口测试的过程中&#xff0c;会遇到需要测试同一个接口使用不同的数据的情况&#xff0c;如果每次去一个个填写数据就太麻烦了&#xff0c;这时我们就需要用到接口参数化&#xff0c;我们把数据单独的存放在一个文件中管理&#xff0c;…

西班牙语网站设计公司哪家好漂亮公司网站源码打包下载

稀疏数组的处理方法是&#xff1a; 1)记录数组一共有几行几列&#xff0c;有多少个不同的值 2)思想&#xff1a;把具有不同值的元素的行列及值记录在一个小规模的数组中&#xff0c;从而缩小程序的规模 例如下面原数组对应稀疏数组&#xff1a;

公司搭建网站服务东莞东智通人才招聘网

目录 前言 什么是类&#xff1f; 定义一个类 创建对象 访问和修改属性 方法 类的继承 多态 封装 特殊方法 属性装饰器 总结 前言 Python 是一种面向对象的编程语言&#xff0c;它允许程序员通过类和对象来组织和管理代码。面向对象编程&#xff08;OOP&#xff09…

企业网站托管多少钱东莞代理记账

电脑端引入 jQuery UI 可以实现。而手机并没有 mousemove 等事件&#xff0c;所以这里采用手机事件&#xff1a;touchstart 和 touchmove 实现拖拽。 一、引入&#xff1a; 只要引入 jQuery.js 和 dragger.js&#xff08;如下&#xff09;即可 注&#xff1a;实现拖拽部分转…

药企做网站区块链开发语言

问题场景&#xff1a; 今天在springboot中集成spring事务的时候&#xff0c;遇到了一个大坑。如果&#xff08;springbootdubbo&#xff09;中添加 Service、Transactional 两个注解的时候&#xff0c;就不能进行dubbo服务注册了。 解决历程&#xff1a; 1&#xff0c;先是在…

建高级网站青岛装饰公司十强排名

1. 题目 给定两个字符串 s 和 t&#xff0c;判断它们是否是同构的。 如果 s 中的字符可以被替换得到 t &#xff0c;那么这两个字符串是同构的。 所有出现的字符都必须用另一个字符替换&#xff0c;同时保留字符的顺序。 两个字符不能映射到同一个字符上&#xff0c;但字符可…

网站注册收入中国航发网上电子商城网址

目录 第一种情况&#xff1a;直接修改计算属性 不生效举例 解决方案1&#xff1a;直接修改依赖变量 解决方案2&#xff1a;为计算属性设置 set 方法 第二种情况&#xff1a;直接修改依赖数据 不生效举例 解决方案 第一种情况&#xff1a;直接修改计算属性 在Vue中&#x…