java 多线程执行时间测试,TestNG中实现多线程并行,提速用例的执行时间

2023-11-18

1c116922d2f8ddaa5fefc3cae6c56cdf.png

TestNG是一个开源自动化测试工具,TestNG源于Junit,最初用来做单元测试,可支持异常测试,忽略测试,超时测试,参数化测试和依赖测试。

24e6dc6f198db8017edd6e34bf5c5465.png

除了单元测试,TestNG的强大功能让他在接口和UI自动化中也占有一席之地。以Java为例,目前主流的测试框架有:

基于TestNG+Httpclient的接口测试

基于TestNG+Selenium的UI自动化测试

随着企业内部自动化资产的持续积累以及持续集成的推进,对自动化测试的运行速度要求越来越高,某些应用的自动化测试用例可能多达几千条,如何加速这些自动化用例的运行速度,让自动化落实到每一次版本变更和持续集成当中,是一个需要解决的问题。

51a0e8135eafc0befd19ebc3d499c817.png

TestNG通过对多线程的支持提供了加速代码运行的有效方式,TestNG中实现多线程并行,可以通过如下几种方式:

TestNG.xml中配置多线程并发的级别:测试的级别由上至下可以分为suite -> test -> class -> method

@Test注解上配置多线程并发

@Dataprovider上配置多线程并发

TestNG.xml中不同级别的并发

在TestNG.xml中通过制定 parallel的运行级别(suite,test,class,method)以及thread-count的值来实现并发运行测试用例。一个TestNG.xml中通常只有一个suite,并发级别通常配置为test,class,method:

parallel=test 意味着suite中的不同test标签下的测试类会并发执行,但同一test标签下的测试类会顺序执行

parallel=class 意味着test标签下的不同测试类会并发执行,但同一个测试类里的方法会顺序执行

paralle=method 意味着测试类里的方法会并发执行,这是并发的最大级别

thread-count 意味着并发的最大线程数,当parallel=method, thread-count=10, 有50个测试方法时,每次最多并行10个测试方法。

b17dabb332af4e03a03a44b569e3cff2.png

@Test注解上配置多线程并发

@Test注解上可通过配置threadPoolSize来实现并发,threadPoolSize和invocationCount是结合使用的,当invocationCount=1的时候,threadPoolSize没有意义。invocationCount表示方法被调用的次数,如果不配置threadPoolSize,该方法会被顺序执行5次,如果配置threaPoolSize=4,下图所示的方法会一次以4个线程并发执行,缩短执行时间

05911e591e1245351c249bd496761dd2.png

Dataprovider上配置多线程并发

Dataprovider注解上可通配置parallel=true来实现数据驱动测试的并发,设置parallel=true的Dataprovider在被调用的时候会并发执行

7ed4cd4ae787cdea66974d057ed1ab62.png

TestNG默认的dataprovider并发执行的线程数是10,要更改此限制,可以在TestNG.xml文件中配置data-provider-thread-count属性

49ac88998e747d117466c0ad49b1e01d.png

TestNG的多线程方式提高执行速度,通过多线程可以大大提速用例的执行时间,新手小白也很容易入门,但是在设计用例的时候需要考虑用例是否适合并发,线程安全和共享变量的问题,否则会增加用例执行的不稳定性。

本文由51ste.com网友编辑,未经授权,不得转载使用上述作品盈利;个人转载,需标明作者及出处。

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

java 多线程执行时间测试,TestNG中实现多线程并行,提速用例的执行时间 的相关文章

  • matlab 读取某一文件夹下的文件

    MATLAB 是一个十分强大的科学计算软件 用于各种数据分析和科学计算 在实际工作和研究过程中 我们通常将数据存储在文件中 文件存在于系统的某个目录中 如果需要读取这些文件 可以使用 MATLAB 提供的文件和文件夹操作函数 本文将介绍如何
  • 一、Java基础之一——环境配置

    文章目录 1 1 JavaSE知识体系 1 2 各种语言的应用领域 1 3 Java语言跨平台原理 1 3 1Java语言特点 1 3 2 Java语言跨平台原理 1 3 3 JRE和JDK 1 4 Java环境配置 1 4 1 JDK下载
  • C#——设计一个Windows应用程序,在该程序中定义一个学生类和班级类

    设计一个Windows应用程序 在该程序中定义一个学生类和班级类 以处理每个学生的学号 姓名 语文 数学和英语3门课程的期末考试成绩 要求 1 能根据姓名查询指定学生的总成绩 2 能统计全班学生的平均成绩 3 能统计单科成绩最高分 4 能统
  • Unity处决动画实现思路

    前言 不只是处决动画 只要是需要多个动画目标配合的都可以参考下面的思路 方案一 去除掉动画的位移部分 xz 在合适的时机移动到固定的位置双方同时播放动画 比如实现下图中狼和鹿的捕猎动画 我的做法是在要开始播放处决动画之前先让狼位移到固定位置
  • 卷积相关知识

    二维图片卷积 二维卷积可以处理二维数据 nn Conv2d self in channels out channels kernel size stride 1 padding 0 dilation 1 groups 1 bias True
  • 树莓派安装教程

    1 安装raspbian操作系统 下载安装工具 Win32DiskImager 0 9 5 binary 下载 img文件 使用上述工具即可 下载前首先需要格式化SD卡 再重新写入 之后插入SD卡 即可可以看到操作系统的界面 关于解决显示屏
  • 浅记封装的antd组件: 树形下拉选择

    树形下拉选择 1 可输入搜索 2 可设置单选多选 3 父节点选择后 可以设置子节点全选 import React from react import connect from dva import TreeSelect Form from
  • NeuPhysics: Editable Neural Geometry and Physics from Monocular Videos 解读

    1 论文简介 1 将NeRF和SDF方法结合来更好的回归物体表面 mesh 2 通过在神经辐射场后嵌入可微模拟器 实现动力学参数学习和进行场景编辑 2 核心思想 上述论文包含三个模块 1 Time invariant information
  • matlab生成dll

    实验室的一个项目需要调用matlab程序 经过再三考虑 决定使用vc调用matlab导出库的形式 而我主要负责与matlab程序结合的工作 以下是今天工作的简要总结 全当是个备忘吧 1 在matlab中选择compiler 在命令行窗口输入
  • 中国科学信息科学latex模板编译报错的解决办法

    中国科学 信息科学 latex模板编译不通过解决办法 1 前言 本文的解决办法不需要重新下载ctex 只需要添加两个文件即可 主要参考了下面的这篇文章如果你想知道为什么要这么改 强烈推荐阅读这篇博客 编译 CCT 模板 stone zeng
  • Django 模板的导入与继承

    目录 模板的导入和继承 1 模板的导入之include标签 2 模板的继承 派生之extendds标签 block标签 模板的导入和继承 在实际开发中 模板文件彼此之间可能会有大量冗余代码 为此django提供了专门的语法来解决这个问题 主
  • AIGC之GPT-4:GPT-4的简介与详细攻略

    AIGC之GPT 4 GPT 4的简介与详细攻略 简介 欢迎来到人工智能生成内容 AIGC 时代的新篇章 本篇博客将介绍GPT 4 Generative Pre trained Transformer 4 的核心原理 意义 亮点 技术点 缺
  • 【java笔记】泛型定义和使用

    为什么使用泛型 泛型的字面意思就是广泛的类型 利用泛型 同一套代码可以用于多种数据类型 这样 不仅可以复用代码 降低耦合 而且可以提高代码的可读性和安全性 可读性 var s new ArrayList
  • 【OpenGL进阶】04.支持多贴图的Shader

    这篇文章来实现一下多贴图的效果 在这篇文章中 再次对代码进行了封装 是代码看起来更加清晰明了 shader h中添加了SetTexture接口 pragma once include ggl h struct UniformTexture
  • [canvas] 坐标旋转

    坐标旋转 做圆周运动 vr 0 1 angle 0 radius 100 centerX 0 centerY 0 object x centerX Math sin angle radius object y centerY Math co
  • git报错:warning: unable to access

    git操作的时候出现该错误 warning unable to access Users a10 12 config git ignore Permission denied warning unable to access Users a
  • 一个女孩的就业之路(同济大学BBS上两年不沉的帖子)

    文章很长 有机会见到这篇文章的童鞋 希望能耐心看完 其他不多说 我是2005年毕业的 偶尔来这里看看 不常灌水 今天来随意写下一些 如果对各位有任何的帮助 是我衷心所愿 1 考研与就业 2004年的暑假 我和大多数人一样 艰难的抉择 究竟是
  • NacosValue 注解

    NacosValue 定义在 nacos api 工程中 com alibaba nacos api config annotation NacosValue 注解解析在 nacos spring project 工程中 com aliba
  • 阻塞队列java实现

    阻塞队列 目前队列存在的问题 1 很多场景要求分离生产者和消费者两个角色 它们得由不同的线程来担当 而之前的实现根本没有考虑线程安全问题 2 队列为空 那么在之前的实现里会返回null 如果硬拿到一个元素 只能不断循环尝试 3 队列为满 那

随机推荐

  • PHP魔术方(2)

    PHP魔术方 2 文章目录 PHP魔术方 2 1 toString 和 invoke tostring 和 invoke 两者的触发形式接近 2 call 用来检测所调用的成员方法是否存在 3 callStatic 4 get 5 set
  • 在Linux系统上用C++将主机名称转换为IPv4、IPv6地址

    在Linux系统上用C 将主机名称转换为IPv4 IPv6地址 功能 指定一个std string类型的主机名称 函数解析主机名称为IP地址 含IPv4和IPv6 解析结果以std vector
  • vue div高度自适应

    1 在 js文件中编写自定义指令 export default install Vue 在组件标签上绑定 v resizable 指令 并使用对象的形式通过绑定值传递宽度和高度以及最大 最小高度的值 在 bind 函数中 获取传递的值 并根
  • 走进区块链企业 I 用实践赋能实体产业,坚持提供价值服务的旺链科技

    作为华东师范大学MBA高材生 他在高科技制造 金融行业有着超过16年的业务咨询管理和技术架构经验 他是中国云体系产业创新联盟理事会常务理事 边缘计算产业联盟专家委员 也是原 Accenture资深总监 集成技术专家 而在如今话题正盛的 区块
  • linux创建,恢复和删除screen

    学习记录 侵删 目录 1 创建 2 恢复 3 删除 使用服务器训练模型时 如果服务器断开 之前的训练结果显示的终端就不好找到了 貌似可以通过线程去恢复 没试过 可以使用screen 训练前先打开一个screen 如果服务器断开 重连后可以恢
  • 最新免费版 Office 全家桶Copilot,Gamma+MindShow 两大ChatGPT AI创意工具GPT-4神器助力高效智能制作 PPT,一键生成,与AI智能对话修改PPT(免安装)

    目录 前言 ChatGPT MindShow 1 使用ChatGPT工具生成PPT内容 2 使用MindShow工具一键智能制作PPT MindShow简介 使用网页版制作 pdf转ppt GAMMA AI神器 GAMMA app介绍 注册
  • MySQL基础篇:sql_mode配置

    文章目录 零 简介 一 sql mode常用来解决的几类问题 二 sql mode包含的模式 三 sql mode各个选项作用示例 3 1 sql mode为空 对于不符合定义的值 会截断到符合定义类型 3 2 sql mode为ANSI
  • 编程语言用 Java 开发一个打飞机小游戏(附完整源码)

    编程语言用 Java 开发一个打飞机小游戏 附完整源码 上图 写在前面 技术源于分享 所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习 java确实不适合写桌面应用 这里只是通过这个游戏让大家理解oop面向对象编程的过程
  • 【React】路由(详解)

    目录 单页应用程序 SPA 路由 前端路由 后端路由 路由的基本使用 使用步骤 常用组件说明 BrowserRouter和HashRouter的区别 路由的执行过程 默认路由 精确匹配 Switch的使用 重定向路由 嵌套路由 向路由组件传
  • 计算机网络体系结构 - 运输层

    一 运输层协议概述 运输层为应用进程之间提供端到端的逻辑通信 二 运输层的端口 端口 port 也称为协议端口号 protocol port number 对上层的应用进程进行标识 端口用一个16位端口号进行标志 端口号只具有本地意义 端口
  • 剑指offer-输出字符串所有种类的排列组合

    常规题 先校验长度 不符合则直接输出 符合则判断是否为最后一个字符 是则直接new对象输出 不是则交换begin和i位置的数字 再用递归输出 public class Test28 先校验 public static void permut
  • 笔试

    文章目录 前言 40 复位电路设计 1 recovery time和removal time 2 同步复位和异步复位 3 异步复位同步释放 本文参考 往期精彩 前言 嗨 今天来学习复位电路设计相关问题 微信关注 FPGA学习者 获取更多精彩
  • cec2017(python):红狐优化算法(Red fox optimization,RFO)求解cec2017

    一 红狐优化算法 红狐优化算法 Red fox optimization RFO 由Dawid Po ap和 Marcin Wo niak于2021年提出 该算法模拟了红狐的狩猎行为 具有收敛速度快 寻优精度高等优势 参考文献 Poap D
  • easyexcel读取excel将数据存到mysql【一个简单的例子】

    读取excel 1 xml里面增加maven
  • 使用Java程序向手机发送短信

    JAVA发送手机短信 有几种方法 1 使用webservice接口发送手机短信 这个可以使用sina提供的webservice进行发送 需要进行注册 2 使用短信mao的方式进行短信的发送 这种方式应该是比较的常用 前提是需要购买硬件设备
  • 变分推断

    一 概述 对于概率模型来说 如果从频率派角度来看就会是一个优化问题 从贝叶斯角度来看就会是一个积分问题 从贝叶斯角度来看 如果已有数据 x x x 对于新的样本 x hat x
  • 转债打新监听

    不炒股 只打新捡点小钱 package com github niefy modules job run import cn hutool core convert Convert import cn hutool core util Nu
  • 软件测试基础知识个人笔记

    一 为什么要测试 软件系统越来越成为生活中不可或缺的一部分 缺陷不可避免 软件不正确执行可能会导致很多问题 二 软件测试的定义 软件测试 描述一种用来促进鉴定软件的正确性 完整性 安全性和质量的过程 维基百科 公司主流观点 测试是一个包含计
  • eclipse注释模板

    eclipse注释模板 一 配置步骤 Eclipse中 gt Window gt Preferences gt Java gt Code Style gt Code Templates 二 模板示例 Files 文件 Title file
  • java 多线程执行时间测试,TestNG中实现多线程并行,提速用例的执行时间

    TestNG是一个开源自动化测试工具 TestNG源于Junit 最初用来做单元测试 可支持异常测试 忽略测试 超时测试 参数化测试和依赖测试 除了单元测试 TestNG的强大功能让他在接口和UI自动化中也占有一席之地 以Java为例 目前