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

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

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

蚂蚁金服在 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

目录
相关文章
|
2月前
|
测试技术 API
为什么你的自动化测试无法落地
为什么你的自动化测试无法落地
21 0
|
1月前
|
机器学习/深度学习 人工智能 测试技术
探索自动化测试框架的发展与应用
【2月更文挑战第30天】 在快速发展的软件行业中,自动化测试已经成为提升开发效率、确保软件质量的关键手段。本文将深入探讨自动化测试框架的发展历程,解析其在不同软件开发周期中的应用,并讨论未来自动化测试框架可能面临的挑战与机遇。通过对现有技术的分析及案例研究,旨在为读者提供对自动化测试框架全面而深入的理解,以及如何有效利用这些框架以优化测试流程和提高产品质量的见解。
|
9月前
|
运维 数据可视化 数据挖掘
阿里开源项目LowCodeEngine低代码开发引擎
阿里开源项目LowCodeEngine低代码开发引擎
|
11月前
|
IDE 前端开发 小程序
阿里 & 蚂蚁自研 IDE 研发框架 OpenSumi 正式开源
阿里 & 蚂蚁自研 IDE 研发框架 OpenSumi 正式开源
213 0
|
前端开发 IDE JavaScript
2022个人开发工具集积累和分享
今天给大家分享一下作为一名资深程序员,日常常用的一些开发工具,相信有一些大家都经常用,有一些可能还没有用过,以下的10多个开发工具都是日常工作常用的,现在分享给大家,希望能给大家日常的办公、生活带来一些帮助,现在各大家逐一介绍。
2022个人开发工具集积累和分享
|
算法 安全 Java
淘系用户平台技术团队单元测试建设
单元测试是工程交付前质量保障的第一环,也无疑是软件工程质量保障的重要基石,有效的单元测试能够提前发现90%以上的代码Bug问题,同时也能防止代码的腐化,在工程重构演进时起到至关重要的作用。
淘系用户平台技术团队单元测试建设
|
安全 JavaScript 前端开发
企业DevOps之路:SonarQube代码质量平台
SonarQube 是一个静态代码分析平台,用来持续分析和评测代码的质量,支持检测 Java、JavaScript、C#、C、C++ 等二十几种编程语言。通过 SonarQube 可以检测出项目中潜在的Bug、漏洞、代码规范、重复代码、缺乏单元测试的代码等问题,并提供了 UI 界面进行查看和管理。
257 0
企业DevOps之路:SonarQube代码质量平台
|
测试技术 macaca 持续交付
阿里完整自动化测试解决方案 macaca 开源啦
macaca 是阿里开源的完整自动化测试解决方案,该方案能够支持移动端和PC端,同时也支持Native,Hybrid,H5等多种应用类型并且能提供客户端工具和持续集成服务。
27645 0
低代码平台(一网统管)-大方向(四个版本)
低代码平台(一网统管)-大方向(四个版本)
198 0
低代码平台(一网统管)-大方向(四个版本)
|
小程序 中间件 应用服务中间件
开发者七问七答:什么是产品化?
之前参加了企业智能部门如何做产品化的讨论,大家对产品化的定义和过程都有各自不同的见解。我觉得这个话题其实可以扩展下,想站在一个开发人员的视角尝试探讨一下产品化。下面以自问自答的方式来展开。
2286 0
开发者七问七答:什么是产品化?