千家信息网

TestNg中自动化测试用例设计与管理的通用策略有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章给大家分享的是有关TestNg中自动化测试用例设计与管理的通用策略有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。自动化测试
千家信息网最后更新 2026年11月02日TestNg中自动化测试用例设计与管理的通用策略有哪些

本篇文章给大家分享的是有关TestNg中自动化测试用例设计与管理的通用策略有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

自动化测试的用例设计通用策略

我们在做自动化测试时,是需要对用例进行管理的,比较常用的方案是(以java为例)

  • 一个project对应一个产品;

  • 一个package对应产品中的一个模块;

  • 一个class对应模块中的一个场景;

  • 一个测试方法对应场景中的一个测试点;

  • 最后,通过suite,定义组织要执行的class。

如下图所示,TestNGDemo定义为一个产品、包com.my.case1、com.my.case2和com.my.case3代表产品中的3个模块,而MyCase1、MyCase2等6个类代表6个测试场景。

我们可以在类中设计具体的测试点,如下图所示,类MyCase5中的方法f9和f10代表两个测试点(基于Testng)

TestNg中用例组织

Testng通过配置文件来对测试用例进行管理,具体规则如下:

  • 一个suite里面可以定义要执行的test,可以包括多个test;

  • 一个test里面可以定义要执行的package和class(可以同时定义package和class,二者是并列关系)

  • 一个class可以设置要执行的method,具体组织形式如下:

Suite里定义了两个test: Simpletest和advancedtest;

在Simpletest中定义了要执行的package:com.my.case1和class: com.my.case2.MyCase4;

在类MyCase4中定义了要执行的方法f7和不执行的方法f8;

在advancedtest中定义了要执行的class:com.my. case3.MyCase5

运行结果如下:

com.my.case1包下的类MyCase1和类MyCase2中的所有方法都运行了,f1、f2、f3和f4;

类MyCase4中只运行了方法f7;

类MyCase5中的所有方法都运行了,f9和f10。

TestNG中group的应用

Group的基础使用

TestNG可以执行复杂的测试方法分组进而把测试用例进行分类。可以通过@Test(groups = { "组1","组2" })进行标识;

分组可以作用在具体的类和方法上,作用在类上表示类里的所有方法都属于该分组;而作用在方法上则表示只有该方法属于该分组。

具体代码如下:

MyCase1类具备smoketest标签 @Test(groups = { "smoketest" }) public class MyCase1 {  @Test  public void f1() {      System.out.println("MyCase1 f1");      assertEquals("a","b");       }   @Test   public void f2() {    System.out.println("MyCase1 f2");    assertEquals("a","a"); } }  MyCase2类只有f3方法具备smoketest标签 public class MyCase2 {  @Test(groups = { "smoketest" })  public void f3() {      System.out.println("MyCase2 f3");      assertEquals("a","b");       }   @Test   public void f4() {    System.out.println("MyCase2 f4");    assertEquals("a","a"); } }  MyCase3类具备performancetest标签 @Test(groups = { "performancetest" }) public class MyCase3 {  @Test  public void f5() {      System.out.println("MyCase3 f5");      assertEquals("a","b");       }     @Test   public void f6() {    System.out.println("MyCase3 f6");    assertEquals("a","a"); } }  MyCase4类只有f8方法具备performancetest标签 public class MyCase4 {  @Test  public void f7() {      System.out.println("MyCase4 f7");      assertEquals("a","b");       }     @Test(groups = { "performancetest" })   public void f8() {    System.out.println("MyCase4 f8");    assertEquals("a","a"); } }  MyCase5类具备securitytest 和performancetest标签 public class MyCase5 { @Test(groups = { "securitytest","performancetest" })  public void f9() {      System.out.println("MyCase5 f9");      assertEquals("a","b");       }   @Test   public void f10() {    System.out.println("MyCase5 f10");    assertEquals("a","a"); } }  MyCase6类具备securitytest标签 @Test(groups = { "securitytest" }) public class MyCase6 {  @Test  public void f11() {      System.out.println("MyCase6 f11");      assertEquals("a","b");       }   @Test   public void f12() {    System.out.println("MyCase6 f12");    assertEquals("a","a"); } }

设置配置文件,如下所示:

其中define标签部分定义了需要的组分类,该部分可以省略,但个人建议保留,使用define可以清晰的看到现有的group结构;

run标签带表了需要运行的group信息,我们可以通过include和exclude对需要执行的分组和不需要执行的分组进行设置,方法非常简单,如下所示:

      

上图中通过include来设置运行securitytest组标识的用例。

运行结果如下:可以看到securitytest标签下的用例都运行了

@BeforeGroups和@AfterGroups的应用

@BeforeGroups注解的方法将在本组内任何测试方法执行前被执行一次,可用于执行初始化操作。类似的@AfterGroups 注解的方法将在本组内任何测试方法执行后被执行,可用于关闭资源。@Test(groups = { "smoketest" })

public class MyCase1 {  @BeforeGroups(groups = { "smoketest" })  public void setup() {     System.out.println("smoketest setup");       }  @AfterGroups(groups = { "smoketest" })  public void teardown() {     System.out.println("smoketest teardown");       }  @Test  public void f1() {      System.out.println("MyCase1 f1");      assertEquals("a","b");       }     @Test   public void f2() {    System.out.println("MyCase1 f2");    assertEquals("a","a"); } }

代码执行如下:可以看到@BeforeGroups和@AfterGroups在组smoketest

的运行前后分别执行。

以上就是TestNg中自动化测试用例设计与管理的通用策略有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

方法 测试 标签 运行 分组 管理 自动化 产品 设计 代表 作用 只有 场景 模块 部分 两个 代码 可以通过 文件 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 广州紫鲸互联网科技有限公司 云信互联网科技有限公司 涨乐互联网科技 互联网科技公司电话 有马互联网科技 远拓互联网科技 互联网科技缩写 互联网高科技股票 盛创互联网科技有限公司 互联网科技热点资讯 北京华百购互联网科技有限公司 宁夏众和广鑫互联网科技有限公司 长沙茂晟互联网科技有限公司 科技赋能视角下互联网保险发展 小米互联网科技园入驻 互联网相关科技技术 互联网科技平台产品运营 科技互联网专业工作会议发言稿 广州全民伙伴互联网科技有限公司 朗新科技与工业互联网 互联网科技视频素材 互联网教育科技公司vipkid 受益于互联网科技的高速发展 注册互联网科技公司经营范围大全 上海科技产业互联网平台 杭州披云加互联网科技有限公司 上海乐五互联网科技有限公司 国产互联网科技公司 互联网高科技行业有哪些企业
0