自動(dòng)化測(cè)試效率提升方案

本文注重自動(dòng)化測(cè)試用例并行方案的設(shè)計(jì)而账,忽略了具體代碼實(shí)現(xiàn)的細(xì)節(jié)。代碼實(shí)現(xiàn)細(xì)節(jié)大家利用網(wǎng)絡(luò)資源可以輕松搜索到相關(guān)內(nèi)容婉商!

方案概述

目前業(yè)界主流提升測(cè)試效率的方案如下:

自動(dòng)化測(cè)試腳本并行運(yùn)行苞也;

在多終端同時(shí)跑腳本级野;

編寫自定義類庫(kù)解決自動(dòng)化api無(wú)法提供的功能或者對(duì)工具提供的api進(jìn)行二次封裝繁莹,核心就是增強(qiáng)腳本健壯性檩互;

自動(dòng)化腳本執(zhí)行完畢后,自動(dòng)發(fā)送測(cè)試報(bào)告給相關(guān)責(zé)任人咨演,使其第一時(shí)間了解自動(dòng)化測(cè)試結(jié)果闸昨;

方案如下圖所示:

腳本穩(wěn)定

編寫自定義類庫(kù)解決自動(dòng)化api無(wú)法提供的功能或者對(duì)工具提供的api進(jìn)行二次封裝。主要解決的問(wèn)題包括:動(dòng)態(tài)元素識(shí)別薄风、頁(yè)面加載延遲饵较、網(wǎng)絡(luò)延遲、腳本失敗重試遭赂⊙撸總之盡量避免因?yàn)樽詣?dòng)化測(cè)試腳本的質(zhì)量問(wèn)題導(dǎo)致自動(dòng)化測(cè)試執(zhí)行失敗。這就需要自動(dòng)化腳本編寫人員有很強(qiáng)的編碼功底撇他。

多端并行

web端茄猫,本質(zhì)通過(guò)使用Selenium Grid實(shí)現(xiàn):

多瀏覽器

移動(dòng)端,本質(zhì)通過(guò)啟動(dòng)多個(gè)Appium Server逆粹,每個(gè)Appium server連接一個(gè)設(shè)備募疮。可以在同一臺(tái)機(jī)器上啟動(dòng)多個(gè)Appium Server(每個(gè)server有不同的端口)僻弹。可以使用Selenium Gird控制appium server他嚷。

多手機(jī)終端

腳本并行

有了多端并行運(yùn)行的技術(shù)方案蹋绽,那么下一個(gè)問(wèn)題就是讓我們的測(cè)試用例并發(fā)的在多端中運(yùn)行芭毙。我們這里以Java的TestNG測(cè)試框架為例作為講解。TestNG在處理用例并發(fā)方面是非常方便的卸耘。

TestNG有多種并發(fā)方式支持退敦,主要包括:方法的并發(fā),class級(jí)的并發(fā)蚣抗,和test級(jí)的并發(fā)侈百,它們的區(qū)別如下:

tests級(jí)別:不同test tag下的用例可以在不同的線程執(zhí)行,相同test tag下的用例只能在同一個(gè)線程中執(zhí)行翰铡。

classs級(jí)別:不同class tag下的用例可以在不同的線程執(zhí)行钝域,相同class tag下的用例只能在同一個(gè)線程中執(zhí)行。

methods級(jí)別:所有用例都可以在不同的線程去執(zhí)行锭魔。

xml文件中配置如下

<suitename="Testng Parallel Test"parallel="tests"thread-count="5">

<suitename="Testng Parallel Test"parallel="classes"thread-count="5">

<suitename="Testng Parallel Test"parallel="methods"thread-count="5">

<suitename="My suite"?parallel="instances"?thread-count="5">

實(shí)踐中例证,很多時(shí)候我們?cè)跍y(cè)試類中通過(guò)dependOnMethods/dependOnGroups方式,給很多測(cè)試方法的執(zhí)行添加了依賴迷捧,以達(dá)到期望的執(zhí)行順序织咧。TestNG能在多線程情況下依然遵循既定的用例執(zhí)行順序去執(zhí)行。有些時(shí)候漠秋,我們需要對(duì)一個(gè)測(cè)試用例笙蒙,比如一個(gè)http接口,執(zhí)行并發(fā)測(cè)試庆锦,即一個(gè)接口的反復(fù)調(diào)用手趣。在

@Test標(biāo)簽中指定threadPoolSize和invocationCount可以實(shí)現(xiàn)該需求。

例如:@Test(threadPoolSize=5,invocationCount=10)

其中threadPoolSize表明用于調(diào)用該方法的線程池容量肥荔,該例就是同時(shí)起5個(gè)線程并行執(zhí)行該方法绿渣;invocationCount表示該方法總計(jì)需要被執(zhí)行的次數(shù)。該例子中5個(gè)線程同時(shí)執(zhí)行燕耿,當(dāng)總計(jì)執(zhí)行次數(shù)達(dá)到10次時(shí)停止中符。

實(shí)例如下:

寫兩個(gè)類?ThreadCase1和ThreadCase1

public?class ThreadCase1 {

?@Test

public?void m1()throws InterruptedException {

???????????? Thread.sleep(1000);

????????????? System.out.println("*****"+Thread.currentThread().getId());

?????????????? assertTrue(true);

?????? ? }

?@Test

public?void m2()throws InterruptedException {

???????????? Thread.sleep(1000);

????????????? System.out.println("*****"+Thread.currentThread().getId());

????????????? assertTrue(false);

?????? ? }

?@Test

public?void m3() throws InterruptedException {

???????????? Thread.sleep(1000);

???????????? System.out.println("*****"+Thread.currentThread().getId());

??????????? assertTrue(true);

?????? ? }

}

public?class ThreadCase2 {

?????? ?@Test

???????? public?void m1()throws InterruptedException {

??????????????? Thread.sleep(1000);

??????????????? System.out.println("*****"+Thread.currentThread().getId());

?????????????? assertTrue(true);

?????? ? }

?@Test

public?void m2() throws InterruptedException {

????????????? Thread.sleep(1000);

?????????????? System.out.println("*****"+Thread.currentThread().getId());

?????????????? assertTrue(false);

?????? ? }

?@Test

public?void m3() throws InterruptedException {

?????????? Thread.sleep(1000);

?????????? System.out.println("*****"+Thread.currentThread().getId());

?????????? assertTrue(true);

?????? ? }

}

在配置文件中指定parallel為class,thread-count值為2

<!DOCTYPE?suite?SYSTEM?"https://testng.org/testng-1.0.dtd">

"TestngParallel Test"parallel="classes "thread-count="2">

"case1">

?<classes>

"com.my.test5.ThreadCase1"/>

"com.my.test5.ThreadCase2"/>

?</classes>

?</test>

</suite>

查看運(yùn)行結(jié)果:3292ms完成測(cè)試誉帅,如果不使用多線程則至少需要6s

原創(chuàng)不易淀散,如果文章幫到了你,歡迎轉(zhuǎn)發(fā)蚜锨,讓更多的朋友受益档插!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市亚再,隨后出現(xiàn)的幾起案子郭膛,更是在濱河造成了極大的恐慌,老刑警劉巖氛悬,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件则剃,死亡現(xiàn)場(chǎng)離奇詭異耘柱,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)棍现,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門调煎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人己肮,你說(shuō)我怎么就攤上這事士袄。” “怎么了谎僻?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵娄柳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我戈稿,道長(zhǎng)西土,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任鞍盗,我火速辦了婚禮需了,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘般甲。我一直安慰自己肋乍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布敷存。 她就那樣靜靜地躺著墓造,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锚烦。 梳的紋絲不亂的頭發(fā)上觅闽,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音涮俄,去河邊找鬼蛉拙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛彻亲,可吹牛的內(nèi)容都是我干的孕锄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼苞尝,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼畸肆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宙址,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤轴脐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豁辉,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡令野,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年舀患,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了徽级。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡聊浅,死狀恐怖餐抢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情低匙,我是刑警寧澤旷痕,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站顽冶,受9級(jí)特大地震影響欺抗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜强重,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一绞呈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧间景,春花似錦佃声、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至封拧,卻和暖如春志鹃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泽西。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工曹铃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尝苇。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓铛只,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親糠溜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淳玩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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

  • 在過(guò)完一遍產(chǎn)品崗位的學(xué)習(xí)課程以后,對(duì)于互聯(lián)網(wǎng)產(chǎn)品崗位有了一定基礎(chǔ)認(rèn)識(shí)非竿,僅僅皮毛都算不上蜕着,突感任重道遠(yuǎn),產(chǎn)品經(jīng)理的崗...
    pmzcb閱讀 192評(píng)論 0 0
  • 未來(lái)之路----高中職業(yè)生涯規(guī)劃 一、主題辨析: 1承匣、目前高中學(xué)生較少接受職業(yè)生涯規(guī)劃教育蓖乘,相當(dāng)部分學(xué)生在面臨職業(yè)...
    ehui2188閱讀 655評(píng)論 0 0
  • 讀書有益,鳳凰花開韧骗〖问悖【340】 大家好,我是益鳳袍暴,每天記錄我的成長(zhǎng)些侍,改變,收獲政模,賦能岗宣,因愛生命而流動(dòng),因暖生命而溫...
    天天向上的樹閱讀 181評(píng)論 0 6
  • 他恐怕是歷史上第一個(gè)因偎紅倚綠而得罪君上的刊咳。 那年,赴東京趕考躲叼,一心想圖個(gè)功名芦缰,光耀門楣,與其他讀書人別無(wú)二致枫慷。才...
    馬小尕閱讀 931評(píng)論 4 13