You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure DevOps中拆分Java Selenium测试到多代理并行执行?

解决方案:Azure DevOps 拆分Java Selenium测试到多代理并行执行

不管用经典流水线还是YAML流水线,核心都是将900个测试场景拆分为独立的两组,让两个代理各执行一组,而非重复跑全部用例。以下是具体实现步骤:

一、先完成测试用例的分组准备

先把测试用例拆成两组(对应两个代理),常用方式有三种:

  • 框架标签分组:给测试类/方法打分组标记,比如TestNG用@Groups("group1"),JUnit用@Tag("group2")
  • 测试套件拆分:编写两个TestNG的suite.xml文件,各自包含一半测试类;或配置JUnit的不同测试配置类
  • 业务模块拆分:按业务域划分,比如用户模块、订单模块各占一组

二、经典流水线实现步骤

  1. 打开经典流水线编辑页,删除原有的单个测试作业
  2. 添加两个并行作业(在作业选项中选择「添加并行作业」),两个作业都指定你的自托管代理池
  3. 给每个作业配置测试执行步骤:
    • 作业1:执行测试时指定第一组用例,比如mvn test -DsuiteXmlFile=suite1.xml(TestNG场景),或mvn test -Dtags="group1"(JUnit场景)
    • 作业2:执行测试时指定第二组用例,比如mvn test -DsuiteXmlFile=suite2.xml(TestNG场景),或mvn test -Dtags="group2"(JUnit场景)
  4. 保存并运行流水线,两个代理会各自执行对应分组的测试,不会重复

三、YAML流水线实现步骤

方案1:直接定义并行作业

pool:
  name: 你的自托管代理池名称

jobs:
- job: TestGroup1
  steps:
  - task: Maven@3
    inputs:
      mavenPomFile: 'pom.xml'
      goals: 'test'
      options: '-DsuiteXmlFile=suite1.xml' # TestNG用此参数,JUnit替换为-Dtags="group1"

- job: TestGroup2
  dependsOn: [] # 取消依赖,和TestGroup1并行执行
  steps:
  - task: Maven@3
    inputs:
      mavenPomFile: 'pom.xml'
      goals: 'test'
      options: '-DsuiteXmlFile=suite2.xml' # TestNG用此参数,JUnit替换为-Dtags="group2"

方案2:用矩阵策略简化配置

pool:
  name: 你的自托管代理池名称

jobs:
- job: ParallelTests
  strategy:
    matrix:
      Group1:
        test.suite: 'suite1.xml'
      Group2:
        test.suite: 'suite2.xml'
  steps:
  - task: Maven@3
    inputs:
      mavenPomFile: 'pom.xml'
      goals: 'test'
      options: '-DsuiteXmlFile=$(test.suite)'

关键注意事项

  • 确保自托管代理池的并行作业限制设置为≥2(在代理池设置的「并行作业」选项中调整),否则两个作业会排队执行
  • Azure DevOps会自动合并多作业的测试结果到统一报告中,无需额外配置
  • 若使用Maven,需确保pom.xml中的surefire/failsafe插件支持分组或套件参数

内容的提问来源于stack exchange,提问作者Ricky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:00:20