讀書計(jì)劃 - 3 - 軟件測(cè)試52講 -04 | 為什么要做自動(dòng)化測(cè)試?什么樣的項(xiàng)目適合做自動(dòng)化測(cè)試?- 2019-01-21

一,什么是自動(dòng)化測(cè)試?
顧名思義,自動(dòng)化測(cè)試是,把人對(duì)軟件的測(cè)試行為轉(zhuǎn)化為由機(jī)器執(zhí)行測(cè)試行為的一種實(shí)踐,對(duì)于最常見(jiàn)的 GUI 自動(dòng)化測(cè)試來(lái)講,就是由自動(dòng)化測(cè)試工具模擬之前需要人工在軟件界面上的各種操作,并且自動(dòng)驗(yàn)證其結(jié)果是否符合預(yù)期。

自動(dòng)化測(cè)試的本質(zhì)是先寫一段代碼,然后去測(cè)試另一段代碼,所以實(shí)現(xiàn)自動(dòng)化測(cè)試用例本身屬于開(kāi)發(fā)工作,需要投入大量的時(shí)間和精力,并且已經(jīng)開(kāi)發(fā)完成的用例還必須隨著被測(cè)對(duì)象的改變而不斷更新,你還需要為此付出維護(hù)測(cè)試用例的成本。

當(dāng)你發(fā)現(xiàn)自動(dòng)化測(cè)試用例的維護(hù)成本高于其節(jié)省的測(cè)試成本時(shí),自動(dòng)化測(cè)試就失去了價(jià)值與意義,你也就需要在是否使用自動(dòng)化測(cè)試上權(quán)衡取舍了。

二,為什么需要自動(dòng)化測(cè)試?
為了讓你更好地理解自動(dòng)化測(cè)試的價(jià)值,即為什么需要自動(dòng)化測(cè)試,我先來(lái)跟你聊聊自動(dòng)化測(cè)試通常有哪些優(yōu)勢(shì):

  1. 自動(dòng)化測(cè)試可以替代大量的手工機(jī)械重復(fù)性操作,測(cè)試工程師可以把更多的時(shí)間花在更全面的用例設(shè)計(jì)和新功能的測(cè)試上;

  2. 自動(dòng)化測(cè)試可以大幅提升回歸測(cè)試的效率,非常適合敏捷開(kāi)發(fā)過(guò)程;

  3. 自動(dòng)化測(cè)試可以更好地利用無(wú)人值守時(shí)間,去更頻繁地執(zhí)行測(cè)試,特別適合現(xiàn)在非工作時(shí)間執(zhí)行測(cè)試,工作時(shí)間分析失敗用例的工作模式;

  4. 自動(dòng)化測(cè)試可以高效實(shí)現(xiàn)某些手工測(cè)試無(wú)法完成或者代價(jià)巨大的測(cè)試類型,比如關(guān)鍵業(yè)務(wù) 7×24 小時(shí)持續(xù)運(yùn)行的系統(tǒng)穩(wěn)定性測(cè)試和高并發(fā)場(chǎng)景的壓力測(cè)試等;

  5. 自動(dòng)化測(cè)試還可以保證每次測(cè)試執(zhí)行的操作以及驗(yàn)證的一致性和可重復(fù)性,避免人為的遺漏或疏忽。

而為了避免對(duì)自動(dòng)化測(cè)試的過(guò)度依賴,你還需要了解自動(dòng)化測(cè)試有哪些劣勢(shì),這將幫你繞過(guò)實(shí)際工作中的“坑”。

  1. 自動(dòng)化測(cè)試并不能取代手工測(cè)試,它只能替代手工測(cè)試中執(zhí)行頻率高、機(jī)械化的重復(fù)步驟。你千萬(wàn)不要奢望所有的測(cè)試都自動(dòng)化,否則一定會(huì)得不償失。

  2. 自動(dòng)測(cè)試遠(yuǎn)比手動(dòng)測(cè)試脆弱,無(wú)法應(yīng)對(duì)被測(cè)系統(tǒng)的變化,業(yè)界一直有句玩笑話“開(kāi)發(fā)手一抖,自動(dòng)化測(cè)試忙一宿”,這也從側(cè)面反映了自動(dòng)化測(cè)試用例的維護(hù)成本一直居高不下的事實(shí)。
    其根本原因在于自動(dòng)化測(cè)試本身不具有任何“智能”,只是按部就班地執(zhí)行事先定義好的測(cè)試步驟并驗(yàn)證測(cè)試結(jié)果。對(duì)于執(zhí)行過(guò)程中出現(xiàn)的明顯錯(cuò)誤和意外事件,自動(dòng)化測(cè)試沒(méi)有任何處理能力。

  3. 自動(dòng)化測(cè)試用例的開(kāi)發(fā)工作量遠(yuǎn)大于單次的手工測(cè)試,所以只有當(dāng)開(kāi)發(fā)完成的測(cè)試用例的有效執(zhí)行次數(shù)大于等于 5 次時(shí),才能收回自動(dòng)化測(cè)試的成本。

  4. 手工測(cè)試發(fā)現(xiàn)的缺陷數(shù)量通常比自動(dòng)化測(cè)試要更多,并且自動(dòng)化測(cè)試僅僅能發(fā)現(xiàn)回歸測(cè)試范圍的缺陷。

  5. 測(cè)試的效率很大程度上依賴自動(dòng)化測(cè)試用例的設(shè)計(jì)以及實(shí)現(xiàn)質(zhì)量,不穩(wěn)定的自動(dòng)化測(cè)試用例實(shí)現(xiàn)比沒(méi)有自動(dòng)化更糟糕。

  6. 實(shí)行自動(dòng)化測(cè)試的初期,用例開(kāi)發(fā)效率通常都很低,大量初期開(kāi)發(fā)的用例通常會(huì)在整個(gè)自動(dòng)化測(cè)試體系成熟,和測(cè)試工程師全面掌握測(cè)試工具后,需要重構(gòu)。

  7. 業(yè)務(wù)測(cè)試專家和自動(dòng)化測(cè)試專家通常是兩批人,前者懂業(yè)務(wù)不懂自動(dòng)化技術(shù),后者懂自動(dòng)化技術(shù)但不懂業(yè)務(wù),只有二者緊密合作,才能高效開(kāi)展自動(dòng)化測(cè)試。

  8. 自動(dòng)化測(cè)試開(kāi)發(fā)人員必須具備一定的編程能力,這對(duì)傳統(tǒng)的手工測(cè)試工程師會(huì)是一個(gè)挑戰(zhàn)。

三,什么樣的項(xiàng)目適合自動(dòng)化測(cè)試?
看到這里,你心里可能在暗自嘀咕,“有沒(méi)有搞錯(cuò)啊,自動(dòng)化測(cè)試的劣勢(shì)居然比優(yōu)勢(shì)還多”。那為什么還有那么多的企業(yè)級(jí)項(xiàng)目在實(shí)行自動(dòng)化測(cè)試呢?那么,我接下來(lái)要講的內(nèi)容就是,到底什么樣的項(xiàng)目適合自動(dòng)化測(cè)試?

第一,需求穩(wěn)定,不會(huì)頻繁變更。
自動(dòng)化測(cè)試最怕的就是需求不穩(wěn)定,過(guò)高的需求變更頻率會(huì)導(dǎo)致自動(dòng)化測(cè)試用例的維護(hù)成本直線上升。剛剛開(kāi)發(fā)完成并調(diào)試通過(guò)的用例可能因?yàn)榻缑孀兓?,或者是業(yè)務(wù)流程變化,不得不重新開(kāi)發(fā)調(diào)試。所以自動(dòng)化測(cè)試更適用于需求相對(duì)穩(wěn)定的軟件項(xiàng)目。

第二,研發(fā)和維護(hù)周期長(zhǎng),需要頻繁執(zhí)行回歸測(cè)試。

  1. 在我看來(lái),軟件產(chǎn)品比軟件項(xiàng)目更適合做自動(dòng)化測(cè)試。
    首先,軟件產(chǎn)品的生命周期一般都比較長(zhǎng),通常會(huì)有多個(gè)版本陸續(xù)發(fā)布,每次版本發(fā)布都會(huì)有大量的回歸測(cè)試需求。
    同時(shí),軟件產(chǎn)品預(yù)留給自動(dòng)化測(cè)試開(kāi)發(fā)的時(shí)間也比較充裕,可以和產(chǎn)品一起迭代。
    其次,自動(dòng)化測(cè)試用例的執(zhí)行比高于 1:5,即開(kāi)發(fā)完成的用例至少可以被有效執(zhí)行 5 次以上時(shí),自動(dòng)化測(cè)試的優(yōu)勢(shì)才可以被更好地體現(xiàn)。

  2. 對(duì)于軟件項(xiàng)目的自動(dòng)化測(cè)試,就要看項(xiàng)目的具體情況了。
    如果短期的一次性項(xiàng)目,就算從技術(shù)上講自動(dòng)化測(cè)試的可行性很高,但從投入產(chǎn)出比(ROI)的角度看并不建議實(shí)施自動(dòng)化,因?yàn)榍寥f(wàn)苦開(kāi)發(fā)完成的自動(dòng)化用例可能執(zhí)行一兩次,項(xiàng)目就結(jié)束了。我還遇到過(guò)更夸張的情況,自動(dòng)化測(cè)試用例還沒(méi)開(kāi)發(fā)完,項(xiàng)目都已經(jīng)要上線了。
    所以,對(duì)于這種短期的一次性項(xiàng)目,我覺(jué)得你應(yīng)該選擇手工探索式測(cè)試,以發(fā)現(xiàn)缺陷為第一要?jiǎng)?wù)。而對(duì)于一些中長(zhǎng)期項(xiàng)目,我的建議是:對(duì)比較穩(wěn)定的軟件功能進(jìn)行自動(dòng)化測(cè)試,對(duì)變動(dòng)較大或者需求暫時(shí)不明確的功能進(jìn)行手工測(cè)試,最終目標(biāo)是用 20% 的精力去覆蓋 80% 的回歸測(cè)試。

第三,需要在多種平臺(tái)上重復(fù)運(yùn)行相同測(cè)試的場(chǎng)景。
這樣的場(chǎng)景其實(shí)有很多,比如:

  • 對(duì)于 GUI 測(cè)試,同樣的測(cè)試用例需要在多種不同的瀏覽器上執(zhí)行;
  • 對(duì)于移動(dòng)端應(yīng)用測(cè)試,同樣的測(cè)試用例需要在多個(gè)不同的 Android 或者 iOS 版本上執(zhí)行,或者是同樣的測(cè)試需要在大量不同的移動(dòng)終端上執(zhí)行;
  • 對(duì)于一些企業(yè)級(jí)軟件,如果對(duì)于不同的客戶有不同的定制版本,各個(gè)定制版本的主體功能絕大多數(shù)是一致的,可能只有個(gè)別功能有輕微差別,測(cè)試也是需要覆蓋每個(gè)定制版本的所有測(cè)試;
  • ……
    這些都是自動(dòng)化測(cè)試的最佳應(yīng)用場(chǎng)景,因?yàn)閱蝹€(gè)測(cè)試用例都需要被反復(fù)執(zhí)行多次,能夠使自動(dòng)化測(cè)試的投資回報(bào)率最大化。

第四,某些測(cè)試項(xiàng)目通過(guò)手工測(cè)試無(wú)法實(shí)現(xiàn),或者手工成本太高。
對(duì)于所有的性能和壓力測(cè)試,很難通過(guò)手工方式實(shí)現(xiàn)。
比如,某一個(gè)項(xiàng)目要求進(jìn)行一萬(wàn)并發(fā)用戶的基準(zhǔn)性能測(cè)試(Benchmark test),難道你真的要找一萬(wàn)個(gè)用戶按照你的口令來(lái)操作被測(cè)軟件嗎?又比如,對(duì)于 7×24 小時(shí)的穩(wěn)定性測(cè)試,難道你也要找一批用戶沒(méi)日沒(méi)夜地操作被測(cè)軟件嗎?
這個(gè)時(shí)候,你就必須借助自動(dòng)化測(cè)試技術(shù)了,用機(jī)器來(lái)模擬大量用戶反復(fù)操作被測(cè)軟件的場(chǎng)景。當(dāng)然對(duì)于此類測(cè)試是不可能通過(guò) GUI 操作來(lái)模擬大量用戶行為的,你必須基于協(xié)議的自動(dòng)化測(cè)試技術(shù),這個(gè)我會(huì)在后續(xù)的性能測(cè)試章節(jié)詳細(xì)敘述。

第五,被測(cè)軟件的開(kāi)發(fā)較為規(guī)范,能夠保證系統(tǒng)的可測(cè)試性。
從技術(shù)上講,如果要實(shí)現(xiàn)穩(wěn)定的自動(dòng)化測(cè)試,被測(cè)軟件的開(kāi)發(fā)過(guò)程就必須規(guī)范。比如,GUI 上的控件命名如果沒(méi)有任何規(guī)則可尋,就會(huì)造成 GUI 自動(dòng)化的控件識(shí)別與定位不穩(wěn)定,從而影響自動(dòng)化測(cè)試的效率。
另外,某些用例的自動(dòng)化必須要求開(kāi)發(fā)人員在產(chǎn)品中預(yù)留可測(cè)試性接口,否則后續(xù)的自動(dòng)化會(huì)很難開(kāi)展。
比如,有些用戶登錄操作,需要圖片驗(yàn)證碼,如果開(kāi)發(fā)人員沒(méi)有提供繞開(kāi)圖片驗(yàn)證碼的路徑,那么自動(dòng)化測(cè)試就必須借助光學(xué)字符識(shí)別(OCR)技術(shù)來(lái)對(duì)圖片驗(yàn)證碼進(jìn)行模式識(shí)別,而它的設(shè)計(jì)初衷是為了防止機(jī)器人操作,可想而知 OCR 的識(shí)別率會(huì)很低,就會(huì)直接影響用例的穩(wěn)定性。

第六,測(cè)試人員已經(jīng)具備一定的編程能力。
如果測(cè)試團(tuán)隊(duì)的成員沒(méi)有任何開(kāi)發(fā)編程的基礎(chǔ),那你想要推行自動(dòng)化測(cè)試就會(huì)有比較大的阻力。這個(gè)阻力會(huì)來(lái)自于兩個(gè)方面:

  • 前期的學(xué)習(xí)成本通常會(huì)比較大,很難在短期內(nèi)對(duì)實(shí)際項(xiàng)目產(chǎn)生實(shí)質(zhì)性的幫助,此時(shí)如果管理層對(duì)自動(dòng)化測(cè)試沒(méi)有正確的預(yù)期,很可能會(huì)叫停自動(dòng)化測(cè)試;
  • 測(cè)試工程師通常會(huì)非常熱衷于學(xué)習(xí)使用自動(dòng)化測(cè)試技術(shù),以至于他們的工作重點(diǎn)會(huì)發(fā)生錯(cuò)誤的偏移,把大量的精力放在自動(dòng)化測(cè)試技術(shù)的學(xué)習(xí)與實(shí)踐上,而忽略了測(cè)試用例的設(shè)計(jì),這將直接降低軟件整體的質(zhì)量。

總結(jié)
自動(dòng)化測(cè)試是,把人工對(duì)軟件的測(cè)試轉(zhuǎn)化為由機(jī)器執(zhí)行測(cè)試行為的一種實(shí)踐,可以把測(cè)試工程師從機(jī)械重復(fù)的測(cè)試工作中解脫出來(lái),將更多的精力放在新功能的測(cè)試和更全面的測(cè)試用例設(shè)計(jì)上。

然而自動(dòng)化測(cè)試試一把“雙刃劍”,雖然它可以從一定程度上解放測(cè)試工程師的勞動(dòng)力,完成一些人工無(wú)法實(shí)現(xiàn)的測(cè)試,但并不適用于所有的測(cè)試場(chǎng)景,如果維護(hù)自動(dòng)化測(cè)試的代價(jià)高過(guò)了節(jié)省的測(cè)試成本,那么在這樣的項(xiàng)目中推進(jìn)自動(dòng)化測(cè)試就會(huì)得不償失。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容