自动化测试平台 ACTS

自动化测试平台介绍


产品概述


ACTS(AntCoreTest)源于蚂蚁金服多年金融级分布式架构工程的测试实践的积累与沉淀,是一款白盒测试框架,旨在为企业提供高效、精细化的接口自动化测试。 与现有的诸如 TestNG 等开源框架相比,ACTS 除了具备通用的数据自动化驱动等测试能力外,还具有契合快速的互联网发展和复杂的分布式金融系统特点的模型驱动、可视化编辑和标准流程引擎等新特性,可辅助工程师高效、高质量地完成接口测试用例编写以及标准化精准化测试验证。

目前 ACTS(AntCoreTest)已经开源,详情可访问 SOFAActs GitHub 站点


ACTS 是基于数据模型驱动测试引擎执行的的新一代测试框架(如下图所示),适配 TestNg+Spring 的测试上下文环境,以 YAML 为数据载体并在此基础上构建数据模型驱动,实现了一站式编辑、精细化校验和高效用例管理等,可以有效提高测试效率。


能力.png


运行原理


自动测试平台 (ACTS)的运行原理分为以下步骤,如下图所示:


运行原理.png


  • 测试脚本启动的时候,ActsDataProvider 会启动被测方法(被 @Test  注解的方法),加载对应的用例数据文件(以 YAML 文件承载),然后转换成对应的 PrepareData 对象;
  • runTest 开始执行时会传入 PrepareData 和用例名称,ACTS 根据这些信息组装出 ActsRuntimeContext 上下文并在整个过程中传递,同时初始化 TestUnitHandler 测试处理器。runTest > process 方法执行期包含如下四个子流程:
  1. clear(actsRuntimeContext) 方法:清理准备数据、校验数据,防止脏数据对测试脚本产生影响。
  2. prepare(actsRuntimeContext) 方法:准备 DB 数据等。
  3. execute(actsRuntimeContext) 方法:调用被测方法,捕获返回结果和异常等信息。
  4. check(actsRuntimeContext) 方法:根据测试数据,校验返回结果、DB 数据和异常信息等内容。


产品功能


    •   DB 模板生成
    •   类对象模板生成


应用场景


基于 SOFABoot 搭建的应用,在 Intellij IDEA 开发环境下快速编写和执行接口测试用例。

推荐使用 Intellij IDEA 2017 以便能更好地兼容 ACTS IDE。


快速开始


您可以通过阅读 快速开始 指引,快速体验自动化测试平台 ACTS。


框架准备


引入 ACTS 依赖


在引入依赖之前,需要您的应用是一个多模块工程(包含 test 模块),后续 ACTS 会将全部的测试代码放置在 test 模块下以便管理 ACTS 用例。

要引入 ACTS 依赖,您只要在 test 模块的 pom.xml 文件中引入 acts-bom 即可,示例代码如下:


<dependency>
    <groupId>com.alipay.sofa.acts</groupId>
    <artifactId>acts-bom</artifactId>
    <version>${acts.version}</version>
    <type>pom</type>
</dependency>


编码说明


请确保 ACTS 的编码与系统代码的编码一致,即确定以下的编码保持一致:生成脚本选择的编码、workspace 的编码应该都与应用代码编码保持一致,不一致时会出现乱码问题。

生成脚本选择的编码,如下图设置:


脚本编码.png


IDEA workspace 的编码:


IDEA编码.png


数据源配置


ACTS 配置数据源的目的,是为了在数据准备、数据清理、数据校验阶段,能够使用系统的数据源正确的进行 DB 增删改查。


数据源配置


在 src/test/resource/config/acts-config.properties 中配置 dal 层的 ModuleName、数据源以及表的对应关系,以 ds_ 开头,如下:


datasource_bundle_name =com.alipay.testapp.common.dal
ds_bean1=table1,table2
ds_bean2=table3,table4
#配置格式
#ds_数据源bean=逻辑表名1,逻辑表名2


其中数据源 bean1、数据源 bean2 是应用代码中 dal 层的数据源 bean 的名称,支持多个数据源。表名支持正则表达式,无需带分库分表后缀,若有多个数据源时请注意,某张表只能属于一个数据源,如下图:


数据源.png


数据库直连


数据库直连,用于 DB 数据模型的生成。在 src/test/resource/config/dbConf/ 下的 devdb.conf 或 testdb.conf 中配置如下:


xxx_url = jdbc:oracle:thin:@localhost:1521:cifdb
xxx_username = myname
xxx_password = mypswd


一键配置的说明


一键配置测试框架主要生成包含两部分,一部分是基础 Java 类,另一类是必须的配置文件,具体生成内容如下:


Java 类


  • AppNameActsBaseUtils.java
    测试脚本编写过程中常用的从框架中获取各种数据的工具类,初始化搭建只提供了常用的方法,可自行添加。
  • AppNameActsTestBase.java
    封装后的应用测试基类,业务系统如有特殊需求可在其上自行封装,如果没有则可以忽略此文件。


配置文件


配置文件.png


产品功能


一键初始化自动化测试框架


按照以下指引,通过简单几步您就可以轻松完成自动化测试框架的初始化工作。首先,您需要正确填写应用名称(appName)和编码方式(Coding Format),如下图所示。有关一键初始化生成的文件有何作用,可以参考 ACTS 使用手册的 框架准备 部分。


框架准备.png


方法一


将应用工程切换到 package 视图下,右击 test 模块(如下图所示)后选择初始化,即可完成生成;生成成功后,会引导其到产品使用文档进行框架其他功能的先行学习,以便能快速的使用自动化测试平台。


test模块.png


方法二


将应用工程切换到 package 视图下,点击 testbundle,依次选择 Tools > AlipayDevTools > 自动化测试平台 > 一键初始化测试框架(如下图所示),即可完成自动化测试框架 ACTS 的搭建。


一键式测试框架.png


一键模型化


快速理解 ACTS 的模型


在写测试用例的过程中,需要预先准备一些 DB 表、方法入参的数据,或者需要校验一些 DB 表、返回结果的数据,这些数据可以以模版的形式保存下来,在编辑用例时,可以方便的导入这些数据到准备数据或者校验数据,实现数据复用。目前 ACTS 模型可以分为 DB 模型和类模型。

常规的测试用例编写,DB 、方法入参、返回结果等领域模型的数据准备是通过测试代码组织的,随着业务复杂度的增加,领域模型复杂度也在不断增加,尤其在金融级业务中,往往一个类或者数据表有数十个属性或者字段,类与类的嵌套也是随处可见,代码构造复杂对象变得十分困难且容易疏漏,问题频现:

  • 表太多容易遗漏,排查时间太长;
  • 表的字段名记不住,时不时写错;
  • 接口入参数量多类型复杂,看见就头疼;
  • 类的属性太多,容易遗漏重要属性;
  • 嵌套构造对象,不断的 new 和 set 赋值;
  • 继承和实现关系复杂,遗漏重要属性;

ACTS 的模版有可以有效应对上述问题,通过将类和表固化为 CSV,类的结构一目了然,通过类、数据表的模版可以快速的模版化地创建对象,并序列化到 YAML 文件中,使用 ACTS IDE 可以方便的管理用例数据。


模型存储位置


在 test 模块的 resource/model 目录可以查看已经存在的模型。


目录.png


DB模板生成


DB 模型生成的流程示例如下图所示:


  1. 点击 生成 DB 表结构模板,并选择相应的 Bundle 。


生成 DB 表结构模板.png


  1. 点击 OK 后生成模板,如下图所示:


生成模板.png

数据表模型样例


数据表模型样例.png


校验 flag 说明


Y: 插入
N:不插入
C:以此为 where 条件对插入后的数据进行清理
F:数据库函数
L: 大字段换行准备,准备方式为 A=B;C=D


类对象模型生成


一个复杂对象是一个闭包,不但包含其自身模型还包含其嵌套对象的模型。

ACTS 使用模型快速导入数据、编辑复杂对象(包括入参、返回结果和异常等),在 ACTS IDE 中可右键选择类模型,用于构建该类的对象并赋值以便快速编辑。


生成方法


类对象模型有有两种生成方式


  1. 方法一:待构建模型的类定义的任意方法上点击,生成当前类的模型,如下图所示:


待构建模型的类定义.png


  1. 方法二:接口定义任意方法上点击,生成当前接口中,所有方法的复杂入参、复杂返回结果的模型,如下图所示:


接口定义.png


注意:使用IDEA时请先确保代码已编译,IDEA 不会自动编译而需要手动 mvn clean install 或者打开自动编译: File > Settings > Build,Execution,Deployment > Compiler > Make project automatically


对象模型样例


对象模型样例.png


对象模型样例1.png


flag说明


Y: 校验
N:不校验
D:时间偏移值比较,如 D200
ME:map 默认全 key 校验,ME则以期望 key 为准,实际值多余期望值的 key 不予校验


对于返回结果的时间 Date 类型字段校验说明:

  1. Y | null -> 代表期望为 null。
  2. Y | 2015-01-01 00:00:00 -> 代表期望为 2015-01-01 00:00:00。
  3. N | null -> 代表不校验。
  4. D200 | 2015-01-01 00:00:00/null -> 代表与 2015-01-01 00:00:00/new Date() 相差 200 秒。


一键生成脚本


ACTS 还为开发者提供了一键脚本化功能,点击了解 功能详情


一站式可视化编辑


框架实现了测试数据与测试代码的分离,同时配套提供可视化编辑器 ACTS IDE,通过 ACTS IDE 可以快速地录入、查看和管理用例数据,有效减少重复性编码。

点击了解 一站式编辑 功能。


扩展功能


ACTS 提供了丰富的 API ,其封装于 ActsRuntimeContext 类中,借助 API 可快速获取和设置自定义参数、用例入参、期望结果等,满足用户对用例数据的自定义操作;同时,框架的 ActsTestBase 测试基类对外暴露各个执行阶段方法,包括 prepare,execute,check,clear 等,例如在测试类中通过重写 process 方法可将整个测试脚本重新编排。

详情点击 ACTS 扩展功能 介绍。


常见问题


开发者在使用 ACTS 过程中遇到的问题可以参考 SOFAActs 常见问题


onlineServer