TestNG并发加速自动化测试执行(并发测试和在线测试区别)
本文章出自【码同学软件测试】
码同学公众号:自动化软件测试
码同学抖音号:小码哥聊软件测试
简介
TestNG是一个开源自动化测试工具,TestNG源于Junit,最初用来做单元测试,可支持异常测试,忽略测试,超时测试,参数化测试和依赖测试。
除了单元测试,TestNG的强大功能让他在接口和UI自动化中也占有一席之地。以Java为例,目前主流的测试框架有:
o 基于TestNG+Httpclient的接口测试
o 基于TestNG+Selenium的UI自动化测试
随着企业内部自动化资产的持续积累以及持续集成的推进,对自动化测试的运行速度要求越来越高,某些应用的自动化测试用例可能多达几千条,如何加速这些自动化用例的运行速度,让自动化落实到每一次版本变更和持续集成当中,是一个需要解决的问题。
免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦
TestNG通过对多线程的支持提供了加速代码运行的有效方式,TestNG中实现多线程并行,可以通过如下几种方式:
o TestNG.xml中配置多线程并发的级别:测试的级别由上至下可以分为suite -> test -> class -> method
o @Test注解上配置多线程并发
o @Dataprovider上配置多线程并发
TestNG.xml中不同级别的并发
在TestNG.xml中通过制定 parallel的运行级别(suite,test,class,method)以及thread-count的值来实现并发运行测试用例。一个TestNG.xml中通常只有一个suite,并发级别通常配置为test,class,method:
o parallel=test 意味着suite中的不同test标签下的测试类会并发执行,但同一test标签下的测试类会顺序执行
o parallel=class 意味着test标签下的不同测试类会并发执行,但同一个测试类里的方法会顺序执行
o paralle=method 意味着测试类里的方法会并发执行,这是并发的最大级别
thread-count 意味着并发的最大线程数,当parallel=method, thread-count=10, 有50个测试方法时,每次最多并行10个测试方法。
@Test注解上配置多线程并发
@Test注解上可通过配置threadPoolSize来实现并发,threadPoolSize和invocationCount是结合使用的,当invocationCount=1的时候,threadPoolSize没有意义。invocationCount表示方法被调用的次数,如果不配置threadPoolSize,该方法会被顺序执行5次,如果配置threaPoolSize=4,下图所示的方法会一次以4个线程并发执行,缩短执行时间
@Dataprovider上配置多线程并发
@Dataprovider注解上可通配置parallel=true来实现数据驱动测试的并发,设置parallel=true的Dataprovider在被调用的时候会并发执行
TestNG默认的dataprovider并发执行的线程数是10,要更改此限制,可以在TestNG.xml文件中配置
data-provider-thread-count属性
TestNG的多线程方式提高执行速度,通过多线程可以大大提速用例的执行时间,新手小白也很容易入门,但是在设计用例的时候需要考虑用例是否适合并发,线程安全和共享变量的问题,否则会增加用例执行的不稳定性。TestNG的并发介绍到这里,希望大家在工作中多多尝试,不断优化自己的自动化工作。
END
免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频,可以关注我们公众号哦:自动化软件测试
本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
相关文章
- Shell中针对字符串的切片,截取,替换,删除,大小写操作
- Python学不会来打我(8)字符串string类型深度解析
- TS类型体操,看懂你就能玩转TS了_ts l
- 你只会用 split?试试 StringTokenizer,性能可以快 4 倍
- 2025-08-22:最短匹配子字符串。用go语言,给定两个字符串 s 和 p,
- case when语句增加_case when加条件
- 一次完整的HTTP请求与响应涉及了哪些知识?
- Excel超链接点击无反应及安全提示问题
- Java 判断对象是否所有属性为空,大家觉得这样写可以吗?
- Spring事物(@transactional注解)在什么情况下会失效,为什么?