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