劉峰耀 張國(guó)慶
(英大泰和財(cái)產(chǎn)保險(xiǎn)股份有限公司 北京市 100005)
自1985年第一款名為AutoTester 自動(dòng)化測(cè)試工具出現(xiàn)到現(xiàn)在,已經(jīng)有35年的歷程,而自動(dòng)化測(cè)試工具也在隨著軟件開(kāi)發(fā)時(shí)代的變遷而發(fā)生著變化。從具備簡(jiǎn)單錄制回放功能的線(xiàn)性測(cè)試工具,到具備數(shù)據(jù)驅(qū)動(dòng)的框架階段[1],再到現(xiàn)在以關(guān)鍵字驅(qū)動(dòng)[2]以及更先進(jìn)的智能驅(qū)動(dòng)框架,自動(dòng)化測(cè)試工具的演進(jìn)速度越來(lái)越快。特別是隨著移動(dòng)互聯(lián)技術(shù)的發(fā)展以及企業(yè)線(xiàn)上化轉(zhuǎn)型步伐的加快,對(duì)軟件迭代更新的頻率要求越來(lái)越高,軟件開(kāi)發(fā)模型開(kāi)始從瀑布模型向敏捷開(kāi)發(fā)模型轉(zhuǎn)變,傳統(tǒng)的手工測(cè)試或者較為落后的自動(dòng)化測(cè)試工具,很難應(yīng)付軟件開(kāi)發(fā)的快速迭代和變更。在此情況下,研發(fā)針對(duì)保險(xiǎn)行業(yè)的自動(dòng)化測(cè)試平臺(tái),構(gòu)建適應(yīng)保險(xiǎn)行業(yè)的自動(dòng)化測(cè)試體系,是當(dāng)前大部分保險(xiǎn)公司運(yùn)維模式改進(jìn)的方向。
從測(cè)試環(huán)節(jié)上分,軟件測(cè)試包含了單元測(cè)試、集成測(cè)試、性能測(cè)試以及回歸測(cè)試等環(huán)節(jié);從測(cè)試對(duì)象上分,包含了基于界面的功能提供型系統(tǒng)、基于接口的服務(wù)提供型系統(tǒng)和基于移動(dòng)技術(shù)的APP系統(tǒng)。傳統(tǒng)意義上的自動(dòng)化測(cè)試工具,主要是針對(duì)基于界面的UI自動(dòng)化測(cè)試而研發(fā),未考慮對(duì)于接口或者APP的自動(dòng)化測(cè)試等場(chǎng)景。同時(shí),測(cè)試環(huán)節(jié)主要是應(yīng)用在回歸測(cè)試上,隨著基于Devops 運(yùn)維模式的流行和敏捷開(kāi)發(fā)模式的應(yīng)用,測(cè)試也需要“敏捷化”,各個(gè)測(cè)試環(huán)節(jié)都需要更高的執(zhí)行效率和響應(yīng)速度,也需要采用自動(dòng)化測(cè)試。
因此,保險(xiǎn)自動(dòng)化測(cè)試管理平臺(tái)的建設(shè)重點(diǎn)在以下兩個(gè)方向展開(kāi):一是基于“立體式”全方位自動(dòng)化測(cè)試的理念,構(gòu)建自動(dòng)化測(cè)試“一站式”解決方案,把UI、接口和APP 自動(dòng)化測(cè)試集成在一起,在一個(gè)平臺(tái)上同時(shí)進(jìn)行UI、接口和APP 自動(dòng)化測(cè)試;二是除了在上線(xiàn)前的模擬生產(chǎn)測(cè)試中應(yīng)用全流程自動(dòng)化測(cè)試以外,需要逐步將自動(dòng)化測(cè)試應(yīng)用到集成測(cè)試、單元測(cè)試等環(huán)節(jié),真正達(dá)到“敏捷測(cè)試”的速度要求。而實(shí)現(xiàn)自動(dòng)化測(cè)試的全環(huán)節(jié)使用,需要自動(dòng)化測(cè)試平臺(tái)具備足夠的自動(dòng)或智能特性,能夠自動(dòng)生成自動(dòng)化測(cè)試用例和腳本,減少測(cè)試人員手工編寫(xiě)測(cè)試腳本所耗費(fèi)的學(xué)習(xí)成本和使用成本。
根據(jù)對(duì)項(xiàng)目整體需求的分析,確定自動(dòng)化測(cè)試平臺(tái)主要包括5類(lèi)功能需求。平臺(tái)整體功能結(jié)構(gòu)如圖1 所示。
(1)系統(tǒng)管理:包括用戶(hù)管理、角色管理、項(xiàng)目管理、客戶(hù)端管理以及監(jiān)控管理等功能。通過(guò)用戶(hù)管理實(shí)現(xiàn)對(duì)用戶(hù)的增加、刪除、修改、查詢(xún)、導(dǎo)入、導(dǎo)出和解鎖功能;通過(guò)角色管理提供用戶(hù)角色權(quán)限的設(shè)置;通過(guò)項(xiàng)目管理提供被測(cè)系統(tǒng)所屬項(xiàng)目的管理;通過(guò)客戶(hù)端管理提供客戶(hù)端的查詢(xún)、添加、修改、刪除;通過(guò)監(jiān)控資源功能管理各個(gè)自動(dòng)化執(zhí)行機(jī)和各個(gè)執(zhí)行機(jī)的權(quán)限。
圖1:自動(dòng)化測(cè)試平臺(tái)功能結(jié)構(gòu)圖
圖2:自動(dòng)化測(cè)試平臺(tái)應(yīng)用架構(gòu)圖
圖3:用例分層設(shè)計(jì)結(jié)構(gòu)圖
圖4:自動(dòng)生成用例邏輯圖
(2)測(cè)試管理:用例管理提供自動(dòng)化用例的查詢(xún)、添加、修改、復(fù)制用例、發(fā)布等功能;用例模塊提供項(xiàng)目的模塊化管理,能夠?qū)Ω鱾€(gè)項(xiàng)目進(jìn)行模塊化劃分,能夠?qū)⒚總€(gè)項(xiàng)目分為多個(gè)模塊方便用例管理;通過(guò)協(xié)議模板實(shí)現(xiàn)接口測(cè)試的協(xié)議模板管理;用例集合用于將多個(gè)用例進(jìn)行組合使其成為一個(gè)完整的案例,可進(jìn)行測(cè)試用例的復(fù)用;公共參數(shù)用于用管理所有項(xiàng)目或?qū)?yīng)項(xiàng)目中隨時(shí)可調(diào)用的固定值,提升腳本維護(hù)效率。
(3)測(cè)試執(zhí)行:任務(wù)調(diào)度提供調(diào)度設(shè)置、查詢(xún)、修改、刪除和執(zhí)行功能;任務(wù)執(zhí)行提供查看自動(dòng)化調(diào)度執(zhí)行結(jié)果的查看和管理;用例明細(xì)提供單條自動(dòng)化調(diào)度執(zhí)行結(jié)果明細(xì)和調(diào)試,用于查看單個(gè)任務(wù)執(zhí)行詳細(xì)結(jié)果、執(zhí)行步驟并進(jìn)行失敗用例的調(diào)試,方便自動(dòng)化測(cè)試人員定位執(zhí)行中遇到錯(cuò)誤并進(jìn)行調(diào)試。
(4)質(zhì)量管理:版本管理提供測(cè)試版本的登記;版本看板提供版本查詢(xún)及視圖功能,用于查看各個(gè)版本中用例執(zhí)行統(tǒng)計(jì)的執(zhí)行情況,并可自動(dòng)生成測(cè)試報(bào)告。
(5)監(jiān)控管理:定時(shí)任務(wù)監(jiān)控用于查看各個(gè)調(diào)度的定時(shí)任務(wù)配置情況,方便系統(tǒng)管理員對(duì)發(fā)生錯(cuò)誤的定時(shí)任務(wù)查看日志,快速定位問(wèn)題;服務(wù)監(jiān)控方便系統(tǒng)管理員查看自動(dòng)化測(cè)試平臺(tái)服務(wù)器運(yùn)行狀態(tài),方便服務(wù)器的管理。
在進(jìn)行自動(dòng)化測(cè)試平臺(tái)的整體設(shè)計(jì)時(shí),充分考慮被測(cè)系統(tǒng)以及平臺(tái)使用者的便捷性,采用前后端分離的總體架構(gòu),考慮到平臺(tái)的可擴(kuò)展性和可維護(hù)性,主要包括以下幾個(gè)方面:
(1)采用Spring boot 框架嵌入式Tomcat,結(jié)合測(cè)試過(guò)程與各過(guò)程中的操作環(huán)節(jié),基于Selenium 基礎(chǔ)工具的基本原理,進(jìn)行測(cè)試過(guò)程的自動(dòng)化設(shè)計(jì),并實(shí)現(xiàn)自動(dòng)化測(cè)試過(guò)程中腳本編寫(xiě)、腳本執(zhí)行的過(guò)程[3]。
(2)采用分層自動(dòng)化框架的做法,每層之間都是獨(dú)立的,互不影響,又可以互相靈活組裝后,形成一個(gè)新的測(cè)試流程或理測(cè)試場(chǎng)景。
(3)采用成熟的Mysql 作為底層數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)的存取及其數(shù)據(jù)管理。
自動(dòng)化測(cè)試平臺(tái)采用B/S 架構(gòu),前端基于HTML5 技術(shù)開(kāi)發(fā),主要包括數(shù)據(jù)層、服務(wù)層和展示曾三個(gè)層次,詳見(jiàn)圖 2 自動(dòng)化測(cè)試平臺(tái)應(yīng)用架構(gòu)圖。
數(shù)據(jù)層:包含兩類(lèi)數(shù)據(jù),一類(lèi)數(shù)據(jù)來(lái)源于不同的被測(cè)系統(tǒng);另一類(lèi)數(shù)據(jù)來(lái)源于測(cè)試腳本形成與測(cè)試腳本執(zhí)行過(guò)程中的輸入、輸出數(shù)據(jù)。
服務(wù)層:包括服務(wù)端與客戶(hù)端兩部分,服務(wù)端構(gòu)建平臺(tái)應(yīng)用所需的服務(wù),主要包括系統(tǒng)管理、測(cè)試管理、調(diào)度管理、監(jiān)控管理等;客戶(hù)端實(shí)現(xiàn)用例設(shè)計(jì)、用例集設(shè)計(jì)、測(cè)試計(jì)劃生成、定時(shí)任務(wù)制定、調(diào)度任務(wù)設(shè)定、執(zhí)行機(jī)分配、測(cè)試報(bào)告生成與展現(xiàn)等。
展現(xiàn)層:提供系統(tǒng)的基本功能,直觀展現(xiàn)客戶(hù)端與服務(wù)端的全部功能,以及各看板與視圖結(jié)果。
重點(diǎn)包括:個(gè)人看板、版本看板、版本報(bào)告以及支持客戶(hù)端的多類(lèi)操作。
自動(dòng)化測(cè)試平臺(tái)的實(shí)現(xiàn)關(guān)鍵在于Web-UI 測(cè)試、接口測(cè)試領(lǐng)域的流程與測(cè)試用例的快速生成。在明確測(cè)試流程、被測(cè)應(yīng)用架構(gòu)、數(shù)據(jù)流向和部署架構(gòu)等信息后,規(guī)劃出測(cè)試流程中需要自動(dòng)化處理的內(nèi)容與節(jié)點(diǎn),通過(guò)利用開(kāi)源基礎(chǔ)組件,實(shí)現(xiàn)Web-UI 測(cè)試自動(dòng)化[4]和接口測(cè)試自動(dòng)化。
自動(dòng)化測(cè)試平臺(tái)支持通過(guò)界面化操作組裝形成測(cè)試用例,將測(cè)試用例的組成要素進(jìn)行拆分,通過(guò)界面化展現(xiàn)與元素預(yù)設(shè)的功能,實(shí)現(xiàn)無(wú)需編碼即可形成自動(dòng)化測(cè)試用例的效果。將用例拆分為步驟、包|定位路徑、方法|操作、參數(shù)、步驟動(dòng)作、預(yù)期結(jié)果。分別針對(duì)Web-UI、接口不同類(lèi)型,將常用的方法、步驟動(dòng)作作為選項(xiàng),通過(guò)使用者輸入或者選擇預(yù)設(shè)信息,后臺(tái)自動(dòng)拼裝成可執(zhí)行腳本,并將不同步驟的順序調(diào)整,增加步驟封裝為功能菜單,降低了使用者的編碼能力,使得自動(dòng)化測(cè)試的使用面可以擴(kuò)大。
結(jié)合保險(xiǎn)核心業(yè)務(wù)系統(tǒng)模塊功能多將用例進(jìn)行模塊化拆分,降低用例的粒度,使得用例的可維護(hù)性增強(qiáng)。鑒于保險(xiǎn)核心相關(guān)系統(tǒng),數(shù)據(jù)生命周期長(zhǎng)的特點(diǎn),通過(guò)中間變量傳參,實(shí)現(xiàn)系統(tǒng)內(nèi),系統(tǒng)間的傳參,保證測(cè)試場(chǎng)景中數(shù)據(jù)的可用性與一致性。用例分層模型示意圖如圖3 所示。
用例分層設(shè)計(jì)即減少了用例設(shè)計(jì)期間調(diào)試的工作量,也減少了腳本維護(hù)的工作量。當(dāng)被測(cè)系統(tǒng)頁(yè)面要素或者功能發(fā)生變化,只需要更新與維護(hù)對(duì)應(yīng)功能模塊的用例,與其所關(guān)聯(lián)用例自動(dòng)更新。
用例的生成方式有兩種模式,一種是手工通過(guò)界面操作,自然錄入生成,另一種是通過(guò)借助第三方插件,在操作被測(cè)系統(tǒng)的同時(shí),將頁(yè)面要素的定位信息、頁(yè)面要素的基本信息抓取出來(lái),通過(guò)自動(dòng)化測(cè)試平臺(tái)接口自動(dòng)寫(xiě)入用例步驟的對(duì)應(yīng)字段中,當(dāng)錄制結(jié)束后,可以生成的基本信息中調(diào)試與增加參數(shù)化等操作,使得用例生成更便捷,其邏輯示意圖如圖4 所示。
通過(guò)建設(shè)自動(dòng)化測(cè)試平臺(tái),可在有限時(shí)間內(nèi)提升測(cè)試的覆蓋面,使得人力從相對(duì)重復(fù)的場(chǎng)景測(cè)試中脫離出來(lái),將工作重心著力于版本的個(gè)性化需求測(cè)試中;同時(shí),通過(guò)自動(dòng)化測(cè)試平臺(tái),有利于測(cè)試資產(chǎn)的復(fù)用與積累。
分析某次模擬封板測(cè)試結(jié)果可以看出,在同等發(fā)版周期不變的情況下,同等人力投入,測(cè)試范圍綜合擴(kuò)大6 倍以上,而隨著自動(dòng)化測(cè)試用例的逐步完善與追加,范圍可繼續(xù)擴(kuò)大,相對(duì)執(zhí)行效率會(huì)得到有效提升。
隨著自動(dòng)化測(cè)試工具的應(yīng)用,軟件測(cè)試工作的測(cè)試時(shí)效和測(cè)試質(zhì)量得到有效提高,也提升了整體的生產(chǎn)效能。下一步,我們將通過(guò)分析保險(xiǎn)行業(yè)核心軟件的特性,以及常用第三方接口,進(jìn)一步擴(kuò)大自動(dòng)化測(cè)試的范圍,提升自動(dòng)化測(cè)試平臺(tái)的應(yīng)用深度,將自動(dòng)化測(cè)試推廣到集成測(cè)試以及開(kāi)發(fā)自測(cè)環(huán)節(jié)。