螞蟻金服開源自動化測試框架 SOFAACTS

螞蟻金服分散式架構發表於2019-03-15

SOFAStack

Scalable Open Financial Architecture Stack 是螞蟻金服自主研發的金融級分散式架構,包含了構建金融級雲原生架構所需的各個元件,是在金融場景裡錘鍊出來的最佳實踐。


螞蟻金服在 SOFAStack 體系內研發了基於模型驅動的自動化介面測試框架 SOFAACTS。

GitHub 地址:https://github.com/alipay/sofa-acts


背景

伴隨著業務需求的爆發,螞蟻金服金融級分散式架構質量測試活動變得複雜起來,表現在測試的業務場景複雜,諸如分散式事務處理流程場景、併發性、賬戶狀態多樣性、冪等性和相容性等等。在原有的自動化測試框架下,測試流程編排極易出現測試資料冗餘分散、可維護性差、人工編碼成本高和測試驗證點易遺漏的問題。

如何解決上面的問題呢?

螞蟻金服在 SOFAStack 體系內研發了基於模型驅動的自動化介面測試框架 SOFAACTS。


SOFAACTS 介紹

SOFAACTS 由 IDE 和測試引擎組成,下圖為產品架構圖:

螞蟻金服開源自動化測試框架 SOFAACTS

框架適配 TestNg+Spring 的測試上下文環境,以 YAML 為資料載體並在此上構建資料模型驅動,具有契合快速網際網路發展和複雜分散式金融系統特點的優良特性:

  • 模型驅動和標準執行引擎;
  • 精細化校驗和資料的自動回寫;
  • 具有靈活的可擴充套件性;
  • 用例視覺化維護。

1.模型驅動和標準化

在測試用例資料與測試程式碼分離的探索上,很多測試框架採用資料驅動的方式,但這也無法從容應對金融級的複雜業務場景。框架對用例資料進行了深度抽象,提出模型驅動理念,研發出基於模型的資料驅動和標準化執行引擎,實現了資料和程式碼的分離管理,同時對測試過程中的資料清理、資料準備、用例執行、結果校驗階段進行標準化,做到測試資料維護和測試程式碼的簡潔優雅。用例執行時使用者無需關注資料如何載入,結果和期望資料如何比對,只需要關注測試資料和執行結果。

接下來,我們介紹如何使用 SOFAACTS 來高效率地完成一鍵生成資料模型生成和一鍵生成測試指令碼。

資料模型生成

首先進行資料模型的準備,以方便之後模版化地快速建立物件和表,按照如下方式來準備 DB 資料、介面請求引數和返回結果物件模型。

DB 資料模型生成

1.任意測試程式碼中右擊-> SOFAACTS 功能->生成 DB 表結構模板;

螞蟻金服開源自動化測試框架 SOFAACTS

2.選擇生成的目標測試工程;

螞蟻金服開源自動化測試框架 SOFAACTS

3.點選確認後選擇並新增需要生成模型的表即可生成。

類物件模型生成

1.待構建模型的類定義的任意方法上右擊-> SOFAACTS 功能->模板生成,生成當前物件的模型;

螞蟻金服開源自動化測試框架 SOFAACTS

2.生成完成後,我們可以在下圖位置找到生成的資料物件模型;

螞蟻金服開源自動化測試框架 SOFAACTS

3.按照上述步驟,這樣我們就生成了介面物件模板。

現在,我們開始進行指令碼一鍵生成:

測試指令碼生成

SOFAACTS IDE 提供測試指令碼自動生成功能,無需手動編碼。操作方式如下:

1.被測介面方法上點選,選擇 SOFAACTS 功能-->生成測試用例;

螞蟻金服開源自動化測試框架 SOFAACTS

2.這時會彈出一個文字框,填寫指令碼生成的位置和編碼格式,如下:

螞蟻金服開源自動化測試框架 SOFAACTS

3.填寫完成後,點選 OK 即可自動生成如下測試指令碼,可以看出模型驅動生成的指令碼精簡而優雅。

螞蟻金服開源自動化測試框架 SOFAACTS

原來資料驅動下的指令碼是如下面圖這樣的,測試資料冗餘分散,人工編碼成本高維護性差。

螞蟻金服開源自動化測試框架 SOFAACTS

螞蟻金服開源自動化測試框架 SOFAACTS


實踐證明 SOFAACTS 用例的測試程式碼構建效率提高 80% ,測試資料精簡到 1/case 數。

2.精細化校驗

在解決複雜業務場景下測試驗證難、易遺漏等問題時,SOFAACTS 基於程式碼行為跟蹤和分析理念,通過反射機制和日誌解析實現結果資料的自動採集,以此做為場景用例校驗的資料基線,並在持續整合時進行基線全量因子匹配來達到精細化驗證。如下圖:


螞蟻金服開源自動化測試框架 SOFAACTS


同時,為了提高自動採集後資料回填的效率,框架支援預校驗資料的自動寫入能力,進一步實現了資料的自動化精細校驗。如下圖:一鍵點選即可採集到校驗資料基線,在螞蟻內部實踐中 ACTS 做到了結果校驗效率提升至少 80%,場景驗證 0 遺漏。

螞蟻金服開源自動化測試框架 SOFAACTS

3.靈活可擴充套件

框架為了應對各種特殊業務測試情況而不需要過多改動,設計上應用高內聚與低耦合原則,支援既可以複用框架底層程式碼又可以針對業務個性化情況做擴充套件的能力。整個框架提供了豐富的 API,測試執行過程每個方法、每個類以便測試執行過程的每個階段(如下圖)都能夠在測試指令碼里面被重新為其他方法或者被其他多型的子類替換,這樣讓框架變得更通用,既賦予了框架輕量性又增加了靈活性。

螞蟻金服開源自動化測試框架 SOFAACTS

自定義的 API 如下:

螞蟻金服開源自動化測試框架 SOFAACTS

API 的具體使用請詳細學習產品使用手冊

4.用例視覺化維護

框架支援研發整合環境的一站式編輯,高效的用例指令碼和資料維護,有效減少重複性的資料準備程式碼。如下圖:

螞蟻金服開源自動化測試框架 SOFAACTS


總結

以上便是對 SOFAACTS 測試框架的基本介紹,還有諸多能力各位可以查閱我們詳細的使用手冊

目前,SOFAACTS 已經在螞蟻金服大範圍使用,分鐘級用例編寫 10 倍效能提升,累計用例個數 10w 以上,高頻功能使用可達近 2000 次/日,並持續保持著旺盛的生命力。

當前,程式碼已開源託管在 GitHub 上,歡迎關注,同時也歡迎業界愛好者共同創造更好的 SOFAACTS。

GitHub 專案地址:https://github.com/alipay/sofa-acts


相關連結


招聘

螞蟻金服金融核心測試技術團隊持續尋找對測試自動化、智慧風險管控等方向充滿熱情的小夥伴加入,有意者請聯絡 zhiqiang.li@antfin.com


公眾號:金融級分散式架構(Antfin_SOFA)


相關文章