一款开源&轻量级的自动化测试平台介绍

218 阅读7分钟

本文将介绍一款简洁而强大的开源自动化测试平台:  Data4Test

一款旨在让测试变得更容易的测试系统,可用于功能,并发,异常,模糊,场景,长时间,国际化,大数据,性能等方面的测试工作

推荐有需要的小伙伴使用Data4Test开展自动化相关的事宜

项目地址:
github.com/tongdun/dat…

快速试用:
1、下载docker-compose.yml 
(文未有附docker-commpose.yml文件的内容,可复制使用)
2、切换到下载目录
3、启动服务:docker-compose up -d
4、默认访问:http://127.0.0.1:9088
5、默认用户:admin / admin

应用背景:
Data4Test是一款专为复杂业务系统的测试工作开展而设计的自动化测试平台。在决策引擎系统,风控业务系统上进行深度应用。
测试任务管理达150+,自动化场景用例达1500+,自动化数据用例达5000个+,自动化数据用例执行达100W次+,使用用户达100+        使用迭代3年+,横跨多个应用和多个产品,支撑公司ToB产品线的测试工作,并在多个B端客户现场进行实施和应用,支撑客户现场的测试验收工作和日常迭代工作等

诞生背景:
1、已有的测试工具无法在一个场景里快速支持多应用接口的调用和执行 2、Postman, Jmeter等本地版的测试工具无法快速在开发,测试,实施等多个角色间进行测试数据共享
3、接口变更无感,知道有变动,但无法快速定位到变更的接口,靠人工对接不靠谱
4、决策引擎系统场景复杂,链路依赖达20+或更多前置数据,自动化用例维护困难,编写脚本成本过高,变更环境失败比率也较高
5、风控系统接口请求数据字段过多,少则20+,多则100+或更多,人工输入符合特征的数据,人工构造时间成本过高
6、统计类功能需要长时间的数据积累,需各个时间维度的测试数据,需不同频度的定时任务执行
7、已有测试工具测试数据变更环境回放困难,需要数据用例幂等执行,且更换环境能快速落地数据进行复现
8、实时,离线,批转流,外部数据等多方数据特征需保持一致,且数据值需关联上
9、低并发测试需要常态化,靠手工不可能,靠脚本实现和维护成本过高
10、被测系统支持国际化,支持多语种,需要多语种的测试数据,且已建设的用例能直接复用,减少建设成本
11、部分接口存在加密或逻辑写在前端需要进行UI自动化,需要脚本的管理和执行
等等,多个原因促成了本系统的诞生和持续迭代研发

系统特性:
1、使用友好:可视化界面控制台类Postman使用风格,上手快
2、编写友好:标准化数据文件YAML格式,类K8S, Docker配置文件,批量编写快
3、扩展灵活:可自定义各类脚本的执行引擎,按需扩展
4、运维友好:日志可在线查看,定位系统或执行问题可在线排查
5、文档友好:使用操作及指导文件均在线,可方便查看和使用
6、跨平台友好:Golang编写,可编译各种跨平台的执行文件

功能特性:
1、支持接口管理,接口变更及追踪,支持swagger接口一键导入和接口规范检查
2、支持测试数据类Postman风格的可视化编写和YAML文件批量编写
3、支持标准化数据文件丰富的断言判断类型以供结果校验
4、支持标准化数据文件丰富的内置特征数据自动生成和特征数据组装生成
5、支持标准化数据文件导出文件快速校验
e.g.: CSV/EXCEL/YAML/JSON
6、支持标准化数据文件JSON格式入参N层嵌套定义变量替换
7、支持标准化数据文件关联入参,使用输出List变量为整体引用
8、支持非标准化各类脚本数据文件的管理和执行
e.g.: python, shell, jmter, dos,等等,可任意扩展脚本执行引擎
9、支持场景编排标准化数据文件和非标准化脚本文件,管理和执行
10、支持多种场景类型的控制:串行中断/串行比较/串行比较/普通并发/普通比较
11、支持各类任务的管理:自定义/一次/每天/每周
12、支持场景,任务关联多环境同时执行和调度
13、支持历史数据,历史场景再来一次和场景继续测试
14、支持各类自定义格式的三方Mock数据生成以及在线调用
15、支持生成可控的多态测试数据供上下游接口或功能调用
e.g:CSV/EXCEL/TXT/YAML/XML/JSON
16、支持未自动化接口一键查看
17、其他……    

适用测试类型:
1、功能测试: 正向路径功能测试,自定义或自动生成符合特征的测试数据
2、并发测试: 单接口多测试数据的并行执行,多接口的并行执行,以及场景维度的并行执行等
3、异常测试: 通过占位符,快速构造超长边界值,特殊字符等
4、模糊测试: 自动生成模糊数据,开启健壮性测试
5、场景测试: 复杂场景可视化编排,支持跨应用,多接口,多鉴权,多环境测试,同时支持实时,离线,外部数据等多方数据对齐
6、长时间测试: 定时任务,持续构造测试数据
7、Mock测试: 构造指定特征的数据,当外部数据给被测系统使用
8、国际化测试:根据请求语种,自动生成对应语种的测试数据,同时支持多语种的数据定义和断言判断,无需编写多个数据用例
9、大数据测试:通过动作自动生成海量的测试数据,以及数据和场景支持执行次数控制,实现实时和离线的大数据量
10、性能测试:支持控制并发数,支持调用Jmeter脚本,开展性能压测
11、UI测试:通过脚本的形式完成UI自动化
12、其他自动化任务:测试报告生成,提效类脚本等

系统架构图和数据流转图:

Web访问:
1、控制台管理:定义域/运行域/数据域/场景域/数据历史域/场景历史域

2、管理域列表:
(1)统计报表查看:应用维度报表/产品维度报表/全局维度报表

(2)应用报表查看:

(3)接口变更管理:

(4)测试用例管理:

(5)各类数据文件管理:

(6)各类场景管理:

(7)各类任务管理:

(8)数据历史回放:
数据文件可超链点击查看测试详情,再来一次可原样回放

(9)场景历史回放: 数据文件列表和最近数据文件可超链点击查看上下文测试详情,执行失败的场景修正后点击继续可从失败处执行,再来一次可原样回放

3、在线运维日志:

4、在线使用文档:

docker-compose.yml

version: "3.3"
services:
  db:
    image: josingcjx/db-data4test:2.0
    container_name: db-data4test
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - "33066:3306"
    volumes:
      - mysql:/data
    networks:
      - data4test
    environment:
      - MYSQL_ROOT_PASSWORD:password
      - MYSQL_USER:admin
      - MYSQL_PASSWORD:data4test
  data4test:
    image: josingcjx/data4test:2.0
    container_name: data4test
    restart: always
    depends_on:
      - db
    ports:
      - "9088:9088"
    networks:
      - data4test
    environment:
      - MYSQL_PORT:3306
      - MYSQL_HOST:db
      - MYSQL_PASSWORD:password
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - data4test:/data
networks:
  data4test: {}
volumes:
  mysql: {}
  data4test: {}

总结:
总结而言,Data4Test作为一款开源的自动化测试平台,以其简洁的使用方式和强大的功能以及良好的扩展性,为软件研发团队提供了一种高效、可靠的测试落地方案,为复杂的跨应用,跨产品的系统测试提供了实践方案。

更多功能使用,大家可以自行探索并分享~