干貨!詳解自動(dòng)化測試用例設(shè)計(jì)與管理的通用策略(基于TestNg)

自動(dòng)化測試的用例設(shè)計(jì)通用策略

我們?cè)谧鲎詣?dòng)化測試時(shí)涩僻,是需要對(duì)用例進(jìn)行管理的缭召,比較常用的方案是(以java為例)

一個(gè)project對(duì)應(yīng)一個(gè)產(chǎn)品;

一個(gè)package對(duì)應(yīng)產(chǎn)品中的一個(gè)模塊逆日;

一個(gè)class對(duì)應(yīng)模塊中的一個(gè)場景嵌巷;

一個(gè)測試方法對(duì)應(yīng)場景中的一個(gè)測試點(diǎn);

最后室抽,通過suite搪哪,定義組織要執(zhí)行的class。

如下圖所示坪圾,TestNGDemo定義為一個(gè)產(chǎn)品晓折、com.my.case1惑朦、com.my.case2和com.my.case3代表產(chǎn)品中的3個(gè)模塊,而MyCase1漓概、MyCase2等等6個(gè)類代表6個(gè)測試場景

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

TestNg中用例組織

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

一個(gè)suite里面可以定義要執(zhí)行的test栅屏,可以包括多個(gè)

一個(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)識(shí)檐晕;

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

具體代碼如下:

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對(duì)需要執(zhí)行的分組和不需要執(zhí)行的分組進(jìn)行設(shè)置继控,方法非常簡單械馆,如下所示:

<run>

??????????????? <include name="group1" />

??????????????? <exclude name="group2" />

?</run>

上圖中通過include來設(shè)置運(yùn)行securitytest組標(biāo)識(shí)的用例。

運(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í)行仿畸。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子错沽,更是在濱河造成了極大的恐慌簿晓,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件千埃,死亡現(xiàn)場離奇詭異憔儿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)放可,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門谒臼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人耀里,你說我怎么就攤上這事蜈缤。” “怎么了冯挎?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵底哥,是天一觀的道長。 經(jīng)常有香客問我房官,道長趾徽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任翰守,我火速辦了婚禮孵奶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜡峰。我一直安慰自己拒课,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布事示。 她就那樣靜靜地躺著,像睡著了一般僻肖。 火紅的嫁衣襯著肌膚如雪肖爵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天臀脏,我揣著相機(jī)與錄音劝堪,去河邊找鬼。 笑死揉稚,一個(gè)胖子當(dāng)著我的面吹牛秒啦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播搀玖,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼余境,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起芳来,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤含末,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后即舌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體佣盒,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年顽聂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肥惭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡紊搪,死狀恐怖蜜葱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嗦明,我是刑警寧澤笼沥,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站娶牌,受9級(jí)特大地震影響奔浅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诗良,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一汹桦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鉴裹,春花似錦舞骆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至总处,卻和暖如春狈惫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹦马。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國打工胧谈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荸频。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓菱肖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親旭从。 傳聞我的和親對(duì)象是個(gè)殘疾皇子稳强,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容