自動化測試實施步驟和實踐[1]

字號:

一個故事 :
     我在很多軟件公司工作過,公司規(guī)模有大有小,也和來自其他公司的人員交流,因此經(jīng)歷過或者聽說過影響自動化測試效果的各種各樣的的問題。本文將提供若干方法規(guī)避可能在自動化測試中出現(xiàn)的問題。我先給大家講一個故事,以便各位了解自動化測試會出現(xiàn)哪些問題。
     以前,我們有一個軟件項目,開發(fā)小組內(nèi)所有的人都認(rèn)為應(yīng)該在項目中采用自動化測試。軟件項目的經(jīng)理是 Anita Delegate 。她評估了所有可能采用的自動化測試工具,后選擇了一種,并且購買了幾份拷貝。她委派一位員工 ——Jerry Overworked 負(fù)責(zé)自動化測試工作。 Jerry 除了負(fù)責(zé)自動化測試工作,還有其他的很多任務(wù)。他嘗試使用剛剛購買的自動化測試工具。當(dāng)把測試工具應(yīng)用到軟件產(chǎn)品測試中的時候,遇到了問題。這個測試工具太復(fù)雜,難于配置。他不得不給測試工具的客戶支持熱線打了幾個電話。后, Jerry 認(rèn)識到,他需要測試工具的技術(shù)支持人員到現(xiàn)場幫助安裝測試工具,并找出其中的問題。在打過幾個電話后,測試工具廠商派過來一位技術(shù)專家。技術(shù)專家到達(dá)后,找出問題所在,測試工具可以正常工作了。這還算是順利了。但是,幾個月后,他們還是沒有真正實現(xiàn)測試自動化, Jerry 拒絕繼續(xù)從事這個項目的工作,他害怕自動化測試會一事無成,只是浪費(fèi)時間而已。
     項目經(jīng)理 Anita 把項目重新指派給 Kevin Shorttimer ,一位剛剛被雇傭來做軟件測試的人員。 Kevin 剛剛獲得計算機(jī)科學(xué)的學(xué)位,希望通過這份工作邁向更有挑戰(zhàn)性的、值得去做的工作。 Anita 送 Kevin 參加工具培訓(xùn),避免 Kevin 步 Jerry 的后塵 —— 由于使用測試工具遇到困難而變得沮喪,導(dǎo)致放棄負(fù)責(zé)的項目。 Kevin 非常興奮。這個項目的測試需要重復(fù)測試,有點令人討厭,因此,他非常愿意采用自動化測試。一個主要的版本發(fā)布后, Kevin 準(zhǔn)備開始全天的自動化測試,他非??释玫揭粋€機(jī)會證明自己可以寫非常復(fù)雜的,有難度的代碼。他建立了一個測試庫,使用了一些技巧的方法,可以支持大部分的測試,這比原計劃多花費(fèi)了很多時間,不過, Kevin 使整個測試工作開展的很順利。他用已有的測試套測試新的產(chǎn)品版本,并且確實發(fā)現(xiàn)了 bug 。接下來, Kevin 得到一個從事軟件開發(fā)職位的機(jī)會,離開了自動化的崗位。
     Ahmed Hardluck 接手 Kevin 的工作,從事自動化測試執(zhí)行工作。他發(fā)現(xiàn) Kevin 留下的文檔不僅少,并且沒有太多的價值。 Ahmed 花費(fèi)不少時間去弄清楚已有的測試設(shè)計和研究如何開展測試執(zhí)行工作。這個過程中, Ahmed 經(jīng)歷了很多失敗,并且不能確信測試執(zhí)行的方法是否正確。測試執(zhí)行中,執(zhí)行失敗后的錯誤的提示信息也沒有太多的參考價值,他不得不更深的鉆研。一些測試執(zhí)行看起來仿佛永遠(yuǎn)沒有結(jié)束。另外一些測試執(zhí)行需要一些特定的測試環(huán)境搭建要求,他更新測試環(huán)境搭建文檔,堅持不懈地工作。后來,在自動化測試執(zhí)行中,它發(fā)現(xiàn)幾個執(zhí)行失敗的結(jié)果,經(jīng)過分析,是回歸測試的軟件版本中有 BUG ,導(dǎo)致測試執(zhí)行失敗,發(fā)現(xiàn)產(chǎn)品的 BUG 后,每個人都很高興。接下來,他仔細(xì)分析測試套中的內(nèi)容,希望通過優(yōu)化測試套使測試變得更可靠,但是,這個工作一直沒有完成,預(yù)期的優(yōu)化結(jié)果也沒有達(dá)到。按照計劃,產(chǎn)品的下一個發(fā)布版本有幾個主要的改動, Ahmed 立刻意識到產(chǎn)品的改動會破壞已有的自動化測試設(shè)計。接下來,在測試產(chǎn)品的新版本中,絕大多數(shù)測試用例執(zhí)行失敗了, Ahmed 對執(zhí)行失敗的測試研究了很長時間,然后,從其他人那里尋求幫助。經(jīng)過商討,自動化測試應(yīng)該根據(jù)產(chǎn)品的新接口做修改,自動化測試才能運(yùn)轉(zhuǎn)起來。后,大家根據(jù)新接口修改自動化測試,測試都通過了。產(chǎn)品發(fā)布到了市場上。接下來,用戶立刻打來投訴電話,投訴軟件無法工作。大家才發(fā)現(xiàn)自己改寫了一些自動化測試腳本,導(dǎo)致一些錯誤提示信息被忽略了。雖然,實際上測試執(zhí)行是失敗的,但是,由于改寫腳本時的一個編程錯誤導(dǎo)致失敗的測試執(zhí)行結(jié)果被忽略了。這個產(chǎn)品終于失敗了。
     這是我的故事?;蛟S您曾經(jīng)親身經(jīng)歷了故事當(dāng)中某些情節(jié)。不過,我希望你沒有這樣的相似結(jié)局。本文將給出一些建議,避免出現(xiàn)這樣的結(jié)局。
    問題
    這個故事闡明了幾個使自動化測試項目陷入困境的原因:
    1. 自動化測試時間不充足:根據(jù)項目計劃的安排,測試人員往往被安排利用自己的個人時間或者項目后期介入自動化測試。這使得自動化測試無法得到充分的時間,無法得到真正的關(guān)注。
    2. 缺乏清晰的目標(biāo):有很多好的理由去開展自動化測試工作,諸如自動化測試可以節(jié)省時間,使測試更加簡單,提高測試的覆蓋率,可以讓測試人員保持更好的測試主動性。但是,自動化測試不可能同時滿足上述的目標(biāo)。不同的人員對自動化測試有不同的希望,這些希望應(yīng)該提出來,否則很可能面對的是失望。
    3. 缺乏經(jīng)驗:嘗試測試自己的程序的初級的程序員經(jīng)常采用自動化自動化測試。由于缺乏經(jīng)驗,很難保證自動化測試的順利開展。