王定軍,費春勇
(中博信息技術(shù)研究院有限公司,南京 210012)
基于大型復(fù)雜系統(tǒng)自動化測試平臺的設(shè)計與應(yīng)用
王定軍,費春勇
(中博信息技術(shù)研究院有限公司,南京 210012)
軟件測試日益受到重視,自動化測試也成為一種趨勢。文章介紹了大型復(fù)雜系統(tǒng)自動化測試平臺的設(shè)計,以及引入自動化測試平臺后,衍生出來的多種應(yīng)用。
自動化測試;大型系統(tǒng);軟件測試;回歸測試;系統(tǒng)運維
隨著我國信息業(yè)的不斷發(fā)展,大型企業(yè)的軟件系統(tǒng)變得規(guī)模巨大、業(yè)務(wù)日漸復(fù)雜,企業(yè)對軟件功能、性能的要求也越來越高。越來越多的企業(yè)認識到軟件測試對企業(yè)信息化的重要性,對軟件的質(zhì)量要求也越來越高。
自動化測試是把以人為驅(qū)動的測試行為轉(zhuǎn)化為機器執(zhí)行的一種過程。用機器替代人工執(zhí)行重復(fù)的手動測試。是軟件測試的重要組成部分。為了快速支持更短的上線周期,快速應(yīng)對系統(tǒng)的變更和錯誤,提高測試團隊的工作效率,構(gòu)建自動化測試平臺進行自動化回歸測試成為企業(yè)信息化建設(shè)的必由之路。
大型復(fù)雜系統(tǒng),規(guī)模巨大、數(shù)據(jù)海量、業(yè)務(wù)邏輯復(fù)雜,采用手工測試覆蓋率遠達不到要求。因此我們搭建了可以動態(tài)擴展的自動化測試平臺,用于對軟件版本的回歸測試。在自動化測試平臺的實際使用中,還將應(yīng)用范圍進行了拓展。將自動化測試平臺應(yīng)用延伸到了生產(chǎn)環(huán)境的監(jiān)控、自動化運維等領(lǐng)域。
目前自動化測試工具主要分為三大類:
(1)國外商業(yè)化自動化測試軟件。這類軟件一般功能強大,提供了豐富的插件和完善的第三方接口,售后服務(wù)完善,應(yīng)用范圍廣泛,但是價格一般比較昂貴。主要包括:HP QTP、IBM Rational Functional Tester等。
(2)開源或免費自動化測試軟件。這類軟件一般專注于某一領(lǐng)域,大部分可以免費使用。但是對使用者技術(shù)要求一般都比較高,軟件的穩(wěn)定性和易用性一般要低于商業(yè)軟件。主要包括:Selenium、Watir、AutoIt等。例如:Selenium和Watir專注于Web測試,AutoIt專注于Windows程序。
(3)國內(nèi)商業(yè)化自動化測試軟件。隨著市場對自動化測試工具的需求量越來越大,國內(nèi)很多企業(yè)也開發(fā)出來國產(chǎn)化的自動化測試工具??紤]到開發(fā)成本,這類軟件一般應(yīng)用于特定領(lǐng)域或場景。目前,市場上種類較多,主要支持Web應(yīng)用。由于產(chǎn)品化程度不高,一般都支持定制化開發(fā)功能。
傳統(tǒng)的自動化測試工具存在以下問題:自動化程度不高,不能實現(xiàn)無人值守;測試任務(wù)的組織、管理性較差;任務(wù)執(zhí)行后的結(jié)果分析不靈活;未與被測環(huán)境進行關(guān)聯(lián),部署被測環(huán)境耗時耗力。
針對傳統(tǒng)自動化測試的問題,我們對自動化測試平臺提出了以下要求:
(1)支持Java Web、Web Service等應(yīng)用的自動化測試。
(2)自動化測試腳本組件化,復(fù)用便捷。
(3)自動化測試腳本、業(yè)務(wù)數(shù)據(jù)分離。
(4)自動化測試腳本在統(tǒng)一的服務(wù)器集中管理。
(5)支持無人值守的批量執(zhí)行自動化測試用例。
(6)支持測試用例執(zhí)行狀態(tài)的短信、郵件通知。
(7)支持測試缺陷的統(tǒng)一管理。
(8)支持靈活多樣的分析報表。
(9)支持系統(tǒng)的自動化部署。
4.1自動化測試平臺
平臺如圖1所示的自動化測試平臺架構(gòu)。自動化測試平臺主要由兩部分組成,包括:自動化測試、系統(tǒng)自動化部署。司令機和測試士兵機、部署士兵機通過Socket進行通信。
自動化測試,主要包括兩個部分:司令機、自動化測試士兵機。自動化部署,主要包括兩個部分:司令機、自動化部署士兵機。
司令機、測試士兵機制作成標準虛擬機,可以實時進行橫向或縱向擴展。部署士兵機可以由司令機與生產(chǎn)系統(tǒng)或測試系統(tǒng)服務(wù)器建立互信后,自動部署。
圖1 自動化測試平臺架構(gòu)
4.2系統(tǒng)功能
自動化測試平臺中執(zhí)行自動化功能測試的單位是任務(wù),一個任務(wù)由多個測試用例組成,一個測試用例由多個測試組件、測試數(shù)據(jù)組成如圖2所示。
圖2 任務(wù)、測試集、測試組件、測試數(shù)據(jù)對應(yīng)關(guān)系圖
4.2.1司令機
主要提供了測試組件管理、測試用例管理、任務(wù)管理、資源管理、策略管理、統(tǒng)計分析、日志查詢等功能。
測試組件管理:對士兵機上傳到司令機中的測試組件進行管理。
測試用例管理:將測試組件添加測試數(shù)據(jù)后,組合成測試用例,并添加用例所屬系統(tǒng)、責(zé)任人等信息。
任務(wù)管理:將多個測試用例關(guān)聯(lián)到對應(yīng)的任務(wù)。設(shè)置任務(wù)的短信提醒策略、執(zhí)行策略、責(zé)任人等信息。并支持手動觸發(fā)任務(wù)執(zhí)行。
資源管理:主要管理測試士兵機、短信和郵件發(fā)送服務(wù)器。
策略管理:系統(tǒng)提供了任務(wù)執(zhí)行策略、短信和郵件發(fā)送策略。定時任務(wù)可以按照秒、天、周、月、年設(shè)置策略進行定時執(zhí)行。發(fā)送策略支持按照任務(wù)和測試用例執(zhí)行狀態(tài)(成功/失?。┌l(fā)送短信和郵件。
日志查詢:主要包括任務(wù)、測試集執(zhí)行日志,短信發(fā)送日志等。
統(tǒng)計分析:分時間段,按業(yè)務(wù)系統(tǒng)進行各類統(tǒng)計、分析。
待辦任務(wù):分時間段、業(yè)務(wù)系統(tǒng)展示測試問題,由責(zé)任人判斷出錯原因。
指令發(fā)送:根據(jù)任務(wù)管理配置,向客戶端發(fā)送測試任務(wù)執(zhí)行指令。
4.2.2測試士兵機
主要提供測試組件編制、任務(wù)執(zhí)行、保存組件到司令機等功能。
編制組件:支持編制或錄制腳本,支持檢查點。上傳組件:將組件上傳到司令機。
執(zhí)行任務(wù):接受司令機發(fā)送的指令,執(zhí)行任務(wù)。
4.2.3部署士兵機
編制部署流程:可以組合發(fā)布流程步驟,編制每個步驟的發(fā)布腳本和發(fā)布條件。
上傳發(fā)布流程:將部署流程數(shù)據(jù)上傳到司令機。
執(zhí)行部署任務(wù):接受司令機發(fā)送的指令,執(zhí)行部署流程。
4.3開發(fā)流程
自動化測試開發(fā)流程,如圖3所示。
(1)在測試士兵機中編制基本的業(yè)務(wù)組件;
(2)業(yè)務(wù)組件保存司令機中;
(3)在司令機中,業(yè)務(wù)組件輸入?yún)?shù)后,組合成測試用例;
(4)在司令機中,測試用例可以組合成任務(wù);
(5)司令機給測試士兵機發(fā)送指令,由測試士兵機執(zhí)行任務(wù);
(6)士兵機將測試結(jié)果反饋給司令機。
4.4自動化腳本編制原則
經(jīng)過不斷總結(jié),在編制業(yè)務(wù)組件過程中,形成了自動化測試腳本編制原則。
C/S架構(gòu),一般情況下將每個功能作為一個業(yè)務(wù)組件。
B/S架構(gòu),一般情況下將每個頁面劃分一個業(yè)務(wù)組件。對于業(yè)務(wù)邏輯比較復(fù)雜的頁面,可以將一個頁面拆分為多個業(yè)務(wù)組件。
4.5工作流程
自動化測試平臺工作流程,如圖4所示。
(1)ITSM系統(tǒng)通過接口向自動化測試平臺發(fā)送版本發(fā)布需求;
(2)司令機發(fā)送測試系統(tǒng)部署、自動化測試執(zhí)行指令;
(3)測試系統(tǒng)(部署士兵機)自動化部署系統(tǒng)新版本;
(4)測試士兵機對測試系統(tǒng)進行部署驗證;
(5)測試士兵機對測試系統(tǒng)進行自動化測試;
(6)司令機發(fā)送生產(chǎn)系統(tǒng)部署指令;
(7)生產(chǎn)系統(tǒng)(部署士兵機)自動化部署新版本;
(8)測試士兵機對生產(chǎn)系統(tǒng)進行部署驗證。
圖3 自動化測試開發(fā)流程
圖4 自動化測試平臺業(yè)務(wù)流程
5.1回歸測試
采用自動化測試平臺的基本應(yīng)用是進行版本的回歸測試。
提高了測試效率,縮短測試時間。自動化測試時間比人工測試減少。自動化測試可以和手工測試同事執(zhí)行,也可以在非工作執(zhí)行。
釋放測試人力。一次腳本錄制,多次自動測試,讓測試人員從繁雜的受理工單中解放出來,降低了測試的勞動強度。
提高回歸測試用例覆蓋率。在測試時間窗口較短的情況下,可回歸更多的測試用例。
5.2生產(chǎn)環(huán)境的自動化監(jiān)控
一般監(jiān)控側(cè)重參數(shù)監(jiān)控,例如:CPU、內(nèi)存等。一般監(jiān)控系統(tǒng)整體出現(xiàn)問題。生產(chǎn)環(huán)境晨檢一般由運維人員在上班前1~2h,手工登錄各業(yè)務(wù)系統(tǒng)進行各功能點的操作,發(fā)現(xiàn)是否存在系統(tǒng)功能異常。可以發(fā)現(xiàn)一般監(jiān)控軟件不能捕捉到的局部問題。是一般監(jiān)控的有效補充。
通過自動化測試平臺,我們實現(xiàn)對人工晨檢的替代,用自動化腳本模擬運維人員手工操作。極大提高檢查效率、范圍。將工作日上班前一次性檢查變?yōu)?*24小時對生產(chǎn)機監(jiān)控。發(fā)現(xiàn)異常自動對系統(tǒng)界面截圖,并通過短信和郵件實時告警,第一時間通知責(zé)任人。記錄頁面加載性能,超過閾值自動進行性能預(yù)警。
5.3自動化運維
運維工作中,重復(fù)性工作占用了大量人力資源。由于軟件一般由第三方開發(fā),運維團隊很難通過編程開發(fā)出相應(yīng)的自動化工具。采用自動化測試平臺,可以輕松解決這類困難。我們一般選擇以下三類工作進行自動化測試:
(1)替代復(fù)雜運維工作。日常運維過程中,大型復(fù)雜系統(tǒng)的權(quán)限分配分散在各業(yè)務(wù)子系統(tǒng)中,一般只能通過各業(yè)務(wù)子系統(tǒng)權(quán)限管理員手工來完成。由于涉及子系統(tǒng)眾多,邏輯復(fù)雜,工作量巨大,容易出錯。通過自動化測試平臺我們替換人工操作,將知識體系固化在測試平臺中,降低了人員流動對運維的影響。
(2)替代高頻運維工作。日常運維過程中,經(jīng)常有用戶忘記密碼,或者多次輸入密碼后賬戶鎖定。用戶基數(shù)較大的情況下,每天有相當(dāng)多數(shù)量的該類服務(wù)請求。自動化測試平臺采用通過自動方式,可以大大減輕運維壓力。
(3)替代非工作時間運維工作。系統(tǒng)版本升級一般要求在深夜,例如:SAP ERP傳輸請求要求在每天22:00之后,由運維人員進行操作。夜間加班操作,一方面容易出錯,也影響運維人員第二天工作效率。由自動化測試平臺根據(jù)發(fā)布信息自動進行SAP版本更新,有效提高了工作效率。
主要參考文獻
[1]關(guān)春銀,王林,周暉,等.Selenium測試實踐[M].北京:電子工業(yè)出版社,2011.
[2]張斌.精通QTP與自動化測試框架設(shè)計實戰(zhàn)[M].北京:人民郵電出版社,2010.
10.3969/j.issn.1673-0194.2015.21.096
TP311.5
A
1673-0194(2015)21-0184-04
2015-07-07