成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

自動(dòng)化測(cè)試 之 “好用例、壞用例”

hot_pot_Leo / 2962人閱讀

摘要:反之,好用例則是表現(xiàn)穩(wěn)定的用例??梢越y(cè)試或開(kāi)發(fā)人員壞用例檔案,并自動(dòng)追蹤每一個(gè)壞用例的來(lái)源,督促負(fù)責(zé)人跟進(jìn)解決。接下來(lái),需要做的就是大家共同維護(hù)好這樣一個(gè)最佳狀態(tài),避免破窗理論的發(fā)生。

摘要: 自動(dòng)化測(cè)試的重要性顯而易見(jiàn),但自動(dòng)化測(cè)試又無(wú)法解決所有問(wèn)題,所以說(shuō)完全依賴自動(dòng)化是不可能的,但完全沒(méi)有自動(dòng)化是萬(wàn)萬(wàn)不能。在軟件開(kāi)發(fā)項(xiàng)目中,重度依賴人力進(jìn)行持續(xù)回歸是一件非??菰锏闹貜?fù)工作。企業(yè)需要花費(fèi)大量的時(shí)間和金錢(qián)來(lái)維持這樣一支隊(duì)伍以保證產(chǎn)品質(zhì)量,而隊(duì)伍中的同學(xué)在每天重復(fù)勞動(dòng)的工作之下,也絲毫得不到成長(zhǎng),看不到方向。

自動(dòng)化測(cè)試的重要性顯而易見(jiàn),但自動(dòng)化測(cè)試又無(wú)法解決所有問(wèn)題,所以說(shuō)完全依賴自動(dòng)化是不可能的,但完全沒(méi)有自動(dòng)化是萬(wàn)萬(wàn)不能。在軟件開(kāi)發(fā)項(xiàng)目中,重度依賴人力進(jìn)行持續(xù)回歸是一件非常枯燥的重復(fù)工作。企業(yè)需要花費(fèi)大量的時(shí)間和金錢(qián)來(lái)維持這樣一支隊(duì)伍以保證產(chǎn)品質(zhì)量,而隊(duì)伍中的同學(xué)在每天重復(fù)勞動(dòng)的工作之下,也絲毫得不到成長(zhǎng),看不到方向。

盡管自動(dòng)化測(cè)試不能解決所有問(wèn)題,但是卻擁有一個(gè)優(yōu)勢(shì):“Once” Written, Run Anytime as Desired(一旦寫(xiě)好,即可隨意重復(fù)執(zhí)行)。所以,自動(dòng)化測(cè)試通常都會(huì)跟持續(xù)集成系統(tǒng)(比如Jenkins)配合使用,就像“良辰美景”要配上“月光杯”才算的上是極致。這樣我們可以避免在軟件上線或交付的最后一刻,還深陷軟件問(wèn)題的泥潭中。當(dāng)然,這也是敏捷開(kāi)發(fā)的關(guān)鍵所在,把問(wèn)題消滅在過(guò)程中,只需持續(xù)關(guān)注增量?jī)?nèi)容。另外,在持續(xù)集成中,可以根據(jù)自己的需求來(lái)確定自動(dòng)化測(cè)試的觸發(fā)頻次和時(shí)間,比如“代碼提交”、“定時(shí)觸發(fā)”等。

萬(wàn)物皆有陰陽(yáng)兩面,自動(dòng)化測(cè)試有這么多優(yōu)勢(shì),當(dāng)然也有它的劣勢(shì)。所以,至今仍然有很多公司自動(dòng)化水平不高。我們分析一下這些劣勢(shì),主要有以下幾方面:
  1.對(duì)測(cè)試人員要求相對(duì)較高。
  2.測(cè)試用例需要根據(jù)版本迭代進(jìn)行更新,有一定維護(hù)成本。
  3.測(cè)試結(jié)果不一定可靠,測(cè)試用例也分“好”、“壞”。

前面兩點(diǎn)也是大家公知的問(wèn)題,每個(gè)公司各有自己的情況判斷,今天也不做贅述。今天我主要討論第三個(gè)問(wèn)題,也就是:怎么保證我們花了時(shí)間和精力去做的自動(dòng)化測(cè)試,其結(jié)果是有效的、是能夠反映被測(cè)代碼質(zhì)量的?

一、測(cè)試用例也分好壞

  
對(duì)于標(biāo)題,你可能會(huì)有疑問(wèn),測(cè)試用例竟然也有好壞?的確,測(cè)試用例也有好壞之分,那么什么是壞用例?什么是好用例?那要先從測(cè)試用例的特征說(shuō)起:

自動(dòng)化測(cè)試或者測(cè)試用例的根本目的就是judge(判斷)被測(cè)系統(tǒng)是否有問(wèn)題,是以衡量被測(cè)產(chǎn)品的“標(biāo)尺”存在的。所以,它具備一個(gè)重要的特征:在測(cè)試腳本和被測(cè)代碼都保持不變的情況下,測(cè)試結(jié)果應(yīng)該是穩(wěn)定的、不變的。

根據(jù)這個(gè)原則,“壞用例”并不是指測(cè)試不通過(guò)的用例,更不是測(cè)試通過(guò)的用例,而是指那些在相同條件下,偶爾通過(guò)、偶爾不通過(guò)的測(cè)試用例。反之,“好用例”則是表現(xiàn)穩(wěn)定的用例。
  
為什么說(shuō)“壞用例”破壞性大?因?yàn)槿绻美旧聿痪邆浞€(wěn)定的結(jié)果輸出,就無(wú)法準(zhǔn)確的衡量被測(cè)產(chǎn)品是代碼的問(wèn)題還是用例本身的問(wèn)題。如果每次測(cè)試結(jié)果都不能直接說(shuō)明問(wèn)題,需要進(jìn)行反復(fù)分析,將直接導(dǎo)致大家對(duì)測(cè)試用例失去信心。也就是說(shuō),測(cè)試同學(xué)和開(kāi)發(fā)同學(xué)會(huì)把測(cè)試用例的不通過(guò),當(dāng)成“Warning”而非“Error”,這樣的最終效果就是自動(dòng)化測(cè)試慢慢被拋棄。

二、測(cè)試用例的生命周期

有了“好用例”、“壞用例”的區(qū)分,測(cè)試用例就是“鮮活”的了。事實(shí)上,我們也可以規(guī)劃處一個(gè)測(cè)試用例從生到死的生命周期。

一般情況下,我們可以以測(cè)試用例通過(guò)率或通過(guò)次數(shù)來(lái)為其劃分“好/壞”。隨著執(zhí)行次數(shù)的增多,測(cè)試用例可以切換“好/壞”狀態(tài),當(dāng)“壞用例”持續(xù)一段時(shí)間之后,我們可以把它標(biāo)記為“垃圾用例”,并從自動(dòng)化執(zhí)行的序列中剔除。“壞用例”和“垃圾用例”可以被開(kāi)發(fā)或者測(cè)試同學(xué)修復(fù),然后進(jìn)入“未知狀態(tài)”?!拔粗獱顟B(tài)”中的應(yīng)用隨著執(zhí)行次數(shù)的增加,不斷的在這個(gè)生命周期里循環(huán)往復(fù)。

三、 如何消滅壞用例

至此,我們明白了測(cè)試用例的“好/壞”之分,也了解了測(cè)試用例的生命周期。
那么,我們?nèi)绾伪WC用例質(zhì)量,“消滅壞用例”呢?

1,通過(guò)“CI”(Continuous Integration持續(xù)集成)發(fā)現(xiàn)“壞用例”

“壞用例”指的是偶爾不通過(guò)、偶爾通過(guò)的用例。所以,你會(huì)發(fā)現(xiàn)在本地運(yùn)行的時(shí)候很難發(fā)現(xiàn)“壞用例”,因?yàn)椤皦挠美毙枰粓?zhí)行很多次才能被檢測(cè)出來(lái)。執(zhí)行很多次的過(guò)程可以非常好地通過(guò)CI系統(tǒng)來(lái)幫助實(shí)現(xiàn),所以,如果你還沒(méi)有使用CI系統(tǒng),也依然建議使用持續(xù)集成工具進(jìn)行多次的執(zhí)行用例,即便你的工程量很小。另外一點(diǎn),CI系統(tǒng)可以在一天不同的時(shí)刻執(zhí)行用例,而時(shí)間也是一個(gè)“壞用例”產(chǎn)生的可能屬性。

當(dāng)然,成熟的CI系統(tǒng)(比如Jenkins)都可以滿足絕大部分人的業(yè)務(wù)需求

2,防微杜漸

可能大家都聽(tīng)過(guò)“破窗理論”:當(dāng)房子上的一扇窗戶的玻璃被打破,如果不及時(shí)修復(fù),將會(huì)有破壞者破壞更多的窗戶?!皦挠美爆F(xiàn)象也是一樣的,當(dāng)出現(xiàn)一個(gè)“壞用例”時(shí),如果不抓緊修復(fù),整個(gè)測(cè)試用例集甚至自動(dòng)化測(cè)試結(jié)果的可信度都將快速下滑。
  
對(duì)“壞用例”采取零容忍的態(tài)度,有助于整體自動(dòng)化水平和質(zhì)量的提升??梢越y(cè)試或開(kāi)發(fā)人員“壞用例”檔案,并自動(dòng)追蹤每一個(gè)“壞用例”的來(lái)源,督促負(fù)責(zé)人跟進(jìn)解決。

3,避免執(zhí)行環(huán)境差異

4,使用異步等待  

通常,一個(gè)測(cè)試用例多個(gè)測(cè)試步驟組合而成,每一個(gè)測(cè)試步驟都需要特定的執(zhí)行時(shí)間,所以,大家寫(xiě)測(cè)試用例一般的做法就是等待特定的時(shí)長(zhǎng),比如5秒。但是相同的測(cè)試步驟在每次用例執(zhí)行過(guò)程中的時(shí)長(zhǎng)并不相同,并且有時(shí)差異還會(huì)很大。這往往會(huì)導(dǎo)致上一步還未完成,下一步就開(kāi)始執(zhí)行,導(dǎo)致“壞用例”的產(chǎn)生?! ?
另外,即便是步驟執(zhí)行沒(méi)有超時(shí),但依然可能造成時(shí)間上的浪費(fèi),比如一個(gè)步驟等待5s,但實(shí)際執(zhí)行只用了2s,就有3s的時(shí)間浪費(fèi)?! ?
理論上,解決這個(gè)問(wèn)題有兩種方式:回調(diào)、輪詢?;卣{(diào)是指,上一步執(zhí)行完成后,通知執(zhí)行測(cè)試用例的進(jìn)程/線程繼續(xù)下一步。但這種方式在實(shí)際中并不采用,因?yàn)樗枰o耦合被測(cè)系統(tǒng),可能為被測(cè)系統(tǒng)帶來(lái)新的問(wèn)題和維護(hù)成本。所以,實(shí)際中,更多的采用的是以“觀察者”身份存在的輪詢。比如說(shuō),以很小的時(shí)間間隔來(lái)不斷查詢是否到達(dá)下一步執(zhí)行的狀態(tài)。這樣就能夠避免一定程度的“壞用例”的產(chǎn)生。

5,解決并行執(zhí)行的問(wèn)題  

如果測(cè)試用例存在并行執(zhí)行的情況,請(qǐng)確保多個(gè)測(cè)試用例之間不會(huì)因?yàn)橄嗷?duì)被測(cè)系統(tǒng)的影響導(dǎo)致沖突,從而使用例變成“壞用例”。比如,在所有測(cè)試用例執(zhí)行過(guò)程中,數(shù)據(jù)庫(kù)相關(guān)操作都采取事務(wù)的方式,用例執(zhí)行完成后,就立即進(jìn)行回滾。

6,避免測(cè)試用例互相依賴  

如果一個(gè)用例集中的測(cè)試用例時(shí)相互依賴的,那如果其中有一個(gè)“壞用例”出現(xiàn),將會(huì)導(dǎo)致整個(gè)用例集不穩(wěn)定。所以,盡量保證用例集中的每一個(gè)用例沒(méi)有相互依賴關(guān)系,每一個(gè)都可以獨(dú)立執(zhí)行驗(yàn)證。

7,避免測(cè)試腳本太長(zhǎng)  

毫無(wú)疑問(wèn),一個(gè)測(cè)試用例的步驟越多,可能變成“壞用例”的概率越高,所以,一般情況下,一個(gè)App的測(cè)試用例不超過(guò)在30步最好。

8,提高測(cè)試用例代碼水平  

一個(gè)“好用例”除了結(jié)果足夠穩(wěn)定之外,還需要具備良好的結(jié)構(gòu)設(shè)計(jì),以及良好的可讀性、可維護(hù)性。這一點(diǎn)對(duì)測(cè)試用例編寫(xiě)人員要求較高,當(dāng)然,通過(guò)多讀、多思、多寫(xiě),能夠很快的提高自己的自動(dòng)化用例編寫(xiě)能力。

四、 MQC讓測(cè)試用例“轉(zhuǎn)”起來(lái)  

“壞用例”的產(chǎn)生跟被測(cè)應(yīng)用、編寫(xiě)方法、測(cè)試環(huán)境等,都有非常大的關(guān)系,很難找到一個(gè)“all in one”的解決方案。但是,只要我們認(rèn)真分析解決就可以讓所有測(cè)試用例達(dá)到都是“好用例”這個(gè)狀態(tài)。接下來(lái),需要做的就是大家共同維護(hù)好這樣一個(gè)最佳狀態(tài),避免“破窗理論”的發(fā)生。
  
在解決“壞用例”這個(gè)問(wèn)題上,阿里云測(cè)MQC提出并實(shí)施了眾多有效方案,例如,對(duì)于未通過(guò)的用例,增加N次重跑,避免“壞用例”的產(chǎn)生;比如“在線錄制”可以幫助用戶短時(shí)間內(nèi)獲得穩(wěn)定性和兼容性都很高的測(cè)試用例;比如“用例管理”可以跟蹤所有測(cè)試用例的通過(guò)率及通過(guò)次數(shù),及早發(fā)現(xiàn)和處置“壞用例”;再比如,阿里云測(cè)MQC還提供了“Jenkins插件,讓大家無(wú)需關(guān)心硬件資源等問(wèn)題,方便大家將MQC云上的服務(wù)添加到自己的持續(xù)集成流程中來(lái),真正做到“Once Written, Run Anytime”。這也是為什么只有在MQC平臺(tái)上,測(cè)試用例才能真正“流轉(zhuǎn)”起來(lái)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/8791.html

相關(guān)文章

  • 軟件測(cè)試肖sir__軟件測(cè)試介紹001測(cè)試分類(3)

    摘要:白盒測(cè)試白盒測(cè)試又稱結(jié)構(gòu)測(cè)試,透明測(cè)試,邏輯驅(qū)動(dòng)測(cè)試,或基于代碼的測(cè)試。 測(cè)試分類: 一、按開(kāi)發(fā)階段劃分 1、單元測(cè)試 2、集成測(cè)試 3、系統(tǒng)測(cè)試 4、驗(yàn)收測(cè)試 二...

    szysky 評(píng)論0 收藏0
  • 移動(dòng)測(cè)試中游戲和應(yīng)用的不同

    摘要:今天就說(shuō)說(shuō)移動(dòng)測(cè)試中最重要的兩個(gè)方向。自動(dòng)化測(cè)試完全不同于手游自動(dòng)化測(cè)試手機(jī)和手游的開(kāi)發(fā)技術(shù)不同,這導(dǎo)致了兩者的自動(dòng)化測(cè)試技術(shù)是截然不同的。手游和的第二個(gè)玩法不同在于探索性。 隨著智能設(shè)備的普及和移動(dòng)互聯(lián)網(wǎng)的興起,各家互聯(lián)網(wǎng)巨頭紛紛在往移動(dòng)端布局和轉(zhuǎn)型,同時(shí)初創(chuàng)的移動(dòng)互聯(lián)網(wǎng)公司也都盯著這個(gè)市場(chǎng)希望分一杯羹。在這個(gè)大環(huán)境下,互聯(lián)網(wǎng)的重心已經(jīng)慢慢從Web端轉(zhuǎn)向了移動(dòng)端,而移動(dòng)端的軟件測(cè)試也...

    Jinkey 評(píng)論0 收藏0
  • Postman接口動(dòng)化測(cè)試——批量執(zhí)行(集合操作)

    摘要:集合定義在接口自動(dòng)化測(cè)試過(guò)程中將一組請(qǐng)求多條請(qǐng)求保存到一起進(jìn)行集中管理。右上角有結(jié)果統(tǒng)計(jì)導(dǎo)出測(cè)試結(jié)果再次執(zhí)行重新發(fā)起集合執(zhí)行。 集合定義:在接口自動(dòng)化測(cè)試過(guò)程中將一...

    tracymac7 評(píng)論0 收藏0
  • 干貨|app動(dòng)化測(cè)試設(shè)備交互API詳解

    摘要:提供了很多系統(tǒng)操作,在測(cè)試過(guò)程中會(huì)有一些特殊場(chǎng)景,比如來(lái)電話短信,橫豎屏切換,安裝卸載,手機(jī)上的鍵盤(pán)操作,錄屏等功能。下面介紹幾個(gè)常用的設(shè)備交互。 Appium ...

    Coly 評(píng)論0 收藏0
  • 測(cè)試開(kāi)發(fā)系類接口動(dòng)化測(cè)試

    摘要:接口定義代碼角度的接口定義中的接口是一系列方法的聲明,是一些方法特征的集合,一個(gè)接口只有方法的特征沒(méi)有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為功能。 接口定義 代碼角度的接口Interface 定義:Java中的接口是一系列方法的聲明,是一些方法特征的集合,一個(gè)接口只有方法的特征沒(méi)有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這...

    alexnevsky 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<