隨著測試流程的不斷規范以及軟件測試技術的進一步細化,軟件測試自動化已經日益成為一支不可忽視的力量。能否借助于這支外在力量以及如何借助于這支力量來規范企業測試流程、提高特定測試活動的效率,正是本 期所要討論的話題。

  目前,軟件測試自動化的研究領域主要集中在軟件測試流程的自動化管理以及動態測試的自動化(如單元測試、功能測試以及性能測試方面)。在這兩個領域,與手工測試相比,測試自動化的優勢是明顯的。首先自動化測試可以提高測試效率,使測試人員更加專注于新的測試模塊的建立和開發,從而提高測試覆蓋率; 其次,自動化測試更便于測試資產的數字化管理,使得測試資產在整個測試生命周期內可以得到復用,這個特點在功能測試和回歸測試中尤其具有意義; 此外,測試流程自動化管理可以使機構的測試活動開展更加過程化,這很符合CMMI過程改進的思想。根據Oppenheimer Funds的調查,在2001年前后的3年中,全球范圍內由于采用了測試自動化手段所實現的投資回報率高達1500%。


  方案選型六大原則

  然而存在優勢是否一定意味著選擇自動化測試方案都能為企業帶來效益回報呢?也不盡然,任何一種產品化的測試自動化工具,都可能存在與某具體項目不甚貼切的地方。再加上,在企業內部通常存在許多不同種類的應用平臺,應用開發技術也不盡相同,甚至在一個應用中可能跨越了多種平臺; 或同一應用的不同版本之間存在技術差異。所以選擇軟件測試自動化方案必須深刻理解這一選擇可能帶來的變動、來自諸多方面的風險和成本開銷。

  以下筆者給出企業用戶進行軟件測試自動化方案選型的參考性原則,這些原則是從筆者實際工作中凝練而成的,它包括以下六個方面的建議:

  選擇盡可能少的自動化產品覆蓋盡可能多的平臺,以降低產品投資和團隊的學習成本;

  測試流程管理自動化通常應該優先考慮,以滿足為企業測試團隊提供流程管理支持的需求;

 

  在投資有限的情況下,性能測試自動化產品將優先于功能測試自動化被考慮;

  在考慮產品性價比的同時,應充分關注產品的支持服務和售后服務的完善性;

  盡量選擇趨于主流的產品,以便通過行業間交流甚至網絡等方式獲得更為廣泛的經驗和支持;

 

  應對測試自動化方案的可擴展性提出要求,以滿足企業不斷發展的技術和業務需求。


  實戰模擬

 

  以下筆者結合一個典型的企業客戶,剖析其適用的軟件測試自動化方案選型過程。

 

  1.公司背景介紹

  A公司是一家大型保險公司,擁有近20個城市的分公司,并在其中5個城市建立了IT支持中心。平均每年的上線應用數量在20個左右(新業務系統和原有業務系統的主要版本發布)。目前A公司的專職測試團隊人數不足30人,而且測試團隊的測試人員技能參差不齊,目前測試只是作為項目上線前的一道工序而已。在測試團隊內部也幾乎沒有自動化的手段,主要依靠手工測試。由于已上線應用系統的問題,開發團隊必須分出一部分資源去維護和修復上線應用,而同時測試團隊的測試成果和效率卻無法和這些應用質量掛鉤,也更無從談起對軟件質量的控制。所以,A公司決定在軟件質量和測試方面進行投入,他們考慮以下幾方面:

 

  引進軟件測試流程管理的自動化,提高軟件測試過程的管理水平,使軟件測試和軟件開發一樣可被評估、被衡量。

 

  實現性能測試自動化,所有應用上線之前必須有應用性能風險評估報告和相關部門的確認

  逐步實現功能測試的自動化,在目前人員配置的情況下,把部分手工測試變成自動化測試,提高測試可信度,降低人為錯誤。


  通過軟件測試自動化,管理軟件測試中的案例、缺陷、報告等資產,進一步提升軟件測試的效率并建立測試基礎庫。


  在規劃中,將來的2~3年內使所有的應用系統上線都必須有數字化的測試數據作為依據。

  2.公司應用系統的情況

 

  由于保險公司的業務種類繁多,同時在經過了幾十年的經營后,公司內的應用系統從早期的終端方式到現代的J2EE和.NET等應有盡有,魚龍混雜。IT部門已經建立的3年規劃,即在未來的3年時間內將所有終端和C/S方式的應用轉換成B/S架構,但當前仍然需要對這些舊應用系統進行維護,以保證業務的順利進行。對于開發部門來說,目前新應用開發基本上已經以B/S架構為主,主要是基于J2EE架構的Web HTTP應用和部分Window.NET Form的應用。


  3.公司軟件測試現狀

 

  企業機構在做測試自動化選型時一定要考慮清楚企業內部哪些部分可以實施自動化、哪些部分暫不實施自動化、哪些部分僅在某幾個項目做自動化試點。切忌匆忙上馬或盲目否定,缺乏實事求是的理性思考。

 

  測試部門目前僅負責系統測試和對用戶驗證測試進行管理,對于之前的單元測試和集成測試主要由開發團隊中劃分出的一部分臨時測試人員完成。由于缺乏監測手段,測試部門也無法收集和確定集成測試和單元測試的完成情況,在整個軟件測試過程中,業務需求是由開發部門通過Rational RequisitePro進行管理,但測試需求目前尚沒有提出要求,測試案例主要通過在公司公用的文件服務器中的目錄管理方式管理,對測試中缺陷流程等管理主要依靠郵件的流轉進行處理。目前90%以上的測試是通過Excel和Word等測試案例文檔來完成,測試人員對軟件測試自動化的認識僅停留在“記錄+回放”的認識上。

 

  4.可供選擇的方案

 

  方案A: A公司可以采用美科利(Mercury)公司產品為主的軟件測試自動化方案。

  依照原先的郵件流轉過程配置TestDirector缺陷管理流程,為每個保險業務的開發小組和測試團隊分配相應的用戶許可證,取消原有郵件方式。


  部署Mercury Quick Test Professional,以便完成應用程序相關功能測試。

  部署Mercury Load-Runner。從測試團隊中分化出專職的性能測試自動化工程師和小組,和業務部門協調,建立A公司應用系統上線性能指標,通過LoadRunner給出測試指標。

 

  建議A公司成立專門的質量控制部門,對TestDirector中的數據定期進行分析,建立相關質量模型,以便于企業量化管理和過程改進。

  方案B: A公司也可以采用IBM Rational產品為主的軟件測試自動化方案。