新聞中心
自動化測試的用例設(shè)計(jì)通用策略
我們在做自動化測試時(shí),是需要對用例進(jìn)行管理的,比較常用的方案是(以java為例)

員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團(tuán)隊(duì)的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。創(chuàng)新互聯(lián)堅(jiān)持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因?yàn)椤皩W⑺詫I(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ù)。
- 一個(gè)project對應(yīng)一個(gè)產(chǎn)品;
- 一個(gè)package對應(yīng)產(chǎn)品中的一個(gè)模塊;
- 一個(gè)class對應(yīng)模塊中的一個(gè)場景;
- 一個(gè)測試方法對應(yīng)場景中的一個(gè)測試點(diǎn);
- 最后,通過suite,定義組織要執(zhí)行的class。
如下圖所示,TestNGDemo定義為一個(gè)產(chǎn)品、包c(diǎn)om.my.case1、com.my.case2和com.my.case3代表產(chǎn)品中的3個(gè)模塊,而MyCase1、MyCase2等6個(gè)類代表6個(gè)測試場景。
我們可以在類中設(shè)計(jì)具體的測試點(diǎn),如下圖所示,類MyCase5中的方法f9和f10代表兩個(gè)測試點(diǎn)(基于Testng)
TestNg中用例組織
Testng通過配置文件來對測試用例進(jìn)行管理,具體規(guī)則如下:
- 一個(gè)suite里面可以定義要執(zhí)行的test,可以包括多個(gè)test;
- 一個(gè)test里面可以定義要執(zhí)行的package和class(可以同時(shí)定義package和class,二者是并列關(guān)系)
- 一個(gè)class可以設(shè)置要執(zhí)行的method,具體組織形式如下:
Suite里定義了兩個(gè)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
運(yùn)行結(jié)果如下:
com.my.case1包下的類MyCase1和類MyCase2中的所有方法都運(yùn)行了,f1、f2、f3和f4;
類MyCase4中只運(yùn)行了方法f7;
類MyCase5中的所有方法都運(yùn)行了,f9和f10。
TestNG中g(shù)roup的應(yīng)用
Group的基礎(chǔ)使用
TestNG可以執(zhí)行復(fù)雜的測試方法分組進(jìn)而把測試用例進(jìn)行分類??梢酝ㄟ^@Test(groups = { "組1","組2" })進(jìn)行標(biāo)識;
分組可以作用在具體的類和方法上,作用在類上表示類里的所有方法都屬于該分組;而作用在方法上則表示只有該方法屬于該分組。
具體代碼如下:
- MyCase1類具備smoketest標(biāo)簽
- @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標(biāo)簽
- 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標(biāo)簽
- @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標(biāo)簽
- 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標(biāo)簽
- 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標(biāo)簽
- @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");
- }
- }
設(shè)置配置文件,如下所示:
其中define標(biāo)簽部分定義了需要的組分類,該部分可以省略,但個(gè)人建議保留,使用define可以清晰的看到現(xiàn)有的group結(jié)構(gòu);
run標(biāo)簽帶表了需要運(yùn)行的group信息,我們可以通過include和exclude對需要執(zhí)行的分組和不需要執(zhí)行的分組進(jìn)行設(shè)置,方法非常簡單,如下所示:
上圖中通過include來設(shè)置運(yùn)行securitytest組標(biāo)識的用例。
運(yùn)行結(jié)果如下:可以看到securitytest標(biāo)簽下的用例都運(yùn)行了
@BeforeGroups和@AfterGroups的應(yīng)用
@BeforeGroups注解的方法將在本組內(nèi)任何測試方法執(zhí)行前被執(zhí)行一次,可用于執(zhí)行初始化操作。類似的@AfterGroups 注解的方法將在本組內(nèi)任何測試方法執(zhí)行后被執(zhí)行,可用于關(guān)閉資源。@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
的運(yùn)行前后分別執(zhí)行。
新聞標(biāo)題:干貨!詳解自動化測試用例設(shè)計(jì)與管理的通用策略(基于TestNg)
本文來源:http://www.5511xx.com/article/cdhsogo.html


咨詢
建站咨詢
