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

这篇具有很好参考价值的文章主要介绍了关于自动化测试用例失败重试的一些思考。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

怎么做

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

关于自动化测试用例失败重试的一些思考,自动化测试,自动化,测试用例,运维,python,职场和发展,自动化测试,软件测试

关于自动化测试用例失败重试的一些思考,自动化测试,自动化,测试用例,运维,python,职场和发展,自动化测试,软件测试


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

public class MyTestClass {

    @Rule
    public 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;
        }

        @Override
        public void evaluate() throws Throwable {
            for (int i = 0; i < repeat; i++) {
                statement.evaluate();
            }
        }

    }

    @Override
    public 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自动化应该做好显式和隐式等待。

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

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

总结

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

关于自动化测试用例失败重试的一些思考,自动化测试,自动化,测试用例,运维,python,职场和发展,自动化测试,软件测试文章来源地址https://www.toymoban.com/news/detail-632467.html

到了这里,关于关于自动化测试用例失败重试的一些思考的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 模型生成自动化测试用例

    自动产生的测试用例本就应该由程序自动执行,这其实也就是NModel推荐的模式。先回过头来看看文章中制作的模型,模型里面将登录、注销、用户名以及密码等要素都抽象出来了,而NModel是以这些抽象出来的动作(登录、注销)和状态(用户名、密码)为依据,产生测试用例

    2024年02月09日
    浏览(49)
  • 【测试】MeterSphere单接口用例、自动化场景用例测试教程

    1、在对应的模块下创建接口 2、接口的详细信息填写 3、为该接口添加测试用例 设置断言规则 4、调试单接口测试用例通过(若不通过,根据请求内容、响应体和断言结果排查错误) 1、根据测试场景将单接口自动化用例进行组合,形成场景自动化测试用 输入场景用例名称,

    2024年02月13日
    浏览(52)
  • pytest自动化测试指定执行测试用例

    1、在控制台执行 打开cmd,进入项目目录 指定执行某个模块  pytest testcasesLogisticsPlatformCarSourcetest_CarSourceList.py 指定执行某个目录及其子目录的所有测试文件  pytest testcasesLogisticsPlatformCarSource 指定执行某个模块的某个类的某个测试用例   pytest testcasesLogisticsPlatformHome_p

    2024年02月15日
    浏览(37)
  • 自动化测试用例设计实例

    在编写用例之间,笔者再次强调几点编写自动化测试用例的原则: 1、一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。 2、一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统 3、尽量只做功能中正向逻辑的

    2024年02月12日
    浏览(37)
  • 接口自动化测试系列-yml管理测试用例

    项目源码 整体目录结构,目录说明参考 测试用例结构类似httprunner写法,可参考demo 主要核心函数 用例读取转换json 测试用例格式处理函数

    2024年02月09日
    浏览(42)
  • 接口自动化测试系列-excel管理测试用例

    代码源码: 框架结构 excel用例demo excel数据处理 requests请求封装 检查点函数 数据处理工厂 发送邮件函数

    2024年02月10日
    浏览(44)
  • 从0到1精通自动化测试,pytest自动化测试框架,skip跳过用例(八)

    pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者希望自己失败的测试功能 skip意味着只有在满足某些条件时才希望测试通过,否则pytest应该跳过运行测试。 常见示例是在非Windows平台上跳过仅限Windows的测试,或跳过测试依赖于当前不可用的外部资源(例如数据库

    2024年02月11日
    浏览(58)
  • 接口自动化测试用例如何设计?

    说到自动化测试,或者说接口自动化测试,多数人的第一反应是该用什么工具,比如:Python Requests、Java HttpClient、Apifox、MeterSphere、自研的自动化平台等。大家似乎更关注的是哪个工具更优秀,甚至出现“ 做平台的 写脚本的 用工具的 ”诸如此类的鄙视链,但却很少有人去关

    2023年04月24日
    浏览(48)
  • 从0到1精通自动化测试,pytest自动化测试框架,测试用例setup和teardown(三)

    目录 一、前言 二、用例运行级别 三、函数式 1、setup_function / teardown_function 2、setup_module / teardown_module 四、类和方法 五、函数和类混合 学过 unittest 的都知道里面用前置和后置 setup 和 teardown 非常好用,在每次用例开始前和结束后都去执行一次 当然还有更高级一点的 setupCla

    2024年02月09日
    浏览(49)
  • 2.接口自动化测试学习-执行excel测试用例

    编程语言 编程工具 自动化测试框架:pytest 报告可视化:allure 持续方案:CI持续集成-jenkins 仓库服务器(自动化执行):github/gitlab/gitee 测试管理工具:jira

    2024年04月15日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包