本篇文章給大家分享的是有關TestNg中自動化測試用例設計與管理的通用策略有哪些,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
在博樂等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都做網站、成都網站制作、成都外貿網站建設 網站設計制作定制網站開發(fā),公司網站建設,企業(yè)網站建設,成都品牌網站建設,全網營銷推廣,外貿網站建設,博樂網站建設費用合理。
我們在做自動化測試時,是需要對用例進行管理的,比較常用的方案是(以java為例)
一個project對應一個產品;
一個package對應產品中的一個模塊;
一個class對應模塊中的一個場景;
一個測試方法對應場景中的一個測試點;
最后,通過suite,定義組織要執(zhí)行的class。
如下圖所示,TestNGDemo定義為一個產品、包com.my.case1、com.my.case2和com.my.case3代表產品中的3個模塊,而MyCase1、MyCase2等6個類代表6個測試場景。
我們可以在類中設計具體的測試點,如下圖所示,類MyCase5中的方法f9和f10代表兩個測試點(基于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可以執(zhí)行復雜的測試方法分組進而把測試用例進行分類??梢酝ㄟ^@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可以清晰的看到現(xiàn)有的group結構;
run標簽帶表了需要運行的group信息,我們可以通過include和exclude對需要執(zhí)行的分組和不需要執(zhí)行的分組進行設置,方法非常簡單,如下所示:
上圖中通過include來設置運行securitytest組標識的用例。
運行結果如下:可以看到securitytest標簽下的用例都運行了
@BeforeGroups注解的方法將在本組內任何測試方法執(zhí)行前被執(zhí)行一次,可用于執(zhí)行初始化操作。類似的@AfterGroups 注解的方法將在本組內任何測試方法執(zhí)行后被執(zhí)行,可用于關閉資源。@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"); } }
代碼執(zhí)行如下:可以看到@BeforeGroups和@AfterGroups在組smoketest
的運行前后分別執(zhí)行。
以上就是TestNg中自動化測試用例設計與管理的通用策略有哪些,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。