【摘要】測試是軟件開發(fā)的一個重要環(huán)節(jié)。本文論述了軟件測試自動化測試的實施。從自動測試的好處、影響軟件測試自動化實施的因素產(chǎn)生原因等幾個方面出發(fā),總結軟件自動化測試的實施思路,并提供某軟件公司實施軟件測試自動化案例,供各位同行參考。
【關鍵詞】軟件測試自動化引入條件風險分析
1概述
軟件測試自動化,從計算機這一龐大學科發(fā)展至今,最根本的意義是解決手工勞動的復雜性,成為替代某些重復性行為模式的最佳工具。
2實施軟件測試自動化的理由
(1)提高測試效率和降低測試成本。
(2)將重復性強的測試由手工轉為可以獨立開來自動實現(xiàn)的。
(3)實現(xiàn)快速的回歸測試,提高新版本發(fā)布的速度和質量,尤其是不能適應目前流行的迭代開發(fā),回歸測試頻度高、工作量大,人工的測試很難對新的迭代版本作出快速評估。
(4)自動測試可以避免人工測試容易犯的錯誤:錯誤測試、漏測試、多測試和重復測試等。
(5)典型的應用,例如多用戶并發(fā)注冊、并發(fā)交易請求和并發(fā)交易應答,這種情況用人工測試幾乎是辦不到的,而自動測試卻很容易。
(6)對于很常用的功能性邊界測試測試,人工測試非常耗費時間,而自動測試很快且準確。
可以說,實施測試自動化是軟件行業(yè)一個不可逆轉的趨勢,如果在這個領域走在了前列,無論從企業(yè)的核心競爭力還是個人的工作技能來說,都有巨大的優(yōu)越性。
3軟件測試自動化的引入條件
自動化測試能大大降低手工測試工作,但決不能完全取代手工測試。完全的自動化測試只是一個理論上的目標,實際上想要達到100%的自動化測試,不僅代價相當昂貴,而且操作上也是幾乎不可能實現(xiàn)。一般來說,一個40-60%的利用自動化的程度已經(jīng)是非常好的了,達到這個級別以上將過大的增加測試相關的維護成本。
測試自動化的引入有一定的標準,要經(jīng)過綜合的評估,絕對不能理解成測試工具簡單的錄制與回放過程。實際上,從實現(xiàn)成熟度來說,自動化測試分五個級別,如表1所示。
自動化測試能提高測試效率,快速定位測試軟件各版本中的功能與性能缺陷,但不會創(chuàng)造性的發(fā)現(xiàn)測試腳本里沒有設計的缺陷。測試工具不是人腦,要求測試設計者將測試中各種分支路徑的校驗點進行定制,沒有定制完整,即便事實上出錯的地方,測試工具也不會發(fā)覺。因此,制訂全面、系統(tǒng)的測試設計工作是相當重要的。
自動化測試能提高測試效率,但對于周期短、時間緊迫的項目不宜采用自動化測試。推行自動化測試的前期工作相當龐大,將企業(yè)級自動化測試框架應用到一個項目中也要評估其合適性,因此決不能盲目的的應用到任何一個測試項目中,尤其不適合周期短的項目,因為很可能需要大量的測試框架的準備和實施而會被拖跨。
實施測試自動化必須進行多方面的培訓,包括測試流程、缺陷管理、人員安排、測試工具使用等。如果測試過程是不合理的,引入自動化測試只會給項目團隊帶來更大的混亂。
那么應該具備什么樣的條件才可以引入自動化測試呢,才可以最大可能的減少引入風險,并能夠可持續(xù)性的開展下去呢?
(1)從項目規(guī)模上來說,沒有嚴格限制。無論項目大小,都需要提高測試效率,希望測試工作標準化,測試流程正規(guī)化,測試代碼重用化。所以第一要做到的,就是從公司高層開始,直到測試部門的任何一個普通工程師,都要樹立實施自動化測試的堅定決心,不能抱著試試看的態(tài)度。一般來說,一個這樣的軟件開發(fā)團隊可以優(yōu)先開展自動化測試工作:測試與開發(fā)人員比例合適,比如1:3到1:5,開發(fā)團隊總人數(shù)不少于10個。
(2)從公司的產(chǎn)品特征來說,一般開發(fā)產(chǎn)品的項目實施自動化測試要比純項目開發(fā)要優(yōu)越些。但決不是說做純項目開發(fā)不能實施自動化測試,只要軟件的開發(fā)流程、測試流程、缺陷管理流程規(guī)范了,自動化測試自然水到渠成。
(3)從測試人員個人素質和角色分配來說,除了有高層重視外,還應該有個具有良好自動化測試背景和豐富自動化測試經(jīng)驗的測試主管,不僅在技術方面,更重要的是在今后的自動化測試管理位置起著領導的作用。還要有幾個出色的開發(fā)經(jīng)驗良好的測試人員,當然也可以是開發(fā)工程師,負責編寫測試腳本、開發(fā)測試框架,還有一些測試執(zhí)行者,他們要對軟件產(chǎn)品業(yè)務邏輯相當熟練,配合測試設計者完成設計工作,并在執(zhí)行自動測試時,敏銳的分析和判斷軟件缺陷。
綜合分析上述三個條件,就可以決定是否推行自動化測試;但是為了減少實施風險,還要預測到其他潛在的風險,做好事先解決問題規(guī)避風險的思路。
4對實施自動化測試的風險分析
資金風險,雖然有些項目具備實施自動化測試的條件,但還是要引入自動化測試后組織結構調整等方面的成本估算是很必要的。
自動化測試對軟件功能類型的切入點的風險,開發(fā)的產(chǎn)品業(yè)務和功能是否需要自動化測試?包括白盒自動化測試、功能自動化測試和性能自動化測試。
軟件自動化測試切入方式的風險,一定要將自動化測試與手工測試結合起來使用,不合理的規(guī)劃會造成工作事倍功半。首先,對于自動化測試率的目標開始是20/80(20%的自動化測試和80%的手工測試),當這些目標都實現(xiàn)了,再將自動化測試率提高。
時間估算,在評估完前面幾項指標后,需要估算實施測試自動化的時間周期,以防止浪費不必要的時間,減少在人員、資金、資源投入上的無端消耗。雖然到測試自動化步入正軌以后,會起到事半功倍的效果,但前期的投入巨大,要全面考慮各種因素,明確實施計劃并按計劃嚴格執(zhí)行,才能最大限度降低風險。
工作流程變更風險,測試團隊乃至整個開發(fā)組織實施測試自動化,或多或少會因為適應測試工具的工作流程,帶來團隊的測試流程、開發(fā)流程的相應變更,而且,如果變更不善,會引起團隊成員的諸多抱怨情緒;所以應該盡量減少這種變更,并克服變更中可能存在的困難。
5什么條件下使用自動化測試
一般在這樣的條件下使用自動化測試:
(1)具有良好定義的測試策略和測試計劃(知道要測試什么,知道什么時候測試)。
(2)對于自動化測試你擁有一個能夠被識別的測試框架和候選者。
(3)能夠確保多個測試運行的構建策略。
(4)多平臺環(huán)境需要被測試。
(5)擁有運行測試的硬件。
(6)擁有關注在自動化過程上的資源。
如下條件下是宜采用手工測試:
(1)沒有標準的測試過程。
(2)沒有一個測試什么、什么時候測試的清晰的藍圖。
(3)在一個項目中,測試責任人是一個新人,并且還不是完全的理解方案的功能性和或者設計。
(4)整個項目在時間的壓力下。
(5)在團隊中沒有資源或者具有自動化測試技能的人。
6某軟件公司實施軟件測試自動化情況
某軟件公司在ITS、GIMIS、HPC等項目中實施了自動化測試,自動化測試比例較高(如ITS自動化測試占65%,手工測試占35%),經(jīng)過多年來自動化測試的實施,收效較好的原因主要有:
(1)在測試工作本身流程上、組織結構上根據(jù)實際情況進行了多次有效的調整與改進,甚至也包括需求、設計、開發(fā)、維護及配置管理等其他方面的進行了有機的配合。
(2)軟件開發(fā)團隊工作尤其注重以人為本,項目團隊一開始的組建就非常重視人員之間的配合、測試組織結構的設置,每個角色都要將自己的責任完全擔負起來,減少和解決設計、開發(fā)和測試之間的矛盾。
(3)項目管理部門對開展自動化測試的監(jiān)督和評估起到了積極的作用,也包括對項目測試的檢查和人員的考核。將自動化測試全面深入地貫徹到測試工作中。
該軟件公司自動化測試實施相對比較成功,但或多或少還有些問題需要繼續(xù)完善和改進,比如工具選擇問題,培訓到位問題,文檔完備問題,人員合理分配問題,腳本可維護度等等,如表2所示。
表1自動化測試分五個級別
表2某軟件公司測試自動化案例匯總表