高可用、全集成、定制化,蚂蚁金服自动化测试如何演进

简介: 蚂蚁金服自动化测试的演进之路。

小蚂蚁说:

11月16日,在首届安卓绿色联盟开发者大会上,蚂蚁金服工程技术部的开发工程师裴炀针对无线实验集群在蚂蚁金服内部的发展与实践做了总结分享。

关于自动化测试在具体业务场景下的应用,全行业已经沉淀了众多实践。而随着 DevOps,自动化测试,手工测试的进一步融合,多种多样的开发框架和设计理念频繁地被创造出来。如何支撑业务快速迭代,如何面对各种客户端动态化组件化的新技术方案,如何支持新的IOT、人机交互等业务场景的自动化测试,如何在业务逻辑下进行测试用例的深度思考与设计,已然成为焦点。

蚂蚁金服又是如何在一款年活跃用户 8.7 亿的应用中通过无线实验集群来打造自动化测试架构,在这期间沉淀了哪些具体的优化方案?

4ab2b909de78ca6e735224ccb773dca81d63879f

1、高可用

高可用性是支撑业务的必要条件。

移动云测平台作为承托自动化测试必备的基础服务设施,现在在各个厂家都有相应的实现方案。目前蚂蚁内部云测平台的定位即需要具备高可用以及高效灵活的执行控制能力。只有具备足够灵活、高效的高可用服务能力,才能真正有效地提高研发效率,降低研发成本。

1.1 设备集群

移动终端与传统服务器主要的区别之一,即设备可靠性差距很大。通过一定程度的冗余结合合理的调度策略,能够保证高可用的服务SLA。蚂蚁内部云测服务对关键业务的SLA要求是需要达到4个9的标准,而这个目标是通过基于设备任务双向选择的竞争机制配合实时异常检测和动态任务切换的机制完成的,因为自动化任务粒度远大于传统基础服务(Nginx,MySQL等) 的请求粒度,所以需要一些特殊的调度策略来进行保证。

14fe10bdcab60a9c0cbcf88c1a782a69bdcaf71a

1.2 数据分析

为了确保高可用,一方面要对全局各类资源进行统一监控,另一方面要对埋点数据持续分析挖掘,并针对发现的问题进行不断的改进。蚂蚁云测服务对设备和任务执行建立了上百类不同的埋点数据上报,覆盖设备健康,任务执行效率,关键场景的耗时等多角度数据,自动化任务在执行过程中还可以通过标准扩展接口动态添加业务维度的埋点分析数据。

1.3 持续改进

通过对数据的持续分析,我们发现了大量的问题,其中包含了很多NREP的困难问题,配合调用栈的记录都很快进行了修复。一直到今天,蚂蚁云测服务始终保持着每周至少一个版本的迭代速度。可以说云测服务从建立第一天起就完全沿袭了敏捷开发小步快跑的模式,这是平台能够始终支撑业务快速迭代的重要保证。

2、全集成

服务如何能更好的和业务结合落地,是评价服务价值的最好标准。

2.1 服务标准化

蚂蚁实验集群在实际应用场景上,充分思考了如何与业务结合落地的策略。从服务方式来看,对内部域提供标准RPC服务接口,对其他网络隔离的业务域提供了安全可靠的标准服务接口,通过统一的网关服务层,一方面让业务接入特别简单,另一方面能够根据不同业务的场景和需求充分进行相应的业务隔离和限流。在保障业务需求被充分满足的前提下,还可以随时对异常问题进行控制隔离,目前每天平台服务的各类请求超过20万次。

2.2 服务个性化

从服务内容角度,蚂蚁云测为通用的业务需求提供了标准化的技术方案和入口;针对特殊场景的业务诉求允许用户快速组装个性化的任务构建模式,目前在内部已经有超过200个业务线的专项服务在云测平台上长期运行,满足了40+个应用开发的自动化需求。

服务个性化的另一个角度,即能够支撑越来越多的新业务场景,如人机交互(脸部识别),IoT(扫码,投屏)等。传统的自动化方案关注于终端设备本身,一般无法将验证的物理场景囊括进来,而新的业务场景对设备所依赖的外部环境同样有很高的要求。在这方面,蚂蚁实验平台技术的工程师们充分利用的软硬件结合的能力,通过大量自研的MCU设备,配合高精度的工业级机器人,构建出业务所需要各类复杂环境,例如用户进店扫码模拟全流程模拟,包含了可能的光照条件;用户掏出手机设备时的位移,加速度,角度以及各种终端设备的自由组合。

通过这些自动化测试场景的构建,支付宝钱包能够不断地优化用户的使用体验。

3、AIO(All in One 一站式解决方案)

通过高可用服务降低运维成本,助力研发效能提升。

伴随着实验集群不断扩大服务范围,对资源管理运维的要求和投入成本也越来越高。为了控制运维成本,确保服务可靠性,蚂蚁实验平台技术的同学们设计了基于AIO智能机柜一站式的集成解决方案。

3.1 弹性扩容,按需组合

每个AIO机柜都是一个小型化的设备集群,提供了以下这些能力:

  • 自定义MCU, 封装9类67个自定义控制指令,覆盖数据,电压,电流,温度,功耗控制
  • 可控的执行环境(光线,电磁屏蔽)
  • 高精度功耗采集度量能力(±0.01库仑)
  • 各种链路的模拟 (WLAN/4G/弱网)
  • 设备特殊状态模拟和保护(低电量维持/充放电保护)

这些控制能力可以被高效地整合在一个智能机柜之中,也可以根据业务需求采用其中的能力子集,在成本控制和产品化定制方面具备成熟的能力。

3.2 服务插件化,硬件模块化

配合AIO机柜内部有相应的宿主服务,服务能力都是以插件化方式进行组合。用户如果有特殊类型的设备或者业务上特殊的诉求,可以快速根据插件规范自行定义新的服务插件,对AIO的能力进行扩展。同时,AIO核心的主控板也是全模块化设计,丰富的扩展GPIO可以方便进行新的模块化硬件能力的扩展,满足未来IoT复杂场景的诉求。

294006c49c4a2588f53ca681b27cba2485860e28

aaf3e43b285a16e490b33ce8cfd6a07f51c1e31e

截止目前,AIO 无线实验集群已在支付宝体系内完成 50w+ 自动化任务,用例执行 400w 余次,捕获闪退 5w+ 次。

在降低人工测试成本,帮助人工测试的能力扩展到更多的应用场景方面,目前已经成功支持40+ 阿里集团 App 的测试任务,巡检发现 250w+ 异常项目,完成 15w+ 小程序准入审核,设备远程共享达到 4 千小时。

AIO 无线实验集群,目前已成为蚂蚁金服 mPaaS 一部分,以“MTP 移动测试平台”对外输出能力,提供覆盖 App 开发、测试、上线等各个阶段的有效测试方案,有效帮助产品测试的环节资源投入的节省及测试效率与质量的提升。

相关文章
|
6月前
|
弹性计算 运维 监控
|
存储 NoSQL Java
高可用mongodb集群(分片+副本):性能测试
高可用mongodb集群(分片+副本):性能测试
679 0
|
1月前
|
存储 NoSQL 大数据
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
35 3
|
4月前
|
运维 监控 容灾
实现Java应用的高可用与自动化运维
实现Java应用的高可用与自动化运维
|
6月前
|
弹性计算 运维 监控
带你读《云上自动化运维宝典》——高弹性、高可用、低成本的云上资源管理最佳实践(1)
阿里云弹性计算技术专家高庆瑞主讲《高弹性、高可用、低成本的云上资源管理最佳实践》。
385 0
|
缓存 负载均衡 监控
聊聊深入挖掘业务需求,可0-1设计高可用、高并发、高伸缩的分布式项目架构,环境搭建、自动化部署、服务器环境线上排查、性能评估
聊聊深入挖掘业务需求,可0-1设计高可用、高并发、高伸缩的分布式项目架构,环境搭建、自动化部署、服务器环境线上排查、性能评估
106 0
|
NoSQL Redis 数据中心
Redis 集群偶数节点跨地域部署之高可用测试
你搭建过偶数节点的 Redis 集群吗?有没有想过它是否具备高可用的能力?会不会脑裂呢?实践出真知!现在 docker 太方便了,搭一个集群模拟一下……
168 4
|
存储 Java Maven
如何使用Spring Cloud搭建高可用的Elasticsearch集群?详解Elasticsearch的安装与配置及Spring Boot集成的实现(下)
如何使用Spring Cloud搭建高可用的Elasticsearch集群?详解Elasticsearch的安装与配置及Spring Boot集成的实现(下)
292 0
|
存储 负载均衡 搜索推荐
如何使用Spring Cloud搭建高可用的Elasticsearch集群?详解Elasticsearch的安装与配置及Spring Boot集成的实现(上)
如何使用Spring Cloud搭建高可用的Elasticsearch集群?详解Elasticsearch的安装与配置及Spring Boot集成的实现
371 0
|
开发框架 Sentinel 微服务
SpringCloud微服务实战——搭建企业级开发框架(十六):集成Sentinel高可用流量管理框架【自定义返回消息】
Sentinel限流之后,默认的响应消息为Blocked by Sentinel (flow limiting),对于系统整体功能提示来说并不统一,参考我们前面设置的统一响应及异常处理方式,返回相同的格式的消息。 1、在自定义Sentinel返回消息之前,需要调整一下代码结构,因为这里要用到统一返回异常的格式,考虑到后期可能的使用问题,
333 57
SpringCloud微服务实战——搭建企业级开发框架(十六):集成Sentinel高可用流量管理框架【自定义返回消息】
下一篇
无影云桌面