抽3分钟检验一下,自动化测试重运行,我会了么?

2023-11-11

测试失败时会发生什么?

如果有人手动运行测试,那么他们会暂停并了解更多信息。但是,当自动测试失败时,其余部分可能会继续运行。在套件完成之前,你是没有办法看到测试报告的,并且自动化程序不会在故障时执行任何额外的操作尝试找出问题。当剩下的用例全部执行以后,测试人员可能会重新点击一下执行按钮,看看第二遍失败的用例会不会执行成功。

那么,自动测试重试好还是坏?这实际上是一个相当争议的话题。

图片

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386    

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337什么是重试机制?

为避免任何混淆,我们理清“自动测试重试”的意思。

假设我有 100 个自动测试用例。当我运行这些测试用例时,框架将单独执行每个测试,并产生测试的通过或失败结果。在套件结束时,框架将所有结果聚集在一起。在最佳情况下,所有测试通过:100/100。

但是,假设其中一个测试失败了。在发生故障时,测试框架将捕获任何异常,执行任何清理例程,记录故障,并安全地移动到下一个测试用例上。在套件结束时,该报告将显示 99/100 通过一个测试失败的测试。

默认情况下,大多数测试框架将一次运行每个测试。但是,某些测试框架具有用于自动重新运行的测试用例故障的功能。框架甚至可以使测试人员能够指定要重试的次数。因此,假设我们为我们的 100 个测试套件配置了 2 次重试。当一个测试失败时,框架将为这个用例再执行 2 遍,再转移到下一个用例。

图片

重试可能被滥用

假设你现在是自动化团队的,每晚为 Web 应用程序提供 300 个自动测试,如大家所知,Web 测试经常不太稳定,每天晚上大约十几个不同的测试失败,每天早上都花了很多时间调试问题。但是当你重新运行这些失败用例时,他们几乎总是通过。所以你现在每天晚上都会会自己的自动化测试程序设置重运行。

这种策略是好的吗?很难说!因为这实际上是在隐藏问题,而不是暴露问题。测试人员应该关注爆红,而不是绿色的通过信息, 通过重运行机制,原来产生红色警示的 10 几个用例都无一例外的通过了, 你还会花精力去分析晚上这 10 几个用例失败可能出现的原因吗?

万一当时确实是在异常的条件下,真的触发了这些用例爆红, 后面因为条件回复正常,才执行成功呢?

如果这种异常条件总是间歇性的出现呢?在这种情况下,用例重运行隐藏了可能出现的 bug。

实际上失败重运行在手工测试也很普遍,不是自动化独有的。测试人员喜欢找到一致,可重复的失败,因为这些失败很容易解释。一旦一个测试问题只是间歇性的出现,我们就没法向开发和团队其他人员解释了。这些问题可能是环境因素导致的,可能是达到的条件比较苛刻,因此难以复现。

通常情况下,如果不能轻松复现这个测试问题,我们会选择沉默,不再和开发继续争吵。而自动化的重运行机制也是这样,当一个用例失败时,我们可以选择复现,如果第二次没再出现,我们就默认了,这里没问题,因为问题没有复现!!

图片

那么,失败重运行的正确打开方式是怎样的?

首先,一定要记录所有失败的日志信息和失败原因,如果有必要,不管重运行后有没有成功,只要用例有一次爆红,都应该引起测试人员的警觉:这里是很有可能出问题的。

其次,在项目迭代过程中,我们不一定有时间去解决这些间歇性发生的问题。要复现问题都比较困难,更不要说要分析,和开发人员沟通的过程了。

最终的答案,还是优先级。一致性的失败是我们重点要提交的问题,他们总是报红,不管你是不是做了重运行。当解决了这些一致性失败时,再考虑黄色问题(重运行、警告)。

不管如何,重运行机制是一种非常好的工具和手段,它能让我们知道哪些问题是一致性的,哪些是间歇性的,重点在于,作为测试人员应该警戒所有的红色和黄色,而不是想法设法把红色变成绿色。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

抽3分钟检验一下,自动化测试重运行,我会了么? 的相关文章

  • 如何阻止 Jenkins 中的 CI 构建意外发布到发布存储库?

    有时 开发人员会不小心签入 POM 中没有 SNAPSHOT 的版本 这将构建 Maven 项目并将工件发布到发布存储库 我怎样才能避免这种情况呢 我只想发布构建工件以发布存储库 而不是 CI 构建 我考虑了以下问题 但它们都不是一个简单的
  • Hudson 和电子邮件通知

    我可以覆盖每个作业的 Hudson 设置 系统管理员电子邮件地址 吗 阅读了一些源代码http sorcerer jenkins ci org http sorcerer jenkins ci org and hudson tasks Ma
  • 使用多分支管道触发詹金斯构建标签创建

    我有一个舞台我的詹金斯文件 https github com ryandawsonuk activiti build blob 5d60df0b0e1410f901c64313d90e7aa03054c1df Jenkinsfile L79
  • 在 Cloudbees Jenkins 文件夹中设置环境变量

    在我重新安装 Jenkins 和 Cloudbees Free Enterprise 插件后 Jenkins 文件夹中设置的环境变量停止工作并从配置 UI 中消失 但是 它仍然存在于文件系统上的 config xml 中 如下所示
  • 在 jelly 脚本中使用 JavaScript

    我正在尝试在 Jenkins 中使用用 JavaScript 编写的脚本 我认为最简单的方法是在 jelly 脚本中调用它们 例如 我有文件 myCustom js alert Hello World function myFunction
  • 解锁 Jenkins - 如何

    我已经使用 putty 从 Windows 系统在我的 ec2 实例上安装了 jenkins 当我尝试通过网络访问 jenkins 时 我使用 var lib jenkins secrets initialAdminPassword 解锁
  • 让 gradle 执行 JUnit 测试(Android 应用程序、Android Studio)

    我目前正在开发一个 Android 应用程序 最近从 Eclipse 切换到 Android Studio 不是我的想法 不过 我想配置 jenkins 服务器来定期运行 JUnit 测试和其他测试 为了实现这一点 我尝试配置一个 grad
  • 如何在 Jenkins 声明式管道中设置 PATH

    在 Jenkins 脚本化管道中 您可以像这样设置 PATH 环境变量 node git url https github com jglick simple maven project with tests git withEnv PAT
  • Jenkins 管道中的 Sonarqube 质量门状态检查失败

    我是詹金斯管道脚本和声纳库的新手 如果我能就以下问题获得一些帮助 那就太好了 当质量门检查失败时 我想使 Jenkins 声明式管道作业失败 根据声纳文档 https docs sonarqube org latest analysis s
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • 在 mac-os-x Yosemite 上调用“npm”时,Jenkins 构建步骤失败

    在开始之前 我想说我已经检查过这些答案 Jenkins 构建步骤在 npm install 上失败 https stackoverflow com questions 11564508 jenkins build step fails on
  • 如何在 Jenkins 中设置发件人地址?

    我正在将邮件从 Jenkins 发送到内部匿名 SMTP 中继 然后 该中继通过端口 587 上的 TLS 安全地发送邮件进行在线交换 传输工作正常 问题是 Microsoft 要求发件人地址与身份验证凭据登录名匹配 该登录名与帐户电子邮件
  • 使用 jenkins pipeline 插件实现动态并行构建的想法

    我需要并行运行一组构建任务 构建的任务是动态的 可能会发生变化 我需要一些帮助来实现下面的细节 构建的任务详细信息将在 xml 中动态生成 其中包含哪些任务必须并行 串行执行的信息 example 说有一个版本A 其中有以下任务和执行顺序
  • JMeter:来自 Jenkins 的九个以上参数

    我试图将超过九个参数从 Jenkins 传递到 JMeter4 0 当我阅读时 我发现 JMeter 不接受超过 9 个参数 作为解决方法 我想将所有参数作为字符串传递 并在 JMeter BeanShell 中将其拆分 java jar
  • 降低 Sonar 2.1.x 中的日志级别

    我有一个 Maven 3 x 版本 它使用 Sonar 2 1 x 进行质量控制 maven sonar 插件在 Jenkins 内部使用来运行声纳检查 在 Jenkins 构建过程中 当 Sonar 启动时 它会在 INFO 级别记录很多
  • 将变量从 jenkins 传递到 testng.xml

    我想根据从詹金斯传递的变量运行测试用例 例如 选择您要运行的测试用例 测试用例一 测试用例二 在 pom xml maven 中
  • 詹金斯管道如果其他不工作

    我正在创建一个示例詹金斯管道 这是代码 pipeline agent any stages stage test steps sh echo hello stage test1 steps sh echo TEST stage test3
  • 需要 XSL 文件将内部 xml 测试格式转换为 Junit 格式(xUnit Plugin for jenkins)

    我正在尝试编写一个 XSL 将我的 XML 转换为 jenkins 采用的 JUNIT 格式 见下文 我的 xml 看起来像这样 我有几个 类 例如 数据中心 或 网络
  • 如何获取 Jenkins 的 API 令牌

    我正在尝试使用詹金斯REST https en wikipedia org wiki Representational state transferAPI 说明中说我需要 API 密钥 我浏览了所有配置页面才找到它 如何获取 Jenkins
  • Jenkins 和 Gitlab 不获取代码

    当我设置自己的项目时 我遇到了问题 我开始配置我的 Jenkins 作业 我这样做了 在 Jenkins 上为 gitlab 用户帐户创建凭证 在 gitlab 上创建访问令牌并在 Jenkins 中使用此令牌来启用它 and this i

随机推荐

  • linux文件权限和文件夹权限解读

    基本介绍 使用ll命令可以查看当前文件夹下所有文件的具体信息 输出结果的第一个字段就是描述文件和目录权限的编码 这个字段的第一个字符代表了对象的类型 代表文件 d 代表目录 l 代表链接 c 代表字符型设备 b 代表块设备 n 代表网络设备
  • 机器学习笔记(李宏毅 2021/2022)——第五节:Transformer

    视频 2021 Transformer 上 2021 Transformer 下 self attention变形 一 Transformer应用 Transformer就是一个Sequence to sequence的model 他的缩写
  • 什么是LAMP(LAMP概念详解)

    LAMP是 Linux Apache MySQL PHP Perl Python 的简称 1998年Michael Kunze在电脑杂志C T撰写的文章中首次使用了缩略语LAMP 它所组成的各组件都是开源软件 因此很方便自由的获取 导致这些
  • 百度地图3d效果和卫星图效果

    3D图 3d案例如上图 代码如下
  • LDAP客户端+Samba架设指南

    1 设定使用 LDAP Authenication vi etc ldap conf host 192 168 1 5 base dc ldap dc gmshi dc org URI ldap 192 168 1 5 rootbinddn
  • 106道Java并发和多线程基础面试题大集合(2w字),这波面试稳了~

    前言 Java多线程分类中写了21篇多线程的文章 21篇文章的内容很多 个人认为 学习 内容越多 越杂的知识 越需要进行深刻的总结 这样才能记忆深刻 将知识变成自己的 这篇文章主要是对多线程的问题进行总结的 因此罗列了108个多线程的问题
  • C/C++中递归的定义和调用(如何使用递归)

    目录 递归是什么 递归模板 实例分析 1 阶乘 2 斐波那契数列 3 汉诺塔 递归是什么 先看一下什么叫递归 递归 就是在运行的过程中不断调用自己 直到满足某个条件 构成递归需具备的条件 子问题须与原始问题干同样的事 且更为简洁明了 不能无
  • springboot+vue jwt校验token 单点登录

    SSO Single Sign On 模式 CAS单点登录 OAuth2 分布式 SSO single sign on 模式 单点登录英文全称Single Sign On 简称就是SSO 它的解释是 在多个应用系统中 只需要登录一次 就可以
  • 面试官:断网了,还能 ping 通 127.0.0.1 吗?

    你女神爱不爱你 你问她 她可能不会告诉你 但网通不通 你 ping 一下就知道了 可能看到标题 你就知道答案了 但是你了解背后的原因吗 那如果把 127 0 0 1 换成 0 0 0 0 或 localhost 会怎么样呢 你知道这几个IP
  • Python吴恩达深度学习作业22 -- Emoji表情情感分类器

    Emojify 此次你将使用单词向量表示来构建Emojifier表情符号 你是否曾经想过让短信更具表现力 你的emojifier应用程序将帮助你做到这一点 因此 与其写 恭喜晋升 有机会喝杯咖啡聊天吧 爱你 emojifier可以自动将其变
  • VMware(Ubuntu)共享文件夹设置

    VMware共享文件夹设置 安装完成ubuntu虚拟机后 需要建立共享文件夹来方便在Host主机和虚拟机ubuntu之间分享文件 在虚拟机设置中 在 选项 卡中找到 共享文件夹 项 在右侧添加共享文件夹 在虚拟机中 在ubuntu终端中使用
  • Linux内核同步之RCU机制基础

    Why RCU 1 中断与抢占 当一个进程被时钟中断打断后 kernel运行tick中断处理程序 一般是top half 中断处理程序运行结束后 有两种情况 之前的进程获得CPU继续运行 另一个进程获得了CPU开始运行 而之前的进程则被抢占
  • apt-get update不成功的解决方法

    1 apt get update的时候不成功 如下图所示 解决方法 修改DNS 文件是 etc resolve conf 添加nameserver 8 8 8 8 2 添加后再次运行又显示错误 和锁相关 如下图所示 解决方法 将apt ge
  • npm -v 报错:Error: EPERM: operation not permitted, mkdir 'C:\soft\nodejs'

    npm v 报错 Error EPERM operation not permitted mkdir C soft nodejs 起因 原本安装node在C盘soft文件夹下 按nodejs安装和配置安装后 因为公司电脑的各种权限问题 无法
  • SpringBoot开发日记(六)——如何部署SpringBoot项目

    一 jar包方式启动 使用spring boot内置的tomcat运行 不需要外置tomcat 1 打jar包 打包完成后 在Building jar后面就是打包完成后jar存放的位置 然后jar包所在的位置进入cmd 或者把jar放到自己
  • java.sql.SQLException: Connection is read-only 问题产生的原因及解决办法

    org springframework dao TransientDataAccessResourceException Error updating database Cause java sql SQLException Connect
  • 搞懂 Spark 系列之深入理解Spark内存管理

    Spark 内存概述 众所周知 Spark是比Hadoop快近百倍 理想条件下 如下图所示 的大数据计算引擎 而这其中最主要突出的地方就是Spark是基于内存的计算引擎 相比于Hadoop来说 减少了MR过程中的磁盘IO 通过将map端计算
  • 黑马程序员mysql高级_[杭州校区][技术笔记] MySql高级查询

    本帖最后由 小江哥 于 2019 12 24 15 16 编辑 高级查询 高级查询的格式 select 聚合函数 from 表名 where group by having order by limit order by 给查询结果排序 语
  • 【@FeignClient】

    FeignClient 在做springcloud分布式开发过程中会有需要访问其他服务的情况 每一个服务之间都是以接口的方式访问的 那么就需要使用到 FeignClient 来访问其他服务的接口 FeignClient 实现的是声明式的 模
  • 抽3分钟检验一下,自动化测试重运行,我会了么?

    测试失败时会发生什么 如果有人手动运行测试 那么他们会暂停并了解更多信息 但是 当自动测试失败时 其余部分可能会继续运行 在套件完成之前 你是没有办法看到测试报告的 并且自动化程序不会在故障时执行任何额外的操作尝试找出问题 当剩下的用例全部