蚂蚁金服开源自动化测试框架 SOFAACTS
SOFAStack
Scalable Open Financial Architecture Stack 是螞蟻金服自主研發(fā)的金融級分布式架構(gòu),包含了構(gòu)建金融級云原生架構(gòu)所需的各個組件,是在金融場景里錘煉出來的最佳實踐。
螞蟻金服在 SOFAStack 體系內(nèi)研發(fā)了基于模型驅(qū)動的自動化接口測試框架 SOFAACTS。
GitHub 地址:https://github.com/alipay/sofa-acts背景
伴隨著業(yè)務(wù)需求的爆發(fā),螞蟻金服金融級分布式架構(gòu)質(zhì)量測試活動變得復(fù)雜起來,表現(xiàn)在測試的業(yè)務(wù)場景復(fù)雜,諸如分布式事務(wù)處理流程場景、并發(fā)性、賬戶狀態(tài)多樣性、冪等性和兼容性等等。在原有的自動化測試框架下,測試流程編排極易出現(xiàn)測試數(shù)據(jù)冗余分散、可維護(hù)性差、人工編碼成本高和測試驗證點易遺漏的問題。
如何解決上面的問題呢?
螞蟻金服在 SOFAStack 體系內(nèi)研發(fā)了基于模型驅(qū)動的自動化接口測試框架 SOFAACTS。
SOFAACTS 介紹
SOFAACTS 由 IDE 和測試引擎組成,下圖為產(chǎn)品架構(gòu)圖:
框架適配 TestNg+Spring 的測試上下文環(huán)境,以 YAML 為數(shù)據(jù)載體并在此上構(gòu)建數(shù)據(jù)模型驅(qū)動,具有契合快速互聯(lián)網(wǎng)發(fā)展和復(fù)雜分布式金融系統(tǒng)特點的優(yōu)良特性:
- 模型驅(qū)動和標(biāo)準(zhǔn)執(zhí)行引擎;
- 精細(xì)化校驗和數(shù)據(jù)的自動回寫;
- 具有靈活的可擴展性;
- 用例可視化維護(hù)。
1.模型驅(qū)動和標(biāo)準(zhǔn)化
在測試用例數(shù)據(jù)與測試代碼分離的探索上,很多測試框架采用數(shù)據(jù)驅(qū)動的方式,但這也無法從容應(yīng)對金融級的復(fù)雜業(yè)務(wù)場景。框架對用例數(shù)據(jù)進(jìn)行了深度抽象,提出模型驅(qū)動理念,研發(fā)出基于模型的數(shù)據(jù)驅(qū)動和標(biāo)準(zhǔn)化執(zhí)行引擎,實現(xiàn)了數(shù)據(jù)和代碼的分離管理,同時對測試過程中的數(shù)據(jù)清理、數(shù)據(jù)準(zhǔn)備、用例執(zhí)行、結(jié)果校驗階段進(jìn)行標(biāo)準(zhǔn)化,做到測試數(shù)據(jù)維護(hù)和測試代碼的簡潔優(yōu)雅。用例執(zhí)行時用戶無需關(guān)注數(shù)據(jù)如何加載,結(jié)果和期望數(shù)據(jù)如何比對,只需要關(guān)注測試數(shù)據(jù)和執(zhí)行結(jié)果。
接下來,我們介紹如何使用 SOFAACTS 來高效率地完成一鍵生成數(shù)據(jù)模型生成和一鍵生成測試腳本。
數(shù)據(jù)模型生成
首先進(jìn)行數(shù)據(jù)模型的準(zhǔn)備,以方便之后模版化地快速創(chuàng)建對象和表,按照如下方式來準(zhǔn)備 DB 數(shù)據(jù)、接口請求參數(shù)和返回結(jié)果對象模型。
DB 數(shù)據(jù)模型生成
1.任意測試代碼中右擊-> SOFAACTS 功能->生成 DB 表結(jié)構(gòu)模板;
2.選擇生成的目標(biāo)測試工程;
3.點擊確認(rèn)后選擇并添加需要生成模型的表即可生成。
類對象模型生成
1.待構(gòu)建模型的類定義的任意方法上右擊-> SOFAACTS 功能->模板生成,生成當(dāng)前對象的模型;
2.生成完成后,我們可以在下圖位置找到生成的數(shù)據(jù)對象模型;
3.按照上述步驟,這樣我們就生成了接口對象模板。
現(xiàn)在,我們開始進(jìn)行腳本一鍵生成:
測試腳本生成
SOFAACTS IDE 提供測試腳本自動生成功能,無需手動編碼。操作方式如下:
1.被測接口方法上點擊,選擇 SOFAACTS 功能-->生成測試用例;
2.這時會彈出一個文本框,填寫腳本生成的位置和編碼格式,如下:
3.填寫完成后,點擊 OK 即可自動生成如下測試腳本,可以看出模型驅(qū)動生成的腳本精簡而優(yōu)雅。
原來數(shù)據(jù)驅(qū)動下的腳本是如下面圖這樣的,測試數(shù)據(jù)冗余分散,人工編碼成本高維護(hù)性差。
實踐證明 SOFAACTS 用例的測試代碼構(gòu)建效率提高 80% ,測試數(shù)據(jù)精簡到 1/case 數(shù)。
2.精細(xì)化校驗
在解決復(fù)雜業(yè)務(wù)場景下測試驗證難、易遺漏等問題時,SOFAACTS 基于代碼行為跟蹤和分析理念,通過反射機制和日志解析實現(xiàn)結(jié)果數(shù)據(jù)的自動采集,以此做為場景用例校驗的數(shù)據(jù)基線,并在持續(xù)集成時進(jìn)行基線全量因子匹配來達(dá)到精細(xì)化驗證。如下圖:
同時,為了提高自動采集后數(shù)據(jù)回填的效率,框架支持預(yù)校驗數(shù)據(jù)的自動寫入能力,進(jìn)一步實現(xiàn)了數(shù)據(jù)的自動化精細(xì)校驗。如下圖:一鍵點擊即可采集到校驗數(shù)據(jù)基線,在螞蟻內(nèi)部實踐中 ACTS 做到了結(jié)果校驗效率提升至少 80%,場景驗證 0 遺漏。
3.靈活可擴展
框架為了應(yīng)對各種特殊業(yè)務(wù)測試情況而不需要過多改動,設(shè)計上應(yīng)用高內(nèi)聚與低耦合原則,支持既可以復(fù)用框架底層代碼又可以針對業(yè)務(wù)個性化情況做擴展的能力。整個框架提供了豐富的 API,測試執(zhí)行過程每個方法、每個類以便測試執(zhí)行過程的每個階段(如下圖)都能夠在測試腳本里面被重新為其他方法或者被其他多態(tài)的子類替換,這樣讓框架變得更通用,既賦予了框架輕量性又增加了靈活性。
自定義的 API 如下:
API 的具體使用請詳細(xì)學(xué)習(xí)產(chǎn)品使用手冊。
4.用例可視化維護(hù)
框架支持研發(fā)集成環(huán)境的一站式編輯,高效的用例腳本和數(shù)據(jù)維護(hù),有效減少重復(fù)性的數(shù)據(jù)準(zhǔn)備代碼。如下圖:
總結(jié)
以上便是對 SOFAACTS 測試框架的基本介紹,還有諸多能力各位可以查閱我們詳細(xì)的使用手冊。
目前,SOFAACTS 已經(jīng)在螞蟻金服大范圍使用,分鐘級用例編寫 10 倍效能提升,累計用例個數(shù) 10w 以上,高頻功能使用可達(dá)近 2000 次/日,并持續(xù)保持著旺盛的生命力。
當(dāng)前,代碼已開源托管在 GitHub 上,歡迎關(guān)注,同時也歡迎業(yè)界愛好者共同創(chuàng)造更好的 SOFAACTS。
GitHub 項目地址:https://github.com/alipay/sofa-acts
相關(guān)鏈接
- SOFAACTS :github.com/alipay/sofa…
- API 產(chǎn)品使用手冊:www.sofastack.tech/sofa-acts/d…
- SOFAACTS 詳細(xì)使用手冊:www.sofastack.tech/sofa-acts/d…
招聘
螞蟻金服金融核心測試技術(shù)團隊持續(xù)尋找對測試自動化、智能風(fēng)險管控等方向充滿熱情的小伙伴加入,有意者請聯(lián)系 zhiqiang.li@antfin.com
公眾號:金融級分布式架構(gòu)(Antfin_SOFA)
轉(zhuǎn)載于:https://juejin.im/post/5c8b086b6fb9a04a016537ab
總結(jié)
以上是生活随笔為你收集整理的蚂蚁金服开源自动化测试框架 SOFAACTS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学Excel函数公式,怎能不会这个组合套
- 下一篇: 每周一书《Spark与Hadoop大数据