社區(qū)分享|易快報基于MeterSphere的接口自動化項目落地實踐
編者注:在2023年2月25日舉辦的“2023 MeterSphere開源持續(xù)測試平臺城市遇見· 北京站”活動中,北京合思信息技術有限公司(即易快報)的項目測試高級工程師豆云謙分享了題為《易快報接口自動化項目落地實踐分享》的主題演講。以下內容根據(jù)本次演講整理而成。
北京合思信息技術有限公司(即 “易快報”)創(chuàng)立于2014年11月,是中國SaaS行業(yè)報銷費控的領軍企業(yè),主營業(yè)務是為企業(yè)提供差旅訂購、電子報銷、預算費控、發(fā)票管理等一站式服務。作為一款敏捷的企業(yè)報銷費控與聚合消費平臺,易快報可以對接多方發(fā)票平臺、網(wǎng)銀、第三方消費平臺、財務軟件,以及企業(yè)辦公平臺與業(yè)務系統(tǒng)等,協(xié)助企業(yè)實現(xiàn)全面集成、數(shù)據(jù)互聯(lián)的一體化管理。

一、接口自動化項目的背景與目的
為落實公司各業(yè)務線接口自動化“從零到一”的目標,提升測試的效率,測試部門需要通過引入合適的接口自動化測試平臺來保證核心業(yè)務主流程的質量。
那么是出于哪些原因,讓易快報的測試團隊產生了構建接口自動化測試平臺的想法呢?
首先,就是希望盡快解決產品質量問題頻發(fā)(如接口質量)的問題。長期以來,易快報的產品質量重度依賴UI層測試,公司產品在迭代過程中有UI層的定位,且改動、維護的成本均較大,測試團隊需要改進這一現(xiàn)狀;
其次,在有80%的團隊成員不具備接口測試能力的情況下,團隊的主要落地目標是實現(xiàn)接口自動化測試。也就是說要,在考慮到公司所有接口總量高達5000多個的情況下,達成公司全業(yè)務線90%以上的接口自動化覆蓋率;
最后,易快報的業(yè)務是在測試環(huán)境、集成環(huán)境、灰度環(huán)境等多個環(huán)境上運行的。在此基礎上,要使用可以兼容多種環(huán)境的測試腳本來保持整個接口自動化的持續(xù)測試,實現(xiàn)自動化項目的可持續(xù)性,降低維護多套自動化測試的成本。
二、為什么選擇MeterSphere開源持續(xù)測試平臺?
在引入MeterSphere開源持續(xù)測試平臺之前,易快報的測試團隊也嘗試過使用其他的測試工具,例如Postman、Jira等。在使用過程中發(fā)現(xiàn),Postman更適合用于單人場景,比如在一個測試發(fā)現(xiàn)一個問題后,反饋給第三方去調試;而使用Jira等自動化測試框架需要編寫代碼,對測試人員的編碼水平要求較高。在公司接口數(shù)較多的情況下,需要招募的測試開發(fā)人員過多。
MeterSphere開源持續(xù)測試平臺可以很好地解決以上這些問題??偨Y來說,MeterSphere平臺的的優(yōu)勢包括:
1. 平臺易用性高,上手快,并且有較好的文檔支持;
2. 有效降低了測試人員的使用門檻,可以實現(xiàn)全部測試人員在低學習成本的情況下參與企業(yè)的自動化測試建設過程,實現(xiàn)企業(yè)級的降本增效;
3. 覆蓋多種接口協(xié)議,可以自由組合接口自動化的測試場景;
4. 測試數(shù)據(jù)一站式,測試報告展示清晰明了,便于總結分析;
5. 支持定時任務、持續(xù)集成等,可以自動調用、觸發(fā)自動化的測試。
三、測試工作流水線設計思路
為了實現(xiàn)接口自動化測試的項目目標,易快報的測試團隊梳理了整個測試工作流水線的思路,并開始著手進行員工培訓。其工作流水線涉及能力筑基、接口導入、用例轉化和結果輸出四大步驟。

1. 能力筑基:各業(yè)務線測試成員首先要熟悉MeterSphere平臺的功能和使用方法,加強對接口測試的理解,并且明確要使用MeterSphere來解決哪些業(yè)務問題。
為了達成這一目標,需要做到以下兩步:
① 制作培訓大綱并實行
■?團隊成員學習單接口的錄入與用例調試,為用例場景組建提供基礎;
■?團隊成員學習用例場景編排、斷言、參數(shù)提取與傳遞等,以應對基本的測試場景,代替手工測試作業(yè);
■?學習控制器與BeanShell等腳本斷言,以應對一些較有難度的測試場景。
② 回饋實踐中遇到的問題,真正形成閉環(huán)
學員在培訓過程中針對業(yè)務線中熟悉的場景進行實戰(zhàn)演練,在此過程中發(fā)現(xiàn)并反饋遇到的實際問題,形成閉環(huán)。然后團隊成員集中討論并逐步解決所遇到的問題,實現(xiàn)共同進步。培訓歷時約2~3周,此次培訓結束后,團隊共30余人基本都可以熟練掌握MeterSphere平臺的使用方法。
2. 接口導入:通過MeterSphere的接口批量導入功能來匯總文檔中的接口。
在引入MeterSphere平臺之前,易快報的接口錄入流程不夠規(guī)范,各業(yè)務線都有JSON、Swagger、Postman等不同格式的接口文檔。引入MeterSphere后,就可以將這些不同格式的舊文檔統(tǒng)一集成到MeterSphere平臺,自動規(guī)范管理文檔中的接口。
目前,易快報的測試團隊結合MeterSphere平臺的應用,對接口導入制定了新的規(guī)范流程,具體如下:
① 制定標準:質量部為研發(fā)人員制定包括接口示例、請求參數(shù)、返回樣本等多個方面在內的接口文檔標準;
② 輸出文檔:產品研發(fā)人員討論、梳理各自業(yè)務線的核心接口,并向測試人員提供標準的接口文檔;
③ 檢查落實:測試人員檢查這些接口文檔的合規(guī)性,并將自己業(yè)務域內的合規(guī)文檔導入到MeterSphere平臺,落實接口對應責任人;
④ 實現(xiàn)巡檢:根據(jù)已錄入到MeterSphere平臺的核心接口,測試人員組建業(yè)務線內的核心接口用例場景,實現(xiàn)7*24小時的線上巡檢機制,盡可能快地發(fā)現(xiàn)問題、解決問題;
⑤ 同步發(fā)版:如果有新增接口和修改接口的情況,研發(fā)人員需要及時向測試人員同步文檔,由測試人員在每次新版本發(fā)布之后,將發(fā)生變動的接口錄入到MeterSphere平臺,并參數(shù)化用例,打造公司接口自動化的標準質量測試流程。
制定標準與輸出文檔階段共耗時約一個月的時間。在此期間,團隊重新梳理了5000個以上的接口,檢查落實階段耗時約一周。
3. 用例轉化:在MeterSphere平臺調試單接口與場景用例,以可視化的方式組裝接口自動化用例。
① 接口錄入:選擇對應項目,根據(jù)開發(fā)人員提供的接口文檔,錄入模塊內的接口或與模塊關聯(lián)的接口;
② 用例轉化:編輯調試單接口用例與場景用例,根據(jù)核心功能用例,組建核心場景自動化,并逐步創(chuàng)建多場景測試計劃;
③ 自動構建:設置定時任務或Jenkins任務,建立接口自動化的每日構建,并通過設置測試環(huán)境自動觸發(fā)接口自動化,實現(xiàn)測試左移。
4. 結果輸出:設定測試計劃,24小時持續(xù)監(jiān)控,及時查看或導出測試報告,實現(xiàn)核心問題早發(fā)現(xiàn)、早預防,保證產品線的質量和穩(wěn)定性。
四、自動化測試的應用場合
易快報通過MeterSphere平臺進行的自動化測試主要的應用場景包括:
1. 通過MeterSphere實現(xiàn)核心主流程的接口自動化,并形成7*24小時線上巡檢機制,提高了線上產品的整體質量及穩(wěn)定性,使得一些隱蔽的問題更容易被發(fā)現(xiàn)并得到及時解決,并且能夠通過接口自動化不斷地巡檢來降低測試成本;
2. 可以將高頻工單轉化為接口自動化狀態(tài),便于補救以往漏測事故中的缺陷,并應用于發(fā)版前的回歸測試,以提高產品質量;
3. 研發(fā)人員不需要再去自行編寫單元測試,而是直接以TestNG(Test Next Generation)監(jiān)聽方式,通過接口自動化的運行狀況推算代碼的覆蓋率。實際上,易快報的測試團隊在MeterSphere中實現(xiàn)了產品研發(fā)中多數(shù)類與方法的覆蓋,功能代碼覆蓋率接近100%;
4. 開發(fā)發(fā)布代碼后可以立即直接在MeterSphere中觸發(fā)接口自動化執(zhí)行,在100條左右的用例量級下,MeterSphere可以快速完成核心用例的冒煙測試。在此自動化測試通過后即可介入手動測試,提升提測效率和產品質量。
五、接口自動化落地過程中遇到的實際問題與解決方案
在易快報項目通過MeterSphere平臺進行接口自動化測試落地的過程中,也遇到了一些問題和阻礙。通過不斷地學習與思考,結合MeterSphere平臺的實際應用,易快報測試團隊逐個攻破了這些難題,收獲了寶貴的測試經驗。
1. 多接口并發(fā)執(zhí)行用例
單接口、單場景的測試執(zhí)行數(shù)量較多的情況下,耗時往往也會過長,在測試過程中通常需要多接口并發(fā)執(zhí)行測試用例。但在實際測試過程中,往往會出現(xiàn)一個域中有一個賬號登錄時,同時登錄其他賬號會使得該賬號強制下線的情況。
為了解決這種問題,測試人員需要先把登錄的Token信息存儲到中間件,在使用場景中并發(fā)執(zhí)行用例時再去中間件取回Token信息繼續(xù)登錄。MeterSphere平臺可以支持數(shù)據(jù)庫以及Redis中間件的連接,可以方便地實現(xiàn)用例的并發(fā)執(zhí)行。
2. 智能等待組件開發(fā)
在UI自動化測試中,很多單據(jù)狀態(tài)護理相關的接口會有智能等待需求。如果不能快速獲取單據(jù)狀態(tài)信息,會影響到后續(xù)測試用例的執(zhí)行。
易快報的測試團隊借用前端研發(fā)的“組件化封裝”思想,通過開發(fā)并在MeterSphere平臺引入智能等待組件的方法,將等待狀態(tài)信息流轉的步驟進行組件化封裝,在測試中直接智能獲取組件狀態(tài),大幅提高了測試效率。
3. 組件化開發(fā)與參數(shù)復用
在MeterSphere平臺中,如果測試自動化建設采用線性開發(fā),每創(chuàng)建一次場景就直接錄入一次接口,在接口發(fā)生變動之后,測試人員就需要浪費大量時間去手動修改所有應用了該接口的測試用例。
為了防止這種情況發(fā)生,易快報測試團隊參照Page Object的思想,進行組件開發(fā),并將有關聯(lián)的接口模塊化。在場景開發(fā)量比較大的情況下,可以將多個接口組件化,使用BeanShell工具為組件傳參,形成動態(tài)的場景模塊,直接在測試用例中復用,能夠有效降低后期維護成本。
4. 多個業(yè)務環(huán)境適配
由于易快報在測試中所使用到的往往不止一個環(huán)境,如果寫出的測試腳本只能在某個特定環(huán)境中運行,會導致測試人員需要寫出多個腳本以應對不同測試環(huán)境的需要,造成人力物力的浪費。
為了解決這個問題,團隊需要在理解業(yè)務內容的基礎上,通過腳本的參數(shù)化設計,使得同一腳本可以適配多個業(yè)務環(huán)境。由于不同公司的腳本參數(shù)種類與數(shù)量不同,參數(shù)化的難度與成本也可能不同。
六、易快報使用MeterSphere平臺帶來的項目收益
目前,易快報基于MeterSphere平臺的接口自動化建設已經初見成效。項目中比較核心的支付模塊已經完全實現(xiàn)了接口自動化的目標,7*24小時的線上實時監(jiān)控機制有效提高了產品的穩(wěn)定性,保證了線上產品的質量。在引入MeterSphere平臺后,測試團隊的線上工單數(shù)量相較于引入MeterSphere平臺前一年降低了60%,交付效率得以推進。

降本增效方面,如果單純通過人工執(zhí)行測試,團隊完成一個項目的測試工作大約需要2到3天。而如果通過MeterSphere平臺執(zhí)行接口自動化測試,實施定時任務、回歸任務,每次發(fā)版都可以為測試團隊節(jié)省30多個人天的工作量,大幅提高工作效率,降低了人力成本。
值得強調的是,MeterSphere平臺在擴大接口自動化測試群體方面實現(xiàn)了劃時代的進步。它將接口自動化操作從編碼層面提升至界面化操作的級別,實現(xiàn)了“人人都可以參與接口自動化工作”的目標。
易快報測試團隊成員共30余人。在引入MeterSphere平臺之前,團隊內擁有接口自動化測試能力的成員只有2到3人,其余同事均因編碼能力不足而無法進行接口自動化測試。引入MeterSphere平臺后,自動化測試不再與人員的編碼水平掛鉤,而是與界面化的簡單操作相關。技術門檻大幅降低,在經過一定時間的學習后,團隊中實現(xiàn)了人人都可以參與自動化測試工作。