关于自动化测试用例失败重试的一些思考

动化测试用例失败重跑有助于提高自动化用例的稳定性,那我们来看一下,python和java生态里都有哪些具体做法?

怎么做

如果是在python生态里,用pytest做测试驱动,那么可以通过pytest的插件pytest-rerunfailures来实现失败用例重跑,具体的使用方式有两种,一种是通过命令行指定pytest --reruns 2 --reruns-delay 1,reruns表示重复运行次数,reruns-delay 表示重复运行是的延迟时间。另一种方式是通过@pytest.mark.flaky(reruns=2, reruns_delay=1),这种方式一般运用,不想全局所有的测试用例都重跑,只是特定的测试用例需要跑,那就在特定的测试方法上使用这个标记。

如果是在java生态里,用junit做测试驱动,junit5提供了注解@RepeatTest(2),可以试下测试类或者测试方法的重复运行,也可以自定义,通过实现个TestRule接口,来控制测试用例的运行。

public class MyTestClass {@Rulepublic RepeatRule repeatRule = new RepeatRule();@Test@Repeat(10)public void testMyCode() {//your test code goes here}}import static java.lang.annotation.ElementType.ANNOTATION_TYPE;import static java.lang.annotation.ElementType.METHOD;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Retention( RetentionPolicy.RUNTIME )@Target({ METHOD, ANNOTATION_TYPE })public @interface Repeat {int value() default 1;}import org.junit.rules.TestRule;import org.junit.runner.Description;import org.junit.runners.model.Statement;public class RepeatRule implements TestRule {private static class RepeatStatement extends Statement {private final Statement statement;private final int repeat;public RepeatStatement(Statement statement, int repeat) {this.statement = statement;this.repeat = repeat;}@Overridepublic void evaluate() throws Throwable {for (int i = 0; i < repeat; i++) {statement.evaluate();}}}@Overridepublic Statement apply(Statement statement, Description description) {Statement result = statement;Repeat repeat = description.getAnnotation(Repeat.class);if (repeat != null) {int times = repeat.value();result = new RepeatStatement(statement, times);}return result;}}

还有就是如果使用到了maven可以添加一个rerunFailingTestsCount参数,不过这个是控制所有的用例了。

为什么要让失败用例重跑呢

因为自动化一般都会在测试环境或者其他非线上的环境,由于环境的不稳定可能会导致测试用例莫名其妙的失败,是用例的稳定性大打折扣。这个时候加入失败重跑机制,能够在一定范围内提高测试用例的稳定性,做出更多的产出。

什么样的自动化用例要进行失败重跑

接口自动化测试用以建议可以加入这种失败重跑,而对于UI接口接口自动化,失败重跑的话,觉得意义不大,因为往往当用例的失败的时候,要么是由于界面元素没加载出来,要么是用例的逻辑有问题,要么是意外的弹窗影响,这个时候应该让错误尽早的抛出来,好尽快的修复,而不是在哪儿一个劲的重试,没啥用。UI自动化应该做好显式和隐式等待。

什么样的失败用例应该重跑

在测试框架中,最好能区分出什么样的异常时服务异常,什么是测试框架本身的异常,对于服务异常可以适当重试,对于框架异常不进行重跑,直接抛出。断言失败当然更不需要重跑。所以在控制测试用例执行的时候,不要一股脑儿的全都重跑,有选择性的,既要保证稳定性,还要保证效率,让自动化发挥价值。

总结

测试要做到有的放矢,在合适的时候做合适的事情,自动化测试的价值就是因为它能快速的检查系统,如果因为重试导致运行的时间成倍增加,是没有任何意义的,还不如抛出错了,尽快去解决。而且自动化测试用例的运行顺序也要控制,处于业务前方的接口尽量先跑,处于业务后方的接口尽量后跑。比如登陆接口和下单接口,登陆接口属于业务靠前的,下单是靠后的,一般在测试下单接口的时候都要初始化登陆状态,这个时候会调用登陆接口,在测试用例批量执行的时候,可以先让登陆接口测试用例先跑,如果这个接口有问题,那么其他需要登陆接口配合的用例全都会失败,那这样后面的用例就不用跑了,这样会节省很多的时间。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】在这里插入图片描述
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

 行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请点击及时加入群:1150305204 ,里面有各种测试开发资料和技术可以一起交流哦。

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

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

相关文章

2023年全球软件质量效能大会(QECon上海站):核心内容与学习收获(附大会核心PPT下载)

会议聚焦于软件质量和效能的提升。在智能时代&#xff0c;随着数字化的深入人心&#xff0c;软件正在随着云计算、移动互联网、物联网等的发展而不断进化&#xff0c;软件对企业的发展愈加重要&#xff0c;大家对软件的质量要求也在从传统功能、性能、安全这些基础层面向着用户…

水产冷链物流行业零下25℃库架一体 海格里斯HEGERLS四向穿梭式冷藏冷库智能密集仓

随着国内外仓储物流整体规模和低温产品消费需求的稳步增长&#xff0c;冷链市场应用潜力不断释放。在传统“货架叉车”的方式下&#xff0c;货物、人员及机械设备不断进出&#xff0c;容易造成温度波动&#xff0c;导致冷量流失。立体冷库则以更高密度、更具成本效益的方式&…

Unity URP下阴影锯齿

1.概述 在Unity开发的URP项目中出现阴影有明显锯齿。如下图所示&#xff1a; 并且在主光源的Shadow Type已经是Soft Shadows模式了。 2.URP Asset 阴影出现锯齿说明阴影质量不高&#xff0c;所以要先找到URP Asset文件进行阴影质量参数的设置。 1.打开PlayerSetting找到Graph…

对于软件测试的认识和了解

对软件测试的认识&#xff1a; 软件测试要求开发人员避免测试自己开发的程序。从心理学角度讲&#xff0c;这是很有道理的。特别是一个相对复杂的系统&#xff0c;开发人员在刚刚开发完成的时候&#xff0c;尚沉浸于对自己设计的回味之中。此时去测试的话往往会侧重于程序本身的…

【设计模式-6】建造者模式的实现与框架中的应用

建造者模式又被成为生成器模式&#xff0c;是一种使用频率比较低&#xff0c;相对复杂的创建型模式&#xff0c;在很多源码框架中可以看到建造者的使用场景&#xff0c;稍后我们会在本文末尾展示几个框架的使用案例。  建造者模式所构造的对象通常是比较复杂而且庞大的&#x…

turnjs实现翻书效果

需求&#xff1a;要做一个效果&#xff0c;类似于阅读器上的翻书效果。 咱们要实现这个需求就需要使用turnjs这个插件&#xff0c;他的官网是turnjs官网。 进入官网后可以点击 这个按钮去下载官网的demo。 这个插件依赖于jQuery&#xff0c;所以你的先安装jQuery. npm insta…

Linux-v4l2框架

框架图 从上图不难看出&#xff0c;v4l2_device作为顶层管理者&#xff0c;一方面通过嵌入到一个video_device中&#xff0c;暴露video设备节点给用户空间进行控制&#xff1b;另一方面&#xff0c;video_device内部会创建一个media_entity作为在media controller中的抽象体&a…

浏览器深色模式

1、Edge强制深色模式 1、先在edge里设定成深色模式 设置浏览器中的深色设置 但这种方式设置后很多网站仍是白色的背景 2、实验室设置强制深色 网址栏 输入 edge://flags搜索 dark 选择 enabled 重启 2、Chrome强制深色模式 浏览器输入 Chrome深色设置 chrome://flags/#…

波动,热传导,扩散方程建立

数学物理方程是从自然科学的各个领域和工程技术领域中导出的偏微分方程和积分方程.在这些以偏微分方程为基础的数学模型中&#xff0c;二阶线性偏微分方程中的三个典型方程与定解条件的建立、解法及其应用&#xff0e;描述振动和波动过程的波动方程、描述输运过程的热传导&…

vivado Revision Control

2020.2 只需要git 管理 prj.xpr 和 prj.srcs/ https://china.xilinx.com/video/hardware/ip-revision-control.html Using Vivado Design Suite with Revision Co

figma导入psd实战笔记

最近发现figma特别好用 并且插件生态特别庞大 如 将设计图转成vue react react-native 项目 flutter 项目 最重要的是 可以集成vscode 插件使用 使用蓝湖久了 感觉蓝湖 有写繁琐 同事扩展功能有限 Figma: The Collaborative Interface Design ToolFigma is the leading collabo…

WorkPlus AI助理为企业提供智能客服的机器人解决方案

在数字化时代&#xff0c;企业面临着客户服务的重要挑战。AI客服机器人成为了提升客户体验和提高工作效率的关键工具。作为一款优秀的AI助理&#xff0c;WorkPlus AI助理以其智能化的特点和卓越的功能&#xff0c;为企业提供了全新的客服机器人解决方案。 为什么选择WorkPlus A…

使用Web自动化测试工具显著好处

随着互联网技术的飞速发展&#xff0c;Web应用程序在企业中的重要性不断上升。为了确保Web应用程序的质量和稳定性&#xff0c;许多企业转向了Web自动化测试工具。下面是使用Web自动化测试工具的一些显著好处&#xff1a; 1. 提高测试覆盖率 Web自动化测试工具可以模拟用户与We…

【基础工具篇使用】ADB 的安装和使用

文章目录 ADB的命令安装ADB 命令使用查看帮助 ——adb help查看连接设备 ADB的命令安装 ADB 命令的全称为“Android Debug Bridge”&#xff0c;从英文中看出主要是用作安卓的调试工具。ADB 命令在嵌入式开发中越来越常用了 在 Windows 上按“win”“R”组合件打开运行, 输入 …

多语言生成式语言模型用于零样本跨语言事件论证提取(ACL2023)

1、写作动机&#xff1a; 经过预训练的生成式语言模型更好地捕捉实体之间的结构和依赖关系&#xff0c;因为模板提供了额外的声明性信息。先前工作中模板的设计是依赖于语言的&#xff0c;这使得很难将其扩展到零样本跨语言转移设置。 2、主要贡献&#xff1a; 作者提出了一…

逆变器简述

一般家用电器&#xff0c;像微波炉&#xff0c;电饭煲等都是直接插墙壁上的电就可以工作&#xff0c;所以这些家用电器是使用我们市电AC220V的电压 但我们用到的手机&#xff0c;电瓶车以及新能源汽车都是需要充电器的&#xff0c;所以这些用电产品里面都是有电池的&#xff0…

AUTO SEG-LOSS SEARCHING METRIC SURROGATES FOR SEMANTIC SEGMENTATION

AUTO SEG-LOSS: 搜索度量替代语义分割 论文链接&#xff1a;https://arxiv.org/abs/2010.07930 项目链接&#xff1a;https://github.com/fundamentalvision/Auto-Seg-Loss ABSTRACT 设计合适的损失函数是训练深度网络的关键。特别是在语义分割领域&#xff0c;针对不同的场…

x-cmd pkg | tsx - Node.js 的直接替代品

目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 tsx 代表 “TypeScript execute”&#xff0c;由 TypeScript 编写&#xff0c;内部使用由 Go 语言编写的 esbuild 核心二进制实现超快的 TypeScript 编译&#xff0c;旨在增强 Node.js 以无缝运行 TypeScript / ESM /…

软件测试|Selenium 元素不可交互异常ElementNotInteractableException问题分析与解决

简介 在使用 Selenium 进行 Web 自动化测试时&#xff0c;我们可能会遇到各种异常情况。其中之一就是 ElementNotInteractableException 异常&#xff0c;这通常意味着在尝试与页面元素交互时出现了问题。本文将详细介绍这个异常的原因、可能的解决方法&#xff0c;并提供示例…

A preview error may have occurred. Switch to the Log tab to view details.

记录一下当时刚开始学习鸿蒙开发犯的错误 UIAbility内页面间的跳转内容的时候会遇到页面无法跳转的问题 并伴随标题错误 我们跳转页面需要进行注册 路由表路径&#xff1a; entry > src > main > resources > base > profile > main_pages.json 或者是页面…