關(guān)于自動(dòng)化測(cè)試的定位及一些思考

關(guān)于自動(dòng)化測(cè)試的定位及一些思考

? ? ? ? 大家對(duì)自動(dòng)化的理解,首先是想到Web UI自動(dòng)化侍芝,這就為什么我一說(shuō)自動(dòng)化,公司一般就會(huì)有很多人反對(duì)埋同,因?yàn)樽詣?dòng)化的成本實(shí)在太高了州叠,其實(shí)自動(dòng)化是分為三個(gè)層面的(UI層自動(dòng)化、接口自動(dòng)化凶赁、單元測(cè)試)咧栗,不是每個(gè)層面的自動(dòng)化都是遙不可及的,以下標(biāo)示一下這三個(gè)層面的難易程度(網(wǎng)上叫這個(gè)為自動(dòng)化金字塔):

? ? ? ? 基本上可以肯定的是虱肄,單元測(cè)試是成本最低的致板,也是最容易推廣,見(jiàn)效最大的咏窿,但是很多公司不會(huì)投入這塊斟或,原因是因?yàn)楝F(xiàn)在大部分公司都是人才短缺,特別是成手的研發(fā)人員集嵌。你說(shuō)投入到項(xiàng)目實(shí)際開(kāi)發(fā)工作的人員都嫌不夠萝挤,怎么可能抽出相關(guān)人力去做單元測(cè)試。而以目前大部分公司的測(cè)試團(tuán)隊(duì)人員構(gòu)成來(lái)說(shuō)根欧,能做單元測(cè)試的基本沒(méi)有(有也被抽去做開(kāi)發(fā)了)怜珍,這也是大家一致認(rèn)為單元測(cè)試屬于開(kāi)發(fā)職責(zé)的原因(除了他們自己沒(méi)人能做了)。

單元測(cè)試如果做不了凤粗,那么接口(API或Service)自動(dòng)化測(cè)試能做不酥泛?這個(gè)只要有一定的技術(shù)基礎(chǔ)還是能做的,至少有一部分測(cè)試人員是能夠做接口測(cè)試的(話(huà)說(shuō)性能測(cè)試就屬于一種接口自動(dòng)化),如果能自主開(kāi)發(fā)或直接引進(jìn)一套像樣的接口自動(dòng)化工具或框架(工具上來(lái)說(shuō)柔袁,市面上也不少)呆躲,那么就可以開(kāi)展這部分的工作,我相信大部分公司能做好的自動(dòng)化測(cè)試瘦馍,應(yīng)該也是基于這一層的(所以我們建議有條件的話(huà)歼秽,自動(dòng)化測(cè)試可以先在這一層面開(kāi)層应役,當(dāng)然前提是真有那么多接口或服務(wù)需要測(cè)試)情组。接口自動(dòng)化測(cè)試框架應(yīng)該具有以下功能,根據(jù)復(fù)雜度和各自需求而定:

1箩祥、校驗(yàn)

這個(gè)很好了解院崇,如果沒(méi)有校驗(yàn),單純的執(zhí)行接口的話(huà)袍祖,那就談不上測(cè)試了底瓣。所以支持對(duì)返回值校驗(yàn)是一個(gè)必須的功能。

2蕉陋、數(shù)據(jù)隔離

數(shù)據(jù)隔離就是指具體的請(qǐng)求接口捐凭、參數(shù)、校驗(yàn)等數(shù)據(jù)做到與代碼相隔離凳鬓,便于維護(hù)茁肠,一旦需要調(diào)整接口用例、新增接口用例時(shí)可很快速的找到位置缩举,隔離的另一個(gè)好處就是可復(fù)用垦梆,框架可以推廣給其他團(tuán)隊(duì),使用者可以使用相同的代碼仅孩,只需要根據(jù)要求填寫(xiě)各自用例即可測(cè)試起來(lái)托猩。

3、數(shù)據(jù)傳遞

做到數(shù)據(jù)隔離可維護(hù)后辽慕,數(shù)據(jù)傳遞是另外一個(gè)更重要的需求京腥。

數(shù)據(jù)傳遞是指接口用例之間可以做到向下傳參,例如我們通過(guò)創(chuàng)建訂單接口創(chuàng)建一個(gè)訂單溅蛉,該接口會(huì)返回一個(gè)訂單號(hào)公浪,接下來(lái)我們要進(jìn)行調(diào)用查詢(xún)訂單的接口,從返回的數(shù)據(jù)中與創(chuàng)建訂單用例中的數(shù)據(jù)進(jìn)行校驗(yàn)温艇,此時(shí)第二個(gè)接口的請(qǐng)求數(shù)據(jù)是需要從第一個(gè)接口用例中的返回中提取的因悲。這樣的例子比比皆是,所以支持?jǐn)?shù)據(jù)傳遞是又一個(gè)必不可少的功能勺爱。

4晃琳、動(dòng)態(tài)函數(shù)

實(shí)際用例場(chǎng)景中我們可能會(huì)有隨機(jī)生成一個(gè)手機(jī)號(hào)、字符串加密等需求,在數(shù)據(jù)與代碼隔離之后卫旱,此時(shí)我們就需要代碼可以支持做到識(shí)別對(duì)應(yīng)關(guān)鍵字時(shí)可以執(zhí)行對(duì)應(yīng)的函數(shù)進(jìn)行填充人灼。例如在數(shù)據(jù)中填寫(xiě)nowTime()時(shí),具體執(zhí)行時(shí)會(huì)被替換成當(dāng)前時(shí)間顾翼,填寫(xiě)random(5)時(shí)投放,會(huì)被替換成一個(gè)五位的隨機(jī)數(shù)等等。

5适贸、可配置

有時(shí)灸芳,我們的需求是用例不單單只能在一個(gè)環(huán)境上執(zhí)行,可能需要同一份接口用例可以在QA拜姿、預(yù)發(fā)烙样、線(xiàn)上等多個(gè)環(huán)境都可以執(zhí)行。所以框架需要做到可配置蕊肥,便于切換谒获,調(diào)用不同的配置文件可以在不同的環(huán)境執(zhí)行。

6壁却、日志

日志包含執(zhí)行的具體執(zhí)行接口批狱、請(qǐng)求方式、請(qǐng)求參數(shù)展东、返回值赔硫、校驗(yàn)接口、請(qǐng)求時(shí)間琅锻、耗時(shí)等關(guān)鍵信息卦停,日志的好處一來(lái)是可以便于在新增用例有問(wèn)題時(shí)快速定位出哪里填寫(xiě)有問(wèn)題,二來(lái)是發(fā)現(xiàn)bug時(shí)方便向開(kāi)發(fā)反饋提供數(shù)據(jù)恼蓬,開(kāi)發(fā)可以從觸發(fā)時(shí)間以及參數(shù)等信息快速定位到問(wèn)題所在惊完。

7、可視化報(bào)告

用例執(zhí)行后处硬,就是到了向團(tuán)隊(duì)展示結(jié)果的時(shí)候了小槐,一個(gè)可視化的報(bào)告可以便于團(tuán)隊(duì)成員了解到每次自動(dòng)化接口用例執(zhí)行的成功數(shù)、失敗數(shù)等數(shù)據(jù)荷辕。

8凿跳、用例驅(qū)動(dòng)

(1)用例的驅(qū)動(dòng)模式,涉及到怎么存放測(cè)試數(shù)據(jù)疮方,怎么描述用例控嗜,又如何復(fù)用;

(2)考慮到效率的話(huà)還要支持并發(fā)骡显;

(3)當(dāng)然測(cè)試報(bào)告不能光記錄成功和失敗疆栏,還有用例執(zhí)行耗時(shí)曾掂、接口調(diào)用耗時(shí)、場(chǎng)景的通過(guò)率等各項(xiàng)數(shù)值的統(tǒng)計(jì)壁顶。

? ? ? ? 說(shuō)完單元測(cè)試珠洗、接口測(cè)試的自動(dòng)化,我們現(xiàn)在來(lái)說(shuō)說(shuō)UI層自動(dòng)化測(cè)試若专,這也是一直很火并且也是自動(dòng)化概念先入為主的一塊许蓖,畢竟市面上有不少成熟的自動(dòng)化工具,如QTP调衰、Selenium等膊爪。這塊自動(dòng)化一定是會(huì)有測(cè)試團(tuán)隊(duì)參與的,就算自動(dòng)化框架是由開(kāi)發(fā)來(lái)完成窖式,那么具體測(cè)試工作也是由Tester全程參與的蚁飒。UI層自動(dòng)化測(cè)試真的不容易推行,無(wú)論有多么完善的自動(dòng)化框架萝喘,在這一塊維護(hù)的成本也是非常高的,特別是懂開(kāi)發(fā)的人不懂測(cè)試琼懊,懂測(cè)試的人不懂開(kāi)發(fā)阁簸,這一矛盾現(xiàn)象所帶來(lái)的內(nèi)部消耗就不少,再加上項(xiàng)目需求和UI層都在頻繁變動(dòng)哼丈,而且Web UI技術(shù)越來(lái)越復(fù)雜和多元化(UI層自動(dòng)化需要基于對(duì)象識(shí)別技術(shù))启妹,這些都導(dǎo)致很多公司不愿意投入這一塊。即使這樣醉旦,做為一個(gè)有上進(jìn)心的測(cè)試人員饶米,我們也是需要多想想這一塊,畢竟這是離我們測(cè)試最近的一塊“技術(shù)沃土”了(之一)车胡。

現(xiàn)在我們來(lái)重點(diǎn)來(lái)談下Web UI自動(dòng)化測(cè)試(目前的系統(tǒng)大都通過(guò)Web UI來(lái)展示)檬输,一般成熟一點(diǎn)的自動(dòng)化工具方案大體是這樣:

1、開(kāi)發(fā)語(yǔ)言:Python或Java匈棘;

2丧慈、開(kāi)源測(cè)試框架:Selenium WebDriver;

3主卫、Web元素定位:Xpath+cssSelector+findElement或findElements方法逃默;

  具體實(shí)施細(xì)節(jié)來(lái)講重點(diǎn)是針對(duì)Web UI自動(dòng)化測(cè)試的特點(diǎn),將各層包裝簇搅,分而治之的思想完域,各自相互獨(dú)立,職責(zé)定義清楚瘩将,下面簡(jiǎn)要說(shuō)明下:

1吟税、測(cè)試用例業(yè)務(wù)流操作實(shí)現(xiàn)及測(cè)試數(shù)據(jù)分離管理关噪;

2、頁(yè)面元素定位及頁(yè)面元素的操作分離乌妙;

3使兔、可視化的日志查詢(xún)系統(tǒng);

4藤韵、跨瀏覽器支持如:IE,Firefox,Chrome虐沥;

5、可視化的的測(cè)試報(bào)告泽艘,可以具體查詢(xún)到日志/截圖等欲险;

6、實(shí)現(xiàn)了通過(guò)Excel的數(shù)據(jù)驅(qū)動(dòng)管理匹涮;

7天试、郵件發(fā)送管理,可以自定義具體時(shí)間及接受者等然低;

? ? ? ? 以上是一般Web UI自動(dòng)化測(cè)試的一些實(shí)踐要求喜每,當(dāng)然也是相對(duì)簡(jiǎn)易的,復(fù)雜的就是實(shí)現(xiàn)平臺(tái)化管理雳攘,每天測(cè)試工程師带兜,只需要選擇具體項(xiàng)目、所測(cè)的測(cè)試用例集吨灭,然后執(zhí)行刚照,輸出測(cè)試報(bào)告,郵件自動(dòng)發(fā)送到相關(guān)開(kāi)發(fā)/測(cè)試喧兄,框架的開(kāi)發(fā)維護(hù)上也能夠持續(xù)集成无畔。

? ? ? ? 說(shuō)完了這三個(gè)層面的自動(dòng)化測(cè)試,那么我們?cè)賮?lái)分析一下吠冤,到底應(yīng)該優(yōu)先開(kāi)展哪個(gè)層面的自動(dòng)化測(cè)試浑彰,到底是哪個(gè)投入產(chǎn)出比最高,以下分享一篇網(wǎng)上文章的部分內(nèi)容咨演,人家已經(jīng)給了答案:

眾所周知闸昨,軟件測(cè)試的邊際成本會(huì)隨著缺陷探測(cè)率的提高而提高,這就是軟件測(cè)試的基本公理之一"測(cè)試的不可窮盡性"的經(jīng)濟(jì)學(xué)體現(xiàn)薄风。這一規(guī)律也適用于自動(dòng)化測(cè)試饵较,也就是說(shuō)隨著自動(dòng)化覆蓋率的提升,自動(dòng)化的成本也呈現(xiàn)指數(shù)式上升遭赂。按照這個(gè)思路進(jìn)行拓展循诉,可以分析下單元測(cè)試,集成測(cè)試和UI測(cè)試的自動(dòng)化成本曲線(xiàn)如圖2所示撇他。與通常理解的一致茄猫,為了達(dá)到相同的自動(dòng)化率(x0)狈蚤,UI的成本最高、其次是API划纽,Unit則最低脆侮。

經(jīng)濟(jì)學(xué)中有另外一個(gè)著名的理論叫做邊際效益遞減。當(dāng)做一項(xiàng)投資勇劣,隨著投資量的增加靖避,單位投資增量所帶來(lái)的單位收益是越來(lái)越少的,甚至在某個(gè)臨界點(diǎn)之后比默,這個(gè)收益有可能是負(fù)數(shù)幻捏。而這個(gè)零界點(diǎn),就是投資收益最大的點(diǎn)命咐。在這個(gè)點(diǎn)之前的所有投資篡九,都可以擴(kuò)大總收益,而在超過(guò)之后繼續(xù)進(jìn)行投資醋奠,就不那么明智了榛臼。

? ? ? ? ?圖2 ?自動(dòng)化成本/收益曲線(xiàn)

按照這個(gè)思路,在圖2上钝域,針對(duì)三種不同類(lèi)型的自動(dòng)化測(cè)試讽坏,可以獲得三個(gè)零界點(diǎn)。而總收益最大的點(diǎn)在接口測(cè)試上例证,隨后是單元測(cè)試,UI測(cè)試則最低迷捧。

如果從測(cè)試效果上看织咧,接口測(cè)試和UI/單元測(cè)試相比,有很多優(yōu)勢(shì)漠秋。 對(duì)于單元測(cè)試來(lái)說(shuō)笙蒙,通常單元測(cè)試是針對(duì)代碼進(jìn)行的測(cè)試,而接口測(cè)試是在測(cè)試一個(gè)活的庆锦,經(jīng)過(guò)部署的系統(tǒng)捅位。 另外,單個(gè)接口測(cè)試與單個(gè)單元測(cè)試用例相比搂抒,也可以覆蓋更多的代碼艇搀。更重要的是,接口測(cè)試也可以是面向業(yè)務(wù)的測(cè)試求晶,通過(guò)接口進(jìn)行業(yè)務(wù)層面的測(cè)試焰雕。

而相比UI自動(dòng)化用例,接口測(cè)試更加的簡(jiǎn)單直接芳杏,執(zhí)行效率更高矩屁。 除了部分如企業(yè)級(jí)應(yīng)用軟件辟宗,可能很多業(yè)務(wù)在前端進(jìn)行之外,很多情況下吝秕,絕大部分通過(guò)UI完成的業(yè)務(wù)操作完全可以通過(guò)API端完成泊脐。某些情況下,API(接口)的測(cè)試條件覆蓋率甚至可以多過(guò)UI烁峭。

綜合上述的分析容客,筆者認(rèn)為在自動(dòng)化測(cè)試的初級(jí)階段,適合奔小康的測(cè)試團(tuán)隊(duì)的自動(dòng)化模式應(yīng)該是中間層的接口最大则剃,兩端的UI和Unit測(cè)試適度實(shí)施耘柱。從圖形上看,就是一個(gè)橄欖型(中間的接口測(cè)試效益比最高)棍现。如果再加上一部分的手工測(cè)試调煎,那就是一個(gè)不倒翁了。(題外話(huà):接口測(cè)試可以由開(kāi)發(fā)團(tuán)隊(duì)來(lái)做己肮,也可交由測(cè)試團(tuán)隊(duì)去開(kāi)展)

按照這個(gè)模式士袄,將大部分自動(dòng)化投資用于接口測(cè)試,可以獲得最高的投資回報(bào)谎僻。再結(jié)合持續(xù)測(cè)試與持續(xù)集成等最佳實(shí)踐娄柳,在團(tuán)隊(duì)之間彼此共享測(cè)試用例、測(cè)試框架或者平臺(tái)艘绍,通過(guò)接口測(cè)試這一承上啟下的測(cè)試類(lèi)型赤拒,可以自下而上地逐步翻越過(guò)紙杯蛋糕模式中的那堵墻。(備注:紙杯蛋糕模式诱鞠,是一種反金字塔的自動(dòng)化模式挎挖,開(kāi)發(fā)和測(cè)試各自為政,線(xiàn)性的開(kāi)展測(cè)試航夺,無(wú)法并行協(xié)同測(cè)試蕉朵,相當(dāng)于有道部門(mén)墻,開(kāi)發(fā)的自測(cè)環(huán)節(jié)和測(cè)試開(kāi)展的測(cè)試環(huán)節(jié)阳掐,沒(méi)有建立關(guān)聯(lián)和資源共享---重復(fù)測(cè)試始衅、度量目標(biāo)不一致、過(guò)度自動(dòng)化)

跟大家推薦一個(gè)學(xué)習(xí)資料分享群:747981058缭保,里面大牛已經(jīng)為我們整理好了許多的學(xué)習(xí)資料汛闸,有自動(dòng)化,接口涮俄,性能等等的學(xué)習(xí)資料蛉拙!人生是一個(gè)逆水行舟的過(guò)程,不進(jìn)則退彻亲,咱們一起加油吧孕锄!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吮廉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子畸肆,更是在濱河造成了極大的恐慌宦芦,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轴脐,死亡現(xiàn)場(chǎng)離奇詭異调卑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)大咱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)恬涧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人碴巾,你說(shuō)我怎么就攤上這事溯捆。” “怎么了厦瓢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵提揍,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我煮仇,道長(zhǎng)劳跃,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任浙垫,我火速辦了婚禮刨仑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘夹姥。我一直安慰自己贸人,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布佃声。 她就那樣靜靜地躺著,像睡著了一般倘要。 火紅的嫁衣襯著肌膚如雪圾亏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天封拧,我揣著相機(jī)與錄音志鹃,去河邊找鬼。 笑死泽西,一個(gè)胖子當(dāng)著我的面吹牛曹铃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捧杉,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼陕见,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼秘血!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起评甜,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灰粮,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后忍坷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體粘舟,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年佩研,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柑肴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旬薯,死狀恐怖晰骑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情袍暴,我是刑警寧澤些侍,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站政模,受9級(jí)特大地震影響岗宣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淋样,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一耗式、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧趁猴,春花似錦刊咳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至捕犬,卻和暖如春跷坝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碉碉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工柴钻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人垢粮。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓贴届,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毫蚓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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

  • 瞻望星漢遙相問(wèn)占键,明月何時(shí)照我還 群山莽莽隱玉容,暮云散盡輕捧出 瓊暉一瀉千萬(wàn)里绍些,煙波連天云水間 水波瀲滟明月?lián)u捞慌,明...
    姜海清閱讀 2,230評(píng)論 55 76
  • 第一部分-你天天那么閑,還活得這么累1柬批、腦力勞動(dòng)者低價(jià)值和勞動(dòng)時(shí)間無(wú)關(guān)啸澡,只和不可替代性有關(guān)。 思考:我還在研究怎么...
    筱偉閱讀 198評(píng)論 0 0
  • 在一個(gè)小女孩很小的時(shí)候氮帐,不小心掉進(jìn)了水里嗅虏,這時(shí)!一個(gè)年輕的女人走過(guò)來(lái)把小女孩救了上沐,小女孩很感謝她皮服。 時(shí)光飛...
    小琦bb閱讀 351評(píng)論 4 4