劉峰耀 張國慶
(英大泰和財產(chǎn)保險股份有限公司 北京市 100005)
自1985年第一款名為AutoTester 自動化測試工具出現(xiàn)到現(xiàn)在,已經(jīng)有35年的歷程,而自動化測試工具也在隨著軟件開發(fā)時代的變遷而發(fā)生著變化。從具備簡單錄制回放功能的線性測試工具,到具備數(shù)據(jù)驅(qū)動的框架階段[1],再到現(xiàn)在以關鍵字驅(qū)動[2]以及更先進的智能驅(qū)動框架,自動化測試工具的演進速度越來越快。特別是隨著移動互聯(lián)技術(shù)的發(fā)展以及企業(yè)線上化轉(zhuǎn)型步伐的加快,對軟件迭代更新的頻率要求越來越高,軟件開發(fā)模型開始從瀑布模型向敏捷開發(fā)模型轉(zhuǎn)變,傳統(tǒng)的手工測試或者較為落后的自動化測試工具,很難應付軟件開發(fā)的快速迭代和變更。在此情況下,研發(fā)針對保險行業(yè)的自動化測試平臺,構(gòu)建適應保險行業(yè)的自動化測試體系,是當前大部分保險公司運維模式改進的方向。
從測試環(huán)節(jié)上分,軟件測試包含了單元測試、集成測試、性能測試以及回歸測試等環(huán)節(jié);從測試對象上分,包含了基于界面的功能提供型系統(tǒng)、基于接口的服務提供型系統(tǒng)和基于移動技術(shù)的APP系統(tǒng)。傳統(tǒng)意義上的自動化測試工具,主要是針對基于界面的UI自動化測試而研發(fā),未考慮對于接口或者APP的自動化測試等場景。同時,測試環(huán)節(jié)主要是應用在回歸測試上,隨著基于Devops 運維模式的流行和敏捷開發(fā)模式的應用,測試也需要“敏捷化”,各個測試環(huán)節(jié)都需要更高的執(zhí)行效率和響應速度,也需要采用自動化測試。
因此,保險自動化測試管理平臺的建設重點在以下兩個方向展開:一是基于“立體式”全方位自動化測試的理念,構(gòu)建自動化測試“一站式”解決方案,把UI、接口和APP 自動化測試集成在一起,在一個平臺上同時進行UI、接口和APP 自動化測試;二是除了在上線前的模擬生產(chǎn)測試中應用全流程自動化測試以外,需要逐步將自動化測試應用到集成測試、單元測試等環(huán)節(jié),真正達到“敏捷測試”的速度要求。而實現(xiàn)自動化測試的全環(huán)節(jié)使用,需要自動化測試平臺具備足夠的自動或智能特性,能夠自動生成自動化測試用例和腳本,減少測試人員手工編寫測試腳本所耗費的學習成本和使用成本。
根據(jù)對項目整體需求的分析,確定自動化測試平臺主要包括5類功能需求。平臺整體功能結(jié)構(gòu)如圖1 所示。
(1)系統(tǒng)管理:包括用戶管理、角色管理、項目管理、客戶端管理以及監(jiān)控管理等功能。通過用戶管理實現(xiàn)對用戶的增加、刪除、修改、查詢、導入、導出和解鎖功能;通過角色管理提供用戶角色權(quán)限的設置;通過項目管理提供被測系統(tǒng)所屬項目的管理;通過客戶端管理提供客戶端的查詢、添加、修改、刪除;通過監(jiān)控資源功能管理各個自動化執(zhí)行機和各個執(zhí)行機的權(quán)限。

圖1:自動化測試平臺功能結(jié)構(gòu)圖

圖2:自動化測試平臺應用架構(gòu)圖

圖3:用例分層設計結(jié)構(gòu)圖

圖4:自動生成用例邏輯圖
(2)測試管理:用例管理提供自動化用例的查詢、添加、修改、復制用例、發(fā)布等功能;用例模塊提供項目的模塊化管理,能夠?qū)Ω鱾€項目進行模塊化劃分,能夠?qū)⒚總€項目分為多個模塊方便用例管理;通過協(xié)議模板實現(xiàn)接口測試的協(xié)議模板管理;用例集合用于將多個用例進行組合使其成為一個完整的案例,可進行測試用例的復用;公共參數(shù)用于用管理所有項目或?qū)椖恐须S時可調(diào)用的固定值,提升腳本維護效率。
(3)測試執(zhí)行:任務調(diào)度提供調(diào)度設置、查詢、修改、刪除和執(zhí)行功能;任務執(zhí)行提供查看自動化調(diào)度執(zhí)行結(jié)果的查看和管理;用例明細提供單條自動化調(diào)度執(zhí)行結(jié)果明細和調(diào)試,用于查看單個任務執(zhí)行詳細結(jié)果、執(zhí)行步驟并進行失敗用例的調(diào)試,方便自動化測試人員定位執(zhí)行中遇到錯誤并進行調(diào)試。
(4)質(zhì)量管理:版本管理提供測試版本的登記;版本看板提供版本查詢及視圖功能,用于查看各個版本中用例執(zhí)行統(tǒng)計的執(zhí)行情況,并可自動生成測試報告。
(5)監(jiān)控管理:定時任務監(jiān)控用于查看各個調(diào)度的定時任務配置情況,方便系統(tǒng)管理員對發(fā)生錯誤的定時任務查看日志,快速定位問題;服務監(jiān)控方便系統(tǒng)管理員查看自動化測試平臺服務器運行狀態(tài),方便服務器的管理。
在進行自動化測試平臺的整體設計時,充分考慮被測系統(tǒng)以及平臺使用者的便捷性,采用前后端分離的總體架構(gòu),考慮到平臺的可擴展性和可維護性,主要包括以下幾個方面:
(1)采用Spring boot 框架嵌入式Tomcat,結(jié)合測試過程與各過程中的操作環(huán)節(jié),基于Selenium 基礎工具的基本原理,進行測試過程的自動化設計,并實現(xiàn)自動化測試過程中腳本編寫、腳本執(zhí)行的過程[3]。
(2)采用分層自動化框架的做法,每層之間都是獨立的,互不影響,又可以互相靈活組裝后,形成一個新的測試流程或理測試場景。
(3)采用成熟的Mysql 作為底層數(shù)據(jù)庫,實現(xiàn)數(shù)據(jù)的存取及其數(shù)據(jù)管理。
自動化測試平臺采用B/S 架構(gòu),前端基于HTML5 技術(shù)開發(fā),主要包括數(shù)據(jù)層、服務層和展示曾三個層次,詳見圖 2 自動化測試平臺應用架構(gòu)圖。
數(shù)據(jù)層:包含兩類數(shù)據(jù),一類數(shù)據(jù)來源于不同的被測系統(tǒng);另一類數(shù)據(jù)來源于測試腳本形成與測試腳本執(zhí)行過程中的輸入、輸出數(shù)據(jù)。
服務層:包括服務端與客戶端兩部分,服務端構(gòu)建平臺應用所需的服務,主要包括系統(tǒng)管理、測試管理、調(diào)度管理、監(jiān)控管理等;客戶端實現(xiàn)用例設計、用例集設計、測試計劃生成、定時任務制定、調(diào)度任務設定、執(zhí)行機分配、測試報告生成與展現(xiàn)等。
展現(xiàn)層:提供系統(tǒng)的基本功能,直觀展現(xiàn)客戶端與服務端的全部功能,以及各看板與視圖結(jié)果。
重點包括:個人看板、版本看板、版本報告以及支持客戶端的多類操作。
自動化測試平臺的實現(xiàn)關鍵在于Web-UI 測試、接口測試領域的流程與測試用例的快速生成。在明確測試流程、被測應用架構(gòu)、數(shù)據(jù)流向和部署架構(gòu)等信息后,規(guī)劃出測試流程中需要自動化處理的內(nèi)容與節(jié)點,通過利用開源基礎組件,實現(xiàn)Web-UI 測試自動化[4]和接口測試自動化。
自動化測試平臺支持通過界面化操作組裝形成測試用例,將測試用例的組成要素進行拆分,通過界面化展現(xiàn)與元素預設的功能,實現(xiàn)無需編碼即可形成自動化測試用例的效果。將用例拆分為步驟、包|定位路徑、方法|操作、參數(shù)、步驟動作、預期結(jié)果。分別針對Web-UI、接口不同類型,將常用的方法、步驟動作作為選項,通過使用者輸入或者選擇預設信息,后臺自動拼裝成可執(zhí)行腳本,并將不同步驟的順序調(diào)整,增加步驟封裝為功能菜單,降低了使用者的編碼能力,使得自動化測試的使用面可以擴大。
結(jié)合保險核心業(yè)務系統(tǒng)模塊功能多將用例進行模塊化拆分,降低用例的粒度,使得用例的可維護性增強。鑒于保險核心相關系統(tǒng),數(shù)據(jù)生命周期長的特點,通過中間變量傳參,實現(xiàn)系統(tǒng)內(nèi),系統(tǒng)間的傳參,保證測試場景中數(shù)據(jù)的可用性與一致性。用例分層模型示意圖如圖3 所示。
用例分層設計即減少了用例設計期間調(diào)試的工作量,也減少了腳本維護的工作量。當被測系統(tǒng)頁面要素或者功能發(fā)生變化,只需要更新與維護對應功能模塊的用例,與其所關聯(lián)用例自動更新。
用例的生成方式有兩種模式,一種是手工通過界面操作,自然錄入生成,另一種是通過借助第三方插件,在操作被測系統(tǒng)的同時,將頁面要素的定位信息、頁面要素的基本信息抓取出來,通過自動化測試平臺接口自動寫入用例步驟的對應字段中,當錄制結(jié)束后,可以生成的基本信息中調(diào)試與增加參數(shù)化等操作,使得用例生成更便捷,其邏輯示意圖如圖4 所示。
通過建設自動化測試平臺,可在有限時間內(nèi)提升測試的覆蓋面,使得人力從相對重復的場景測試中脫離出來,將工作重心著力于版本的個性化需求測試中;同時,通過自動化測試平臺,有利于測試資產(chǎn)的復用與積累。
分析某次模擬封板測試結(jié)果可以看出,在同等發(fā)版周期不變的情況下,同等人力投入,測試范圍綜合擴大6 倍以上,而隨著自動化測試用例的逐步完善與追加,范圍可繼續(xù)擴大,相對執(zhí)行效率會得到有效提升。
隨著自動化測試工具的應用,軟件測試工作的測試時效和測試質(zhì)量得到有效提高,也提升了整體的生產(chǎn)效能。下一步,我們將通過分析保險行業(yè)核心軟件的特性,以及常用第三方接口,進一步擴大自動化測試的范圍,提升自動化測試平臺的應用深度,將自動化測試推廣到集成測試以及開發(fā)自測環(huán)節(jié)。