摘要:在軟件測試日新月異發展的今天,自動化測試正在成為軟件測試領域里的一個非常矚目的趨勢和潮流,很多軟件公司正在或已經在企業測試團隊內部實施軟件自動化測試流程和框架,在軟件測試組織中,對測試過程中的知識進行有效的管理,是提升組織整體測試水平的關鍵。
關鍵詞:軟件測試 知識管理 評估
軟件產業雖然只有短短幾十年的歷程,但是其應用范圍已經從最初的科研專用轉變為滲透入我們社會中生產生活各個方面,起著非常重要的作用,我們人類社會對軟件的依賴正在越來越強,根據牛頓第三反作用力定律,那么軟件問題對我們的影響也在越來越大。如果軟件企業有意向實施自動化測試,那么應該具備什么樣的條件才可以引入自動化測試呢,才可以最大可能的減少引入風險,并能夠可持續性的開展下去呢?
1 對企業自身現狀的評估分析
第一,從企業規模上來說,沒有嚴格限制。無論公司大小,都需要提高測試效率,希望測試工作標準化,測試流程正規化,測試代碼重用化。所以第一要做到的,就是企業從高層CTO開始,直到測試部門的任何一個普通工程師,都要樹立實施自動化測試的堅定決心,不能抱著試試看的態度。一般來說,一個這樣的軟件開發團隊可以優先開展自動化測試工作:測試-開發人員比例合適,比如1:1到1:1.5;開發團隊總人數不少于10個。當然,如果你的公司只有三五個測試人員,要實施自動化測試絕非易事;不過可以先讓一個、兩個測試帶頭人首先試著開展這個工作,不斷總結、不斷提高,并向層層上司經常匯報工作的開展情況,再最終決定是否全面推行此事。
第二,從公司的產品特征來說,一般開發產品的公司實施自動化測試要比開發項目的公司要優越些。原因很簡單,就是測試維護成本和風險都小。產品軟件開發周期長,需求相對穩定,測試人員可以有比較充裕的時間去設計測試方案和開發測試腳本;而項目軟件面向單客戶,需求難以一次性統一,變更頻繁,對開發、維護測試腳本危害很大,出現問題時一般都以開發代碼為主,很難照顧到測試代碼。但決不是說做項目軟件的公司不能實施自動化測試,當前國內做項目的軟件公司居多,有很多正在推行CMM等級標準,這是好事情;只要軟件的開發流程、測試流程、缺陷管理流程規范了,推行自動化測試自然水到渠成。
第三,說說標準化的開發和管理流程。不管是CMM還是ISO,不管是開發流程、測試流程還是缺陷管理流程,這里不能一一闡述,可以參考RUP(Rational Unified Process,Rational 統一過程),可以參考很多業界文獻,我只說明一點,也是我們IT從業人員甚至任何從業人員一個很好的工作原則:①把你想做的寫下來(計劃管理);②按照你寫下來的去做(行為管理);③把做的事情記錄下來(報告管理);④出現的問題要設法解決(跟蹤管理)。
在測試流程里,這幾個要點都一一有所落實;如果你的軟件開發團隊據此開發軟件,那么完全具備實施自動化測試的條件。當然,也許一些公司的測試管理比較混亂,出了問題不知道誰負責,測試人員或開發人員整日碌碌卻無為,軟件缺陷不勝枚舉,那么筆者認為還是首先從管理角度來規范一下公司的開發流程和測試流程吧!
第四,從測試人員個人素質和角色分配來說,除了有一個CTO級人物做后盾外,還應該有個具有良好自動化測試背景和豐富自動化測試經驗的測試主管,不僅在技術方面,更重要的是在今后的自動化測試管理位置起著領導的作用。還要有幾個出色的開發經驗良好的測試人員,當然也可以是開發工程師,負責編寫測試腳本、開發測試框架;他們不需要對產品業務了解深刻,但要具有將軟件業務邏輯轉化成可測試邏輯的分析能力,屬于自動化測試設計者。還有一些測試執行者,他們要對軟件產品業務邏輯相當熟練,配合測試設計者完成設計工作,并在執行自動測試時,敏銳的分析和判斷軟件缺陷。如果你的測試團隊具有這樣的人員角色雛形,那么具備了實施自動化測試的又一條件。
綜合分析上述四個條件,企業可以決定是否推行自動化測試;但是為了減少實施風險,我們還要預測到其他潛在的風險,做好事先解決思路。
2 對企業推行自動化測試的風險分析
其一是資金風險。雖然你的公司具備實施自動化測試的條件,但如果企業效益不好,還是先扭虧為盈吧。一款正版的測試工具價格龐大,企業要首先考慮資金是否允許購買正版的測試工具軟件,所以進行測試工具的成本估算,以及引入自動化測試后組織結構調整等方面的成本估算是很必要的。如果你的公司處在如同前面所言的自動化測試試驗階段,可以使用試用版測試工具。當然具有實力的公司可以按照自身的工作流程自主開發測試工具,本文不考慮這種情況。
其二是自動化測試對軟件功能類型的切入點的風險。企業開發的產品業務和功能是否需要自動化測試,包括白盒自動化測試、功能自動化測試和性能自動化測試。比如一些公司開發單機版軟件,只需要做功能測試,那便不必考慮第三種;有的公司開發簡單界面之類的軟件,也可不必考慮第二種。也有可能公司開發的軟件特殊性很強,市場上根本沒有支持它的自動化測試工具,此時要另辟蹊徑。這種評估相當重要,要根據自身的產品功能特征來綜合評估。針對不同階段采用自動化測試的種種優勢。
其三是軟件自動化測試切入方式的風險。正如前面所言,一定要記住將自動化測試與手工測試結合起來使用,不合理的規劃會造成工作事倍功半。首先,對于自動化測試率的目標是10/90(10%的自動化測試和90%的手工測試)。當這些目標都實現了,可以將自動化測試的使用率提高。對于何種測試情況下引入自動化測試,何時依然采用手工測試,我們分開闡述。
一般這樣的測試條件下使用自動化測試:①項目沒有嚴格的時間壓力;②具有良好定義的測試策略和測試計劃(知道要測試什么,知道什么時候測試);③對于自動化測試你擁有一個能夠被識別的測試框架和候選者;④能夠確保多個測試運行的構建策略;⑤多平臺環境需要被測試;⑥擁有運行測試的硬件;⑦擁有關注在自動化過程上的資源。
如下條件下是宜采用手工測試:①沒有標準的測試過程;②沒有一個測試什么、什么時候測試的清晰的藍圖;③在一個項目中,你是一個新人,并且還不是完全的理解方案的功能性和或者設計;④你或者整個項目在時間的壓力下;⑤在團隊中沒有資源或者具有自動化測試技能的人;⑥沒有硬件。
其四是企業軟件的開發語言風險。當前業界流行的測試工具有幾十種,相同功能的測試工具所支持的
其五還要做時間估算。在評估完前面幾項指標后,需要估算實施測試自動化的時間周期,以防止浪費不必要的時間,減少在人員、資金、資源投入上的無端消耗。雖然到測試自動化步入正軌以后,會起到事半功倍的效果,但前期的投入巨大,要全面考慮各種因素,明確實施計劃并按計劃嚴格執行,才能最大限度降低風險。
其六是工作流程變更風險。測試團隊乃至整個開發組織實施測試自動化,或多或少會因為適應測試工具的工作流程,帶來團隊的測試流程、開發流程的相應變更,而且,如果變更不善,會引起團隊成員的諸多抱怨情緒;所以應該盡量減少這種變更,并克服變更中可能存在的困難。
其七是人員培訓與變更風險。簡單而言,就是測試團隊人員的培訓具有風險性,例如每個角色的定位是否準確,各角色人員對培訓技能的掌握程度是否滿意,尤其實施途中如果發生人員變更等風險,都要事先做出預測和相應的處理方案。
一個企業或軟件團隊實施測試自動化,會有來自方方面面的壓力和風險,但是憑借團隊成員的聰明才智和公司高層的大力支持,事先做好評估,做好風險預測,那么可以告訴你一個激動人心的消息:你的團隊成功引入了測試自動化!有了測試自動化,我們即可享受它帶來的超凡價值和無窮魅力:我們的測試工作變得更簡單、更有效。