自動(dòng)化測(cè)試能否取代手工測(cè)試
手工測(cè)試和自動(dòng)化測(cè)試都是軟件質(zhì)量保障的重要途徑,也是很多測(cè)試人員爭(zhēng)相討論的兩種測(cè)試方法。如何正確的看待這兩種測(cè)試方式,更好的使兩者相互結(jié)合是我們現(xiàn)在所要討論的話題。本文總結(jié)了自動(dòng)化測(cè)試和手工測(cè)試的優(yōu)點(diǎn)和缺點(diǎn),列舉了各自的適用范圍,并分析了自動(dòng)化測(cè)試無(wú)法最終取代手工測(cè)試的原因。
1. 自動(dòng)化測(cè)試是靈丹妙藥嗎?
自動(dòng)化測(cè)試有眾多的優(yōu)點(diǎn),例如:快速、全面、可靠、可編程、可重復(fù)使用、可重用。自動(dòng)化測(cè)試產(chǎn)品和解決方案的潛在客戶經(jīng)常會(huì)以下面的思考方式設(shè)想自動(dòng)化測(cè)試:
快速:顯然測(cè)試腳本執(zhí)行比人工執(zhí)行要快得多,而且和手工測(cè)試相比,計(jì)算機(jī)可以不知疲憊的執(zhí)行測(cè)試,一天24小時(shí)不休息的工作
全面:所有的測(cè)試都能夠?qū)崿F(xiàn)自動(dòng)化,你可以構(gòu)建一個(gè)覆蓋應(yīng)用程序每一個(gè)功能的測(cè)試包
可靠:每次測(cè)試腳本在運(yùn)行時(shí)執(zhí)行相同的操作,因此減少了人為的錯(cuò)誤,排除了人測(cè)試的不確定性,使測(cè)試結(jié)果更加客觀。
可編程:你可以編寫復(fù)雜的測(cè)試腳本來(lái)找出應(yīng)用程序中隱藏的信息
可重復(fù):對(duì)于重復(fù)執(zhí)行相同操作,計(jì)算機(jī)軟件可以輕松完成
可重用:你可以重復(fù)使用測(cè)試腳本來(lái)測(cè)試應(yīng)用程序的不同版本,即使用戶界面發(fā)生了變更
如此看來(lái),完全可以用自動(dòng)化測(cè)試取代手工測(cè)試嗎?答案是否定的。無(wú)庸質(zhì)疑,自動(dòng)化測(cè)試具有上述優(yōu)點(diǎn),但這些優(yōu)點(diǎn)是在一定的約束條件下存在的。盡管人們對(duì)自動(dòng)化測(cè)試有美好的愿望,但自動(dòng)化測(cè)試并非我們夢(mèng)寐以求的神兵利器。
Frederick P. Brooks, Jr. 曾在1986年寫過(guò)一篇題為《沒(méi)有銀彈:軟件工程的根本和次要問(wèn)題》的文章(No Silver Bullet – Essence and Accidents of Software Engineering)。這篇文章列舉了人們對(duì)于軟件工程技術(shù)發(fā)展的一些期望,并與現(xiàn)實(shí)進(jìn)行了對(duì)比。他的論點(diǎn)歸納如下:沒(méi)有一種單純的技術(shù)或管理上的進(jìn)步,能夠獨(dú)立地承諾在10年內(nèi)大幅度地提高軟件的生產(chǎn)率、可靠性和簡(jiǎn)潔性。Brooks鼓勵(lì)我們將技術(shù)和方法視作一種演進(jìn)手段,而并非革命。
我完全同意Brooks的觀點(diǎn),這有助于我們對(duì)理解自動(dòng)化測(cè)試的真正含意,,自動(dòng)化測(cè)試或者說(shuō)自動(dòng)化測(cè)試策略及工具的實(shí)現(xiàn),毫無(wú)疑問(wèn)具有強(qiáng)大功能、高效等使我們獲益匪淺,但只是測(cè)試人員工具箱里的一件利器,它無(wú)法取代測(cè)試人員的地位。
自動(dòng)測(cè)試生來(lái)就是用腳本寫成的,而不是探索性的,它需要我們?cè)O(shè)定上下文后才能在一定的范圍內(nèi)為特定的目的而執(zhí)行。即便我們使用的是一個(gè)引入了所有可能情況的自動(dòng)測(cè)試組合,我們的測(cè)試也只能在它們覆蓋的地方游刃有余,但對(duì)于其它沒(méi)有涵蓋到的地方,它們就鞭長(zhǎng)莫及了。如果出現(xiàn)了哪些沒(méi)有預(yù)料到的情況,那么它們很可能就失效了,而且即使它們能夠從這些情況中恢復(fù)過(guò)來(lái),它們還是無(wú)法停止正在處理的任務(wù)并檢查沒(méi)有預(yù)料到的情況。很顯而易見(jiàn)將所有測(cè)試都自動(dòng)化是不切實(shí)際的。
2. 手工測(cè)試會(huì)被自動(dòng)化測(cè)試替代嗎?
也許有人認(rèn)為“手工測(cè)試沒(méi)有技術(shù)含量,總有一天會(huì)被自動(dòng)化測(cè)試所替代”,實(shí)際上這種認(rèn)識(shí)是不全面的。測(cè)試是依靠知識(shí)和智慧作為生產(chǎn)資料的一項(xiàng)工作,這要求測(cè)試人員具備較強(qiáng)的業(yè)務(wù)知識(shí)、較高的計(jì)算機(jī)操作能力和深厚的測(cè)試?yán)碚摶A(chǔ)。通過(guò)設(shè)計(jì)科學(xué)合理的測(cè)試用例,正確的執(zhí)行用例、準(zhǔn)確的分析測(cè)試結(jié)果,才可能得到客觀的測(cè)試結(jié)論。
手工測(cè)試的***特點(diǎn)是具有探索性,可以依據(jù)測(cè)試工作的進(jìn)展適時(shí)調(diào)整測(cè)試策略,尤其是在需要進(jìn)行人為主觀判斷和主觀感覺(jué)來(lái)對(duì)被測(cè)試對(duì)象做出評(píng)價(jià)時(shí),則手工測(cè)試將是最理想的選擇,例如:在進(jìn)行用戶體驗(yàn)測(cè)試時(shí),測(cè)試者基于用戶的使用習(xí)慣和思維模式出發(fā),結(jié)合實(shí)際的業(yè)務(wù)場(chǎng)景,對(duì)軟件產(chǎn)品的外觀、操作方式等方面進(jìn)行檢查。從而體驗(yàn)軟件產(chǎn)品的使用者對(duì)產(chǎn)品的印象、感覺(jué),測(cè)試既有的軟件使用習(xí)慣和業(yè)務(wù)思維模型的綜合反映。提出軟件產(chǎn)品在方便、易用、符合思維習(xí)慣方面的修改意見(jiàn)。
手工測(cè)試有其不可替代的地方,因?yàn)槿司哂泻軓?qiáng)的判斷能力,而工具沒(méi)有。手工測(cè)試不可替代的地方至少包括以下幾點(diǎn)。
測(cè)試用例的設(shè)計(jì):測(cè)試人員的經(jīng)驗(yàn)和對(duì)錯(cuò)誤的判斷能力是工具不可替代的。
界面和用戶體驗(yàn)測(cè)試:人類的審美觀和心理體驗(yàn)是工具不可模擬的。
正確性的檢查:人們對(duì)是非的判斷、邏輯推理能力是工具不具備的。
3. 什么時(shí)候該用自動(dòng)化測(cè)試?
對(duì)于一些基本的、邏輯性不強(qiáng)的操作,可以使用自動(dòng)化測(cè)試工具。應(yīng)該說(shuō),現(xiàn)在性能測(cè)試、壓力測(cè)試等方面,自動(dòng)化測(cè)試有其不可替代的優(yōu)勢(shì)。它可以用簡(jiǎn)單的腳本,實(shí)現(xiàn)大量的重復(fù)的操作。從而通過(guò)對(duì)測(cè)試結(jié)果的分析,得出結(jié)論,這樣不僅節(jié)省了大量的人力和物力,而且使測(cè)試的結(jié)果更準(zhǔn)確。對(duì)于一些邏輯性很強(qiáng)的操作,如果自動(dòng)化測(cè)試不是很健全的話,不建議使用。因?yàn)檫@需要比較復(fù)雜的腳本語(yǔ)言,不可避免的增加了由于測(cè)試腳本的缺陷所造成測(cè)試結(jié)果錯(cuò)誤的誤差。這時(shí)就需要手動(dòng)測(cè)試了。
采用手工回歸測(cè)試,不但代價(jià)昂貴,而且容易出錯(cuò)。自動(dòng)化測(cè)試可以減少但不能消除這種工作的工作量。測(cè)試者可以有更多的時(shí)間去從事更有意義的測(cè)試,例如在應(yīng)用程序在復(fù)雜的場(chǎng)景下的不同處理等,盡管測(cè)試就是要花費(fèi)更長(zhǎng)的時(shí)間找到錯(cuò)誤,但比不意味著因此而要付出更高的代價(jià)。所以選擇正確的測(cè)試方法是尤為重要的。
總結(jié)起來(lái)自動(dòng)化測(cè)試適用的情況如下:
回歸測(cè)試。這可能是自動(dòng)化測(cè)試最主要的任務(wù),特別是在程序修改比較頻繁時(shí),效果是非常明顯的。由于回歸測(cè)試的動(dòng)作和用例是完全設(shè)計(jì)好的,測(cè)試期望的結(jié)果也是完全可以預(yù)料的,將回歸測(cè)試自動(dòng)運(yùn)行,可以極大提高測(cè)試效率,縮短回歸測(cè)試時(shí)間。
可以運(yùn)行更多更繁瑣的測(cè)試。自動(dòng)化的一個(gè)明顯的好處是可以在較少的時(shí)間內(nèi)運(yùn)行更多的測(cè)試。
可以執(zhí)行一些手工測(cè)試?yán)щy或不可能進(jìn)行的測(cè)試。比如,對(duì)于大量用戶的測(cè)試,不可能同時(shí)讓足夠多的測(cè)試人員同時(shí)進(jìn)行測(cè)試,但是卻可以通過(guò)自動(dòng)化測(cè)試模擬同時(shí)有許多用戶,從而達(dá)到測(cè)試的目的。
更好地利用資源。將繁瑣的任務(wù)自動(dòng)化,可以提高準(zhǔn)確性和測(cè)試人員的積極性,將測(cè)試技術(shù)人員解脫出來(lái)投入更多精力設(shè)計(jì)更好的測(cè)試用例。有些測(cè)試不適合于自動(dòng)測(cè)試,僅適合于手工測(cè)試,將可自動(dòng)測(cè)試的測(cè)試自動(dòng)化后,可以讓測(cè)試人員專注于手工測(cè)試部分,提高手工測(cè)試的效率。
測(cè)試具有一致性和可重復(fù)性。由于測(cè)試是自動(dòng)執(zhí)行的,每次測(cè)試的結(jié)果和執(zhí)行的內(nèi)容的一致性是可以得到保障的,從而達(dá)到測(cè)試的可重復(fù)的效果。
測(cè)試的復(fù)用性。由于自動(dòng)測(cè)試通常采用腳本技術(shù),這樣就有可能只需要做少量的甚至不做修改,實(shí)現(xiàn)在不同的測(cè)試過(guò)程中使用相同的用例。
增加軟件信任度。由于測(cè)試是自動(dòng)執(zhí)行的,所以不存在執(zhí)行過(guò)程中的疏忽和錯(cuò)誤,完全取決于測(cè)試的設(shè)計(jì)質(zhì)量。一旦軟件通過(guò)了強(qiáng)有力的自動(dòng)測(cè)試后,軟件的信任度自然會(huì)增加。
4. 什么時(shí)候該用手工測(cè)試?
手工測(cè)試更適合測(cè)試業(yè)務(wù)邏輯,因?yàn)闇y(cè)試人員學(xué)習(xí)業(yè)務(wù)后執(zhí)行測(cè)試要比交給自動(dòng)化容易得多。手工測(cè)試者最適合成為領(lǐng)域?qū)<?,依?jù)他們自身對(duì)業(yè)務(wù)的理解去評(píng)價(jià)復(fù)雜的業(yè)務(wù)邏輯實(shí)現(xiàn)的正誤,通過(guò)觀察分析細(xì)微的邏輯問(wèn)題找到問(wèn)題的癥結(jié)。
另外,從經(jīng)濟(jì)性的解度考慮,執(zhí)行自動(dòng)化測(cè)試需要事先花費(fèi)大量的時(shí)間和精力來(lái)初始化腳本,完善自動(dòng)化測(cè)試的上下文。這對(duì)于某些情況是不適合的,比如說(shuō)在某些有時(shí)間要求的項(xiàng)目中,初始化自動(dòng)化測(cè)試腳本所需時(shí)間是不可接受的。在這樣的情況下手工測(cè)試具有更強(qiáng)的靈活性。
總結(jié)起來(lái)手工測(cè)試適用的情況如下:
界面測(cè)試
用戶體驗(yàn)測(cè)試
探索性測(cè)試
周期短并且一次性的項(xiàng)目
進(jìn)度非常緊張的項(xiàng)目
需求非常不穩(wěn)定的項(xiàng)目
界面尚未確寫
使用了很多第三方或自定義控件的項(xiàng)目
5. 結(jié)論
手工測(cè)試和自動(dòng)化測(cè)試也是很多測(cè)試人員爭(zhēng)相討論的兩種測(cè)試方法。有人對(duì)自動(dòng)化測(cè)試趨之若鶩,也有人對(duì)自動(dòng)化測(cè)試嗤之以鼻。在做出如何看待自動(dòng)化測(cè)試的決定之前,首先要對(duì)自動(dòng)化測(cè)試有一個(gè)清晰的認(rèn)識(shí)。
自動(dòng)化測(cè)試是對(duì)手工測(cè)試的一種補(bǔ)充,自動(dòng)化測(cè)試不可能完全替代手工測(cè)試,因?yàn)楹芏鄶?shù)據(jù)的正確性、界面是否美觀、業(yè)務(wù)邏輯的滿足程度等都離不開(kāi)測(cè)試人員的人工判斷。而僅僅依賴手工測(cè)試的話,則會(huì)讓測(cè)試過(guò)于低效,尤其是回歸測(cè)試的重復(fù)工作量對(duì)測(cè)試人員造成了巨大的壓力。
因此,自動(dòng)化測(cè)試僅僅是某些條件下手工測(cè)試的一種補(bǔ)充,而無(wú)法全面取代手工測(cè)試。