摘要:作者以自己多年在測試領(lǐng)域尤其是在自動化測試中的經(jīng)驗(yàn),從管理層面講述了自動化測試相對于手動測試的優(yōu)勢;并且從不同的方面論述了目前大家對于自動化測試的錯誤認(rèn)識,同時讓大家充分意識到推行自動化過程中會面臨的困難。
關(guān)健詞:自動化測試;手動測試;
如今自動化測試以其執(zhí)行速度快,結(jié)果反饋迅速的最大優(yōu)點(diǎn)獲得了業(yè)界的廣泛認(rèn)可,尤其在如今需求快速變化的今天,大家對于自動化測試的需求和渴望更是到了一個空前的地步。誠然,自動化測試受到大家的追捧是有充分的理由,因?yàn)橄鄬τ谌斯y試,它有著不少的優(yōu)勢。我們且來看看。
1、自動化測試的優(yōu)勢
1.1 對程序的回歸測試更方便
回歸測試可能是自動化測試最主要的任務(wù),特別是在程序修改比較頻繁時,效果是非常明顯的。由于回歸測試的動作和用例是完全設(shè)計(jì)好的,測試期望的結(jié)果也是完全可以預(yù)料的,將回歸測試自動運(yùn)行,可以極大提高測試效率,縮短回歸測試時間。
1.2 可運(yùn)行更多更繁瑣的測試
自動化的一個明顯的好處是可以在較少的時間內(nèi)運(yùn)行更多的測試。而且人工測試在面對多輪重復(fù)執(zhí)行時,測試人員往往會趨于倦怠,而這將對產(chǎn)品的測試質(zhì)量帶來其他的損害
1.3 可以執(zhí)行一些手工測試?yán)щy或不可能進(jìn)行的測試
比如,對于大量用戶的測試,不可能同時讓足夠多的測試人員同時進(jìn)行測試,但是卻可以通過自動化測試模擬同時有許多用戶,從而達(dá)到測試的目的。
1.4 更好地利用資源
將繁瑣的任務(wù)自動化,可以提高準(zhǔn)確性和測試人員的積極性,將測試技術(shù)人員解脫出來投入更多精力設(shè)計(jì)更好的測試用例。有些測試不適合于自動測試,僅適合于手工測試,將可自動測試的測試自動化后,可以讓測試人員專注于手工測試部分,提高手工測試的效率。
1.5 測試具有一致性和可重復(fù)性
由于測試是自動執(zhí)行的,每次測試的結(jié)果和執(zhí)行的內(nèi)容的一致性是可以得到保障的,這樣使測試結(jié)果具有可對比性,并且達(dá)到測試的可重復(fù)的效果。
1.6 測試的復(fù)用性
由于自動測試通常采用腳本技術(shù),這樣就有可能只需要做少量的甚至不做修改,實(shí)現(xiàn)在不同的測試過程中使用相同的用例。
1.7 增加軟件信任度
由于測試是自動執(zhí)行的,所以不存在執(zhí)行過程中的疏忽和錯誤,完全取決于測試的設(shè)計(jì)質(zhì)量。一旦軟件通過了強(qiáng)有力的自動測試后,軟件的信任度自然會增加。
因?yàn)樽詣踊瘻y試現(xiàn)在如旋風(fēng)之勢席卷而上,特別是全球風(fēng)靡于敏捷開發(fā)之后,更是把自動化測試提高到了一個史無前例的高度。而且人工測試具有更敏銳的觀察力,能從一個稍縱即逝的小異常中挖掘出大問題。
另外有些測試是必然需要人工干預(yù)的,如冷啟動機(jī)器,如需要人的感官去體驗(yàn)的。那么如果真的需要追求100%的自動化測試覆蓋率,我們唯一的選擇就是犧牲這部分的測試案例來成全100%,這對于測試覆蓋率也是很大的一個損失。
而從投入產(chǎn)出比的角度來看,以目前對各組織的統(tǒng)計(jì)而言,60%是一個比較合理的值,如果要高于這個值,那么付出的人力將是成倍增長的。在我們的組織中一度自動化測試覆蓋率的要求是95%,曾經(jīng)我們也勉強(qiáng)達(dá)到,但是投入的代價是不可維續(xù)的。所以我們過后調(diào)整了我們的合理期望值。比如說在比較簡單的功能性測試中自動化測試是比較容易的,但如果是涉及模塊和網(wǎng)元很多的系統(tǒng)測試或互通性測試中就顯得相當(dāng)?shù)牧Σ粡男牧恕?br />
2、自動化測試是適用于任何情況的
2.1 自動化測試是適用于任何產(chǎn)品的
并不是所有的產(chǎn)品都適用于自動化測試的,如果這個產(chǎn)品只會做有限的幾輪測試,接著就不會再有持續(xù)的開發(fā)。那么就沒必要使用自動化測試,因?yàn)檫@樣的投入產(chǎn)出比比較低。畢竟在開發(fā)自動化測試階段需要耗費(fèi)大量的人力物力。對于決定自動化一個測試用例的一般規(guī)則是這個測試用例必須被運(yùn)行 4 次以上。這個數(shù)字是基于用戶對測試工具有良好的技能并且有一個良好的測試框架的。如果情況不是這樣的話,整個數(shù)字能夠是 10-20次或者更高。
再者如果變化比較大的話也不適用自動化測試。國內(nèi)多數(shù)軟件公司是針對最終用戶進(jìn)行項(xiàng)目開發(fā)—工程性質(zhì)的軟件,而不是產(chǎn)品開發(fā)。項(xiàng)目開發(fā)周期短,不同的用戶需求不一樣,而且在整個開發(fā)過程中需求和用戶界面變動較大,這種情況下就不適合自動化測試,對于不停變化的需求和界面,可能修改和錄制腳本的工作量大大超過測試實(shí)施的工作量,運(yùn)用測試工具不但不能減輕工作量,反而加重了測試人員的負(fù)擔(dān)。
2.2 自動化測試是適用于任何測試階段的
版本經(jīng)理通常認(rèn)為自動化測試能運(yùn)用于任何階段的萬能鑰匙,但事實(shí)上從本人的經(jīng)驗(yàn)來看,自動化測試適用于回歸測試,但不適用于新功能的測試。首先因?yàn)樾鹿δ軇傔f交之時穩(wěn)定性是不可保證的。而自動化測試對于其不穩(wěn)定性是相當(dāng)敏感的,所以通常都無法正常的運(yùn)行完測試,也無法達(dá)到我們盡快得到結(jié)果的預(yù)期。其次在新功能剛遞交時其期望結(jié)果是不可預(yù)知的,這對于自動化測試腳本的編寫帶來了極大的不確定性。最后在新功能遞交階段是需要我們發(fā)現(xiàn)大量問題的時候,而自動化測試無法擔(dān)此重任。
2.3 自動化測試是適用于任何組織的
在最初嘗試自動化測試的時候,是需要投入相當(dāng)?shù)娜肆臀锪θミx擇自動化工具,構(gòu)建自動化測試的框架,做必要的技能培訓(xùn),摸索編寫自動化測試的腳本,如果一個組織無力承負(fù)這樣的代價,那么是不適合自動化的,否則只能是半途而廢的下場。
即使我們澄清了這些誤區(qū),我們對于自動化測試有了一個比較清晰的認(rèn)識,也對其有了一個正確的期望,但實(shí)際在推行的過程中我們還是會遇到不少的困難,而困難主要來自于以下幾個方面。
3、自動化測試推廣中的困難
3.1 來自于測試人員的不接受
因?yàn)闇y試人員是自動化測試的主體,他們承擔(dān)著轉(zhuǎn)型的重要職責(zé),所以他們的接受與否對于工作的展開是尤為重要的。但作為一個新生事物,通常是不太容易被接受的,尤其是在大家覺得原有的模式很舒服很習(xí)慣的情況下。所以在最初的階段完全是強(qiáng)推。而經(jīng)過一年的努力,當(dāng)作年終總結(jié)時,所有的測試人員都說那年最艱難的是自動化測試,感觸最深的是自動化測試,從中學(xué)到最多是是自動化測試,而且發(fā)現(xiàn)自動化測試的確幫了很大的忙。
3.2 來自于測試人員技術(shù)上的不足
測試人員很多都不具有編程的經(jīng)驗(yàn),但自動化測試腳本的編寫還是需要一定的編程功底,如果組織中專門有一個具有編程功底的團(tuán)隊(duì)能開發(fā)自動化測試的工具,并且根據(jù)手動的測試案例編寫自動化測試的腳本,那狀況可能會好些。但目前更多的組織是需要人人能編寫自動化腳本的。而在我們的轉(zhuǎn)型中我們經(jīng)歷了三個階段,基本完成了能力的建設(shè)。第一階段以能用為目的,專門有人提供所需的函數(shù),測試人員只需調(diào)用這些函數(shù)完成自動化測試的目的,不需要考慮程序的可移植性,可復(fù)用性。第二個階段每個人會寫一些自己所需要的函數(shù),并且具有良好的移植性和靈活性。第三個階段每個人會寫能為他人復(fù)用的函數(shù)并且遵循制定的規(guī)范。這樣的轉(zhuǎn)型雖然慢但卻是比較穩(wěn)妥的方式。
3.3 來自于組織內(nèi)其他人員的阻撓
在自動化測試的初期階段,必然是會耗費(fèi)相當(dāng)多額外的精力去構(gòu)建環(huán)境等等,而且我們也需要時間完成技術(shù)上的積累。所以這時候不得不像項(xiàng)目經(jīng)理去索要更多的人力。這是一個長期受益的舉措,但對于當(dāng)前而言似乎是利大于弊的。所以會遭受各方各面的壓力,尤其是來自于項(xiàng)目經(jīng)理的壓力。我們很幸運(yùn)我們走過來了,而現(xiàn)在當(dāng)所有的人嘗到了甜頭之后,對于自動化測試的支持程度也大大的提高了。
以上是筆者在經(jīng)歷自動化測試轉(zhuǎn)型過程中的一點(diǎn)體會,希望能對其他正在轉(zhuǎn)型或者準(zhǔn)備轉(zhuǎn)型的組織能有一些幫助。