蚂蚁金服开源自动化测试框架 SOFAACTS

简介: Scalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。

SOFAStack

Scalable Open Financial Architecture Stack

是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。

蚂蚁金服在 SOFAStack 体系内研发了基于模型驱动的自动化接口测试框架 SOFAACTS。

GitHub 地址:

https://github.com/alipay/sofa-acts

背景

伴随着业务需求的爆发,蚂蚁金服金融级分布式架构质量测试活动变得复杂起来,表现在测试的业务场景复杂,诸如分布式事务处理流程场景、并发性、账户状态多样性、幂等性和兼容性等等。在原有的自动化测试框架下,测试流程编排极易出现测试数据冗余分散、可维护性差、人工编码成本高和测试验证点易遗漏的问题。

如何解决上面的问题呢?

蚂蚁金服在 SOFAStack 体系内研发了基于模型驱动的自动化接口测试框架 SOFAACTS。

SOFAACTS 介绍

SOFAACTS 由 IDE 和测试引擎组成,下图为产品架构图:

image.png

框架适配 TestNg+Spring 的测试上下文环境,以 YAML 为数据载体并在此上构建数据模型驱动,具有契合快速互联网发展和复杂分布式金融系统特点的优良特性:

模型驱动和标准执行引擎;

精细化校验和数据的自动回写;

具有灵活的可扩展性;

用例可视化维护。

1.模型驱动和标准化

在测试用例数据与测试代码分离的探索上,很多测试框架采用数据驱动的方式,但这也无法从容应对金融级的复杂业务场景。框架对用例数据进行了深度抽象,提出模型驱动理念,研发出基于模型的数据驱动和标准化执行引擎,实现了数据和代码的分离管理,同时对测试过程中的数据清理、数据准备、用例执行、结果校验阶段进行标准化,做到测试数据维护和测试代码的简洁优雅。用例执行时用户无需关注数据如何加载,结果和期望数据如何比对,只需要关注测试数据和执行结果。

接下来,我们介绍如何使用 SOFAACTS 来高效率地完成一键生成数据模型生成和一键生成测试脚本。

数据模型生成

首先进行数据模型的准备,以方便之后模版化地快速创建对象和表,按照如下方式来准备 DB 数据、接口请求参数和返回结果对象模型。

DB 数据模型生成

1.任意测试代码中右击-> SOFAACTS 功能->生成 DB 表结构模板;

image.png

2.选择生成的目标测试工程;

image.png

3.点击确认后选择并添加需要生成模型的表即可生成。

类对象模型生成

1.待构建模型的类定义的任意方法上右击-> SOFAACTS 功能->模板生成,生成当前对象的模型;

image.png

2.生成完成后,我们可以在下图位置找到生成的数据对象模型;

image.png

3.按照上述步骤,这样我们就生成了接口对象模板。

现在,我们开始进行脚本一键生成:

测试脚本生成

SOFAACTS IDE 提供测试脚本自动生成功能,无需手动编码。操作方式如下:

1.被测接口方法上点击,选择 SOFAACTS 功能-->生成测试用例;

image.png

2.这时会弹出一个文本框,填写脚本生成的位置和编码格式,如下:

image.png

3.填写完成后,点击 OK 即可自动生成如下测试脚本,可以看出模型驱动生成的脚本精简而优雅。

image.png

原来数据驱动下的脚本是如下面图这样的,测试数据冗余分散,人工编码成本高维护性差。

image.png

实践证明 SOFAACTS 用例的测试代码构建效率提高 80% ,测试数据精简到 1/case 数。

2.精细化校验
在解决复杂业务场景下测试验证难、易遗漏等问题时,SOFAACTS 基于代码行为跟踪和分析理念,通过反射机制和日志解析实现结果数据的自动采集,以此做为场景用例校验的数据基线,并在持续集成时进行基线全量因子匹配来达到精细化验证。如下图:

image.png

同时,为了提高自动采集后数据回填的效率,框架支持预校验数据的自动写入能力,进一步实现了数据的自动化精细校验。如下图:一键点击即可采集到校验数据基线,在蚂蚁内部实践中 ACTS 做到了结果校验效率提升至少 80%,场景验证 0 遗漏。

image.png

3.灵活可扩展
框架为了应对各种特殊业务测试情况而不需要过多改动,设计上应用高内聚与低耦合原则,支持既可以复用框架底层代码又可以针对业务个性化情况做扩展的能力。整个框架提供了丰富的 API,测试执行过程每个方法、每个类以便测试执行过程的每个阶段(如下图)都能够在测试脚本里面被重新为其他方法或者被其他多态的子类替换,这样让框架变得更通用,既赋予了框架轻量性又增加了灵活性。

image.png

自定义的 API 如下:

image.png

API 的具体使用请详细学习产品使用手册。

4.用例可视化维护
框架支持研发集成环境的一站式编辑,高效的用例脚本和数据维护,有效减少重复性的数据准备代码。如下图:

image.png

总结

以上是对 SOFAACTS 测试框架的基本介绍,SOFAACTS 还有诸多能力,欢迎查阅详细的使用手册(链接见底部)。

目前,SOFAACTS 已经在蚂蚁金服大范围使用,分钟级用例编写 10 倍效能提升,累计用例个数 10w 以上,高频功能使用可达近 2000 次/日,并持续保持着旺盛的生命力。

当前,代码已开源托管在 GitHub 上,欢迎关注,同时也欢迎业界爱好者共同创造更好的 SOFAACTS。

GitHub 项目地址:

https://github.com/alipay/sofa-acts

相关链接
SOFAACTS :

https://github.com/alipay/sofa-acts

API 产品使用手册:

https://www.sofastack.tech/sofa-acts/docs/Usage-API

SOFAACTS 详细使用手册:

https://www.sofastack.tech/sofa-acts/docs/Home

目录
相关文章
|
4天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
39 8
|
5天前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
26 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
9天前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
9天前
|
数据管理 jenkins 测试技术
自动化测试框架的设计与实现
在软件开发周期中,测试是确保产品质量的关键步骤。本文通过介绍自动化测试框架的设计原则、组件构成以及实现方法,旨在指导读者构建高效、可靠的自动化测试系统。文章不仅探讨了自动化测试的必要性和优势,还详细描述了框架搭建的具体步骤,包括工具选择、脚本开发、执行策略及结果分析等。此外,文章还强调了持续集成环境下自动化测试的重要性,并提供了实际案例分析,以帮助读者更好地理解和应用自动化测试框架。
|
9天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
28天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
55 3
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
71 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
256 7
Jmeter实现WebSocket协议的接口测试方法
|
3月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
270 3
快速上手|HTTP 接口功能自动化测试
|
3月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
55 5