自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

干貨!詳解自動化測試用例設計與管理的通用策略(基于TestNg)

開發(fā) 前端 自動化
我們在做自動化測試時,是需要對用例進行管理的,比較常用的方案是(以java為例)。

自動化測試的用例設計通用策略

我們在做自動化測試時,是需要對用例進行管理的,比較常用的方案是(以java為例)

  • 一個project對應一個產(chǎn)品;
  • 一個package對應產(chǎn)品中的一個模塊;
  • 一個class對應模塊中的一個場景;
  • 一個測試方法對應場景中的一個測試點;
  • 最后,通過suite,定義組織要執(zhí)行的class。

如下圖所示,TestNGDemo定義為一個產(chǎn)品、包com.my.case1、com.my.case2和com.my.case3代表產(chǎn)品中的3個模塊,而MyCase1、MyCase2等6個類代表6個測試場景。

我們可以在類中設計具體的測試點,如下圖所示,類MyCase5中的方法f9和f10代表兩個測試點(基于Testng)

TestNg中用例組織

Testng通過配置文件來對測試用例進行管理,具體規(guī)則如下:

  • 一個suite里面可以定義要執(zhí)行的test,可以包括多個test;
  • 一個test里面可以定義要執(zhí)行的package和class(可以同時定義package和class,二者是并列關系)
  • 一個class可以設置要執(zhí)行的method,具體組織形式如下:

Suite里定義了兩個test: Simpletest和advancedtest;

在Simpletest中定義了要執(zhí)行的package:com.my.case1和class: com.my.case2.MyCase4;

在類MyCase4中定義了要執(zhí)行的方法f7和不執(zhí)行的方法f8;

在advancedtest中定義了要執(zhí)行的class:com.my. case3.MyCase5

運行結果如下:

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

類MyCase4中只運行了方法f7;

類MyCase5中的所有方法都運行了,f9和f10。

TestNG中group的應用

Group的基礎使用

TestNG可以執(zhí)行復雜的測試方法分組進而把測試用例進行分類??梢酝ㄟ^@Test(groups = { "組1","組2" })進行標識;

分組可以作用在具體的類和方法上,作用在類上表示類里的所有方法都屬于該分組;而作用在方法上則表示只有該方法屬于該分組。

具體代碼如下:

  1. MyCase1類具備smoketest標簽 
  2. @Test(groups = { "smoketest" }) 
  3. public class MyCase1 { 
  4.  @Test 
  5.  public void f1() { 
  6.      System.out.println("MyCase1 f1"); 
  7.      assertEquals("a","b"); 
  8.       } 
  9.   @Test 
  10.   public void f2() { 
  11.    System.out.println("MyCase1 f2"); 
  12.    assertEquals("a","a"); 
  13.  
  14. MyCase2類只有f3方法具備smoketest標簽 
  15. public class MyCase2 { 
  16.  @Test(groups = { "smoketest" }) 
  17.  public void f3() { 
  18.      System.out.println("MyCase2 f3"); 
  19.      assertEquals("a","b"); 
  20.       } 
  21.   @Test 
  22.   public void f4() { 
  23.    System.out.println("MyCase2 f4"); 
  24.    assertEquals("a","a"); 
  25.  
  26. MyCase3類具備performancetest標簽 
  27. @Test(groups = { "performancetest" }) 
  28. public class MyCase3 { 
  29.  @Test 
  30.  public void f5() { 
  31.      System.out.println("MyCase3 f5"); 
  32.      assertEquals("a","b"); 
  33.       } 
  34.   
  35.   @Test 
  36.   public void f6() { 
  37.    System.out.println("MyCase3 f6"); 
  38.    assertEquals("a","a"); 
  39.  
  40. MyCase4類只有f8方法具備performancetest標簽 
  41. public class MyCase4 { 
  42.  @Test 
  43.  public void f7() { 
  44.      System.out.println("MyCase4 f7"); 
  45.      assertEquals("a","b"); 
  46.       } 
  47.   
  48.   @Test(groups = { "performancetest" }) 
  49.   public void f8() { 
  50.    System.out.println("MyCase4 f8"); 
  51.    assertEquals("a","a"); 
  52.  
  53. MyCase5類具備securitytest 和performancetest標簽 
  54. public class MyCase5 { 
  55. @Test(groups = { "securitytest","performancetest" }) 
  56.  public void f9() { 
  57.      System.out.println("MyCase5 f9"); 
  58.      assertEquals("a","b"); 
  59.       } 
  60.   @Test 
  61.   public void f10() { 
  62.    System.out.println("MyCase5 f10"); 
  63.    assertEquals("a","a"); 
  64.  
  65. MyCase6類具備securitytest標簽 
  66. @Test(groups = { "securitytest" }) 
  67. public class MyCase6 { 
  68.  @Test 
  69.  public void f11() { 
  70.      System.out.println("MyCase6 f11"); 
  71.      assertEquals("a","b"); 
  72.       } 
  73.   @Test 
  74.   public void f12() { 
  75.    System.out.println("MyCase6 f12"); 
  76.    assertEquals("a","a"); 

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

其中define標簽部分定義了需要的組分類,該部分可以省略,但個人建議保留,使用define可以清晰的看到現(xiàn)有的group結構;

run標簽帶表了需要運行的group信息,我們可以通過include和exclude對需要執(zhí)行的分組和不需要執(zhí)行的分組進行設置,方法非常簡單,如下所示:

  1. <run> 
  2.  
  3. <include name="group1" /> 
  4.  
  5. <exclude name="group2" /> 
  6.  
  7. </run> 

上圖中通過include來設置運行securitytest組標識的用例。

運行結果如下:可以看到securitytest標簽下的用例都運行了

@BeforeGroups和@AfterGroups的應用

@BeforeGroups注解的方法將在本組內(nèi)任何測試方法執(zhí)行前被執(zhí)行一次,可用于執(zhí)行初始化操作。類似的@AfterGroups 注解的方法將在本組內(nèi)任何測試方法執(zhí)行后被執(zhí)行,可用于關閉資源。@Test(groups = { "smoketest" })

  1. public class MyCase1 { 
  2.  @BeforeGroups(groups = { "smoketest" }) 
  3.  public void setup() { 
  4.     System.out.println("smoketest setup"); 
  5.      
  6.  } 
  7.  @AfterGroups(groups = { "smoketest" }) 
  8.  public void teardown() { 
  9.     System.out.println("smoketest teardown"); 
  10.      
  11.  } 
  12.  @Test 
  13.  public void f1() { 
  14.      System.out.println("MyCase1 f1"); 
  15.      assertEquals("a","b"); 
  16.       } 
  17.   
  18.   @Test 
  19.   public void f2() { 
  20.    System.out.println("MyCase1 f2"); 
  21.    assertEquals("a","a"); 

 代碼執(zhí)行如下:可以看到@BeforeGroups和@AfterGroups在組smoketest

的運行前后分別執(zhí)行。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2011-09-01 10:05:24

PhoneGap應用程序測試

2022-01-14 11:51:00

測試工具自動化

2011-12-23 17:03:29

性能測試用例設計

2011-10-11 09:56:59

PhoneGapSelenium

2017-04-10 12:25:32

iOS自動化測試

2011-07-04 18:06:52

測試用例

2023-06-28 15:12:33

2011-06-03 16:58:03

測試用例

2024-09-29 15:32:13

自動化測試開發(fā)

2023-04-02 13:48:24

軟件測試NLP自動化測試

2023-06-30 09:46:00

服務物理機自動化

2011-05-16 14:54:12

測試用例

2011-08-16 15:36:47

iPhone應用測試

2012-02-27 17:34:12

Facebook自動化

2017-12-24 21:00:10

自動化測試測試框架敏捷

2019-04-02 09:00:00

機器人人工智能HMI設計

2022-02-17 10:37:16

自動化開發(fā)團隊預測

2021-05-26 08:51:50

漏洞漏洞掃描符號執(zhí)行

2022-12-26 12:30:28

接口測試

2019-02-19 15:37:18

自動化測試數(shù)據(jù)
點贊
收藏

51CTO技術棧公眾號