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

SOFAStackgit

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


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

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


背景

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

如何解決上面的問題呢?框架

螞蟻金服在 SOFAStack 體系內研發了基於模型驅動的自動化接口測試框架 SOFAACTS。分佈式


SOFAACTS 介紹

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

框架適配 TestNg+Spring 的測試上下文環境,以 YAML 爲數據載體並在此上構建數據模型驅動,具備契合快速互聯網發展和複雜分佈式金融系統特色的優良特性:測試

  • 模型驅動和標準執行引擎;
  • 精細化校驗和數據的自動回寫;
  • 具備靈活的可擴展性;
  • 用例可視化維護。

1.模型驅動和標準化

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

接下來,咱們介紹如何使用 SOFAACTS 來高效率地完成一鍵生成數據模型生成和一鍵生成測試腳本。設計

數據模型生成

首先進行數據模型的準備,以方便以後模版化地快速建立對象和表,按照以下方式來準備 DB 數據、接口請求參數和返回結果對象模型。

DB 數據模型生成

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

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

3.點擊確認後選擇並添加須要生成模型的表便可生成。

類對象模型生成

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

2.生成完成後,咱們能夠在下圖位置找到生成的數據對象模型;

3.按照上述步驟,這樣咱們就生成了接口對象模板。

如今,咱們開始進行腳本一鍵生成:

測試腳本生成

SOFAACTS IDE 提供測試腳本自動生成功能,無需手動編碼。操做方式以下:

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

2.這時會彈出一個文本框,填寫腳本生成的位置和編碼格式,以下:

3.填寫完成後,點擊 OK 便可自動生成以下測試腳本,能夠看出模型驅動生成的腳本精簡而優雅。

原來數據驅動下的腳本是以下面圖這樣的,測試數據冗餘分散,人工編碼成本高維護性差。


實踐證實 SOFAACTS 用例的測試代碼構建效率提升 80% ,測試數據精簡到 1/case 數。

2.精細化校驗

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



同時,爲了提升自動採集後數據回填的效率,框架支持預校驗數據的自動寫入能力,進一步實現了數據的自動化精細校驗。以下圖:一鍵點擊便可採集到校驗數據基線,在螞蟻內部實踐中 ACTS 作到告終果校驗效率提高至少 80%,場景驗證 0 遺漏。

3.靈活可擴展

框架爲了應對各類特殊業務測試狀況而不須要過多改動,設計上應用高內聚與低耦合原則,支持既能夠複用框架底層代碼又能夠針對業務個性化狀況作擴展的能力。整個框架提供了豐富的 API,測試執行過程每一個方法、每一個類以便測試執行過程的每一個階段(以下圖)都可以在測試腳本里面被從新爲其餘方法或者被其餘多態的子類替換,這樣讓框架變得更通用,既賦予了框架輕量性又增長了靈活性。

自定義的 API 以下:

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

4.用例可視化維護

框架支持研發集成環境的一站式編輯,高效的用例腳本和數據維護,有效減小重複性的數據準備代碼。以下圖:


總結

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

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

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

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


相關連接


招聘

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


公衆號:金融級分佈式架構(Antfin_SOFA)

相關文章
相關標籤/搜索