日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
干貨!詳解自動化測試用例設(shè)計與管理的通用策略(基于TestNg)

自動化測試的用例設(shè)計通用策略

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

員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團隊的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。創(chuàng)新互聯(lián)堅持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因為“專注所以專業(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡單”。公司專注于為企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、微信公眾號開發(fā)、電商網(wǎng)站開發(fā),成都小程序開發(fā),軟件按需規(guī)劃網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。

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

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

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

TestNg中用例組織

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

  • 一個suite里面可以定義要執(zhí)行的test,可以包括多個test;
  • 一個test里面可以定義要執(zhí)行的package和class(可以同時定義package和class,二者是并列關(guān)系)
  • 一個class可以設(shè)置要執(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

運行結(jié)果如下:

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

類MyCase4中只運行了方法f7;

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

TestNG中g(shù)roup的應(yīng)用

Group的基礎(chǔ)使用

TestNG可以執(zhí)行復(fù)雜的測試方法分組進而把測試用例進行分類??梢酝ㄟ^@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"); 

 設(shè)置配置文件,如下所示:

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

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

 
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  

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

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

@BeforeGroups和@AfterGroups的應(yīng)用

@BeforeGroups注解的方法將在本組內(nèi)任何測試方法執(zhí)行前被執(zhí)行一次,可用于執(zhí)行初始化操作。類似的@AfterGroups 注解的方法將在本組內(nèi)任何測試方法執(zhí)行后被執(zhí)行,可用于關(guān)閉資源。@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í)行。


名稱欄目:干貨!詳解自動化測試用例設(shè)計與管理的通用策略(基于TestNg)
鏈接地址:http://m.5511xx.com/article/cdhsogo.html