王定軍,費春勇
(中博信息技術研究院有限公司,南京 210012)
基于大型復雜系統自動化測試平臺的設計與應用
王定軍,費春勇
(中博信息技術研究院有限公司,南京 210012)
軟件測試日益受到重視,自動化測試也成為一種趨勢。文章介紹了大型復雜系統自動化測試平臺的設計,以及引入自動化測試平臺后,衍生出來的多種應用。
自動化測試;大型系統;軟件測試;回歸測試;系統運維
隨著我國信息業的不斷發展,大型企業的軟件系統變得規模巨大、業務日漸復雜,企業對軟件功能、性能的要求也越來越高。越來越多的企業認識到軟件測試對企業信息化的重要性,對軟件的質量要求也越來越高。
自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。用機器替代人工執行重復的手動測試。是軟件測試的重要組成部分。為了快速支持更短的上線周期,快速應對系統的變更和錯誤,提高測試團隊的工作效率,構建自動化測試平臺進行自動化回歸測試成為企業信息化建設的必由之路。
大型復雜系統,規模巨大、數據海量、業務邏輯復雜,采用手工測試覆蓋率遠達不到要求。因此我們搭建了可以動態擴展的自動化測試平臺,用于對軟件版本的回歸測試。在自動化測試平臺的實際使用中,還將應用范圍進行了拓展。將自動化測試平臺應用延伸到了生產環境的監控、自動化運維等領域。
目前自動化測試工具主要分為三大類:
(1)國外商業化自動化測試軟件。這類軟件一般功能強大,提供了豐富的插件和完善的第三方接口,售后服務完善,應用范圍廣泛,但是價格一般比較昂貴。主要包括:HP QTP、IBM Rational Functional Tester等。
(2)開源或免費自動化測試軟件。這類軟件一般專注于某一領域,大部分可以免費使用。但是對使用者技術要求一般都比較高,軟件的穩定性和易用性一般要低于商業軟件。主要包括:Selenium、Watir、AutoIt等。例如:Selenium和Watir專注于Web測試,AutoIt專注于Windows程序。
(3)國內商業化自動化測試軟件。隨著市場對自動化測試工具的需求量越來越大,國內很多企業也開發出來國產化的自動化測試工具。考慮到開發成本,這類軟件一般應用于特定領域或場景。目前,市場上種類較多,主要支持Web應用。由于產品化程度不高,一般都支持定制化開發功能。
傳統的自動化測試工具存在以下問題:自動化程度不高,不能實現無人值守;測試任務的組織、管理性較差;任務執行后的結果分析不靈活;未與被測環境進行關聯,部署被測環境耗時耗力。
針對傳統自動化測試的問題,我們對自動化測試平臺提出了以下要求:
(1)支持Java Web、Web Service等應用的自動化測試。
(2)自動化測試腳本組件化,復用便捷。
(3)自動化測試腳本、業務數據分離。
(4)自動化測試腳本在統一的服務器集中管理。
(5)支持無人值守的批量執行自動化測試用例。
(6)支持測試用例執行狀態的短信、郵件通知。
(7)支持測試缺陷的統一管理。
(8)支持靈活多樣的分析報表。
(9)支持系統的自動化部署。
4.1自動化測試平臺
平臺如圖1所示的自動化測試平臺架構。自動化測試平臺主要由兩部分組成,包括:自動化測試、系統自動化部署。司令機和測試士兵機、部署士兵機通過Socket進行通信。
自動化測試,主要包括兩個部分:司令機、自動化測試士兵機。自動化部署,主要包括兩個部分:司令機、自動化部署士兵機。
司令機、測試士兵機制作成標準虛擬機,可以實時進行橫向或縱向擴展。部署士兵機可以由司令機與生產系統或測試系統服務器建立互信后,自動部署。

圖1 自動化測試平臺架構
4.2系統功能
自動化測試平臺中執行自動化功能測試的單位是任務,一個任務由多個測試用例組成,一個測試用例由多個測試組件、測試數據組成如圖2所示。

圖2 任務、測試集、測試組件、測試數據對應關系圖
4.2.1司令機
主要提供了測試組件管理、測試用例管理、任務管理、資源管理、策略管理、統計分析、日志查詢等功能。
測試組件管理:對士兵機上傳到司令機中的測試組件進行管理。
測試用例管理:將測試組件添加測試數據后,組合成測試用例,并添加用例所屬系統、責任人等信息。
任務管理:將多個測試用例關聯到對應的任務。設置任務的短信提醒策略、執行策略、責任人等信息。并支持手動觸發任務執行。
資源管理:主要管理測試士兵機、短信和郵件發送服務器。
策略管理:系統提供了任務執行策略、短信和郵件發送策略。定時任務可以按照秒、天、周、月、年設置策略進行定時執行。發送策略支持按照任務和測試用例執行狀態(成功/失敗)發送短信和郵件。
日志查詢:主要包括任務、測試集執行日志,短信發送日志等。
統計分析:分時間段,按業務系統進行各類統計、分析。
待辦任務:分時間段、業務系統展示測試問題,由責任人判斷出錯原因。
指令發送:根據任務管理配置,向客戶端發送測試任務執行指令。
4.2.2測試士兵機
主要提供測試組件編制、任務執行、保存組件到司令機等功能。
編制組件:支持編制或錄制腳本,支持檢查點。上傳組件:將組件上傳到司令機。
執行任務:接受司令機發送的指令,執行任務。
4.2.3部署士兵機
編制部署流程:可以組合發布流程步驟,編制每個步驟的發布腳本和發布條件。
上傳發布流程:將部署流程數據上傳到司令機。
執行部署任務:接受司令機發送的指令,執行部署流程。
4.3開發流程
自動化測試開發流程,如圖3所示。
(1)在測試士兵機中編制基本的業務組件;
(2)業務組件保存司令機中;
(3)在司令機中,業務組件輸入參數后,組合成測試用例;
(4)在司令機中,測試用例可以組合成任務;
(5)司令機給測試士兵機發送指令,由測試士兵機執行任務;
(6)士兵機將測試結果反饋給司令機。
4.4自動化腳本編制原則
經過不斷總結,在編制業務組件過程中,形成了自動化測試腳本編制原則。
C/S架構,一般情況下將每個功能作為一個業務組件。
B/S架構,一般情況下將每個頁面劃分一個業務組件。對于業務邏輯比較復雜的頁面,可以將一個頁面拆分為多個業務組件。
4.5工作流程
自動化測試平臺工作流程,如圖4所示。
(1)ITSM系統通過接口向自動化測試平臺發送版本發布需求;
(2)司令機發送測試系統部署、自動化測試執行指令;
(3)測試系統(部署士兵機)自動化部署系統新版本;
(4)測試士兵機對測試系統進行部署驗證;
(5)測試士兵機對測試系統進行自動化測試;
(6)司令機發送生產系統部署指令;
(7)生產系統(部署士兵機)自動化部署新版本;
(8)測試士兵機對生產系統進行部署驗證。

圖3 自動化測試開發流程

圖4 自動化測試平臺業務流程
5.1回歸測試
采用自動化測試平臺的基本應用是進行版本的回歸測試。
提高了測試效率,縮短測試時間。自動化測試時間比人工測試減少。自動化測試可以和手工測試同事執行,也可以在非工作執行。
釋放測試人力。一次腳本錄制,多次自動測試,讓測試人員從繁雜的受理工單中解放出來,降低了測試的勞動強度。
提高回歸測試用例覆蓋率。在測試時間窗口較短的情況下,可回歸更多的測試用例。
5.2生產環境的自動化監控
一般監控側重參數監控,例如:CPU、內存等。一般監控系統整體出現問題。生產環境晨檢一般由運維人員在上班前1~2h,手工登錄各業務系統進行各功能點的操作,發現是否存在系統功能異常。可以發現一般監控軟件不能捕捉到的局部問題。是一般監控的有效補充。
通過自動化測試平臺,我們實現對人工晨檢的替代,用自動化腳本模擬運維人員手工操作。極大提高檢查效率、范圍。將工作日上班前一次性檢查變為7*24小時對生產機監控。發現異常自動對系統界面截圖,并通過短信和郵件實時告警,第一時間通知責任人。記錄頁面加載性能,超過閾值自動進行性能預警。
5.3自動化運維
運維工作中,重復性工作占用了大量人力資源。由于軟件一般由第三方開發,運維團隊很難通過編程開發出相應的自動化工具。采用自動化測試平臺,可以輕松解決這類困難。我們一般選擇以下三類工作進行自動化測試:
(1)替代復雜運維工作。日常運維過程中,大型復雜系統的權限分配分散在各業務子系統中,一般只能通過各業務子系統權限管理員手工來完成。由于涉及子系統眾多,邏輯復雜,工作量巨大,容易出錯。通過自動化測試平臺我們替換人工操作,將知識體系固化在測試平臺中,降低了人員流動對運維的影響。
(2)替代高頻運維工作。日常運維過程中,經常有用戶忘記密碼,或者多次輸入密碼后賬戶鎖定。用戶基數較大的情況下,每天有相當多數量的該類服務請求。自動化測試平臺采用通過自動方式,可以大大減輕運維壓力。
(3)替代非工作時間運維工作。系統版本升級一般要求在深夜,例如:SAP ERP傳輸請求要求在每天22:00之后,由運維人員進行操作。夜間加班操作,一方面容易出錯,也影響運維人員第二天工作效率。由自動化測試平臺根據發布信息自動進行SAP版本更新,有效提高了工作效率。
主要參考文獻
[1]關春銀,王林,周暉,等.Selenium測試實踐[M].北京:電子工業出版社,2011.
[2]張斌.精通QTP與自動化測試框架設計實戰[M].北京:人民郵電出版社,2010.
10.3969/j.issn.1673-0194.2015.21.096
TP311.5
A
1673-0194(2015)21-0184-04
2015-07-07