蚂蚁金服终端实验室演进之路

0. 背景

作为国民级 App,支付宝客户端需要为亿级用户提供多元化的服务,因此应用的稳定性与可靠性面临巨大的挑战,需要不断地完善和优化。

今天,让我们站在服务质量的全方位监控与优化的角度,从蚂蚁终端实验室的演进之路展开探讨,从借助使用开源的自动化方案,到自研并逐步完善无线实验集群技术体系,支付宝内部经历了怎样的业务场景演练,以及相应的技术架构如何借助移动开发平台 mPaaS 对外输出。

1. 发展历程

总的来说, 蚂蚁终端实验室从诞生到现在,一共经历过三个阶段(工具化、服务化以及中台化),其每个阶段都有特点和意义:

  • 工具化阶段

该阶段主要以使用市面上主流开源软件为主,如客户端开源软件 Appium, 其覆盖的端为 Android 和 iOS;通过这种开源工具和 App 测试流程结合的方式,快速满足业务方的提测需求,从而帮助业务方完成一般意义上的自动化测试工作(如基本的功能测试、兼容性测试等)。

  • 服务化阶段

服务化阶段存在一个重要的背景:支付宝着手前后端研发流程分离,并逐步沉淀出独立的 App 端研发流程系统(研发协作流程与 App 构建流程)。在独立的 App 研发流程和系统的基础上,终端实验室以一种服务化的形式支撑 App 的研发和协作, 处理满足日常用户自动化工作外,同时还担当着持续集成、日常发布前自动验包工作等; 另外在日常发布发布提供质量数据支持,如客户端代码覆盖率统计等。

  • 中台化阶段

伴随着终端实验室的能力不断提升优化以及测试规模的逐步扩大,服务上不仅需要满足蚂蚁金服体系 App(支付宝、口碑、网商银行等)日常测试需求,而且还需要将能力扩散覆盖到整个阿里巴巴集团的业务。

随之而来的是实验室需要面临多样化的业务方需求和定制化功能,如何在多元复杂的业务环境中,与业务方或者说上游系统完成能力共建?带着这个问题,终端实验室逐步沉淀并着手建设中台化平台:一方面让通用服务不断下沉,另一方面抽象出标准 SDK 的方式,让业务方根据自身业务特点建设特定的能力。

此外,在建设平台化的同时,终端实验室贴合支付宝业务场景的发展,构建如网络实验室、扫码实验室等一系列真实实验室的能力。

经历了几年的不断发展,终端实验室逐步完成了中台化的转变,其端上覆盖了 Android、iOS 以及 IoT 设备,服务上覆盖了通用能力、小程序准入、研发流程建设、真机租用以及用例管控等。

2. 技术生态

在了解完终端实验室的历程之后,我们能够对其提供的服务有一个全面的认识。当我们去总结和分析这些服务时,可以把这些具体能力分为三大块:平台服务能力、客户端SDK 以及 实验室能力。

  • 平台服务能力

平台服务能力的目标是聚焦“如何把蚂蚁实验室构建成一个更为开放的平台”,因此我们需要考虑到如何让更多的业务方和上游系统一起参与能力共建,从而将平台的建设思路分为 2 大部分:设备实验集群和开放SDK。

1. 设备集群

蚂蚁实验室不仅包含数以千计的公用终端设备,覆盖市面绝大多数手机终端,帮助业务同学完成日常自动化测试工作,而且提供了用户自建实验室的方式:用户只需要根据自身业务场景特性进行设备采购、实验室部署,便具备在自有平台上运行自有设备的能力。

从平台的开放性与部署动态化角度看,目前设备集群能保证设备归属和业务场景做到充分隔离,保证各业务在平台使用上能相互独立。另外,面对阿里巴巴集团众多研发中心,设备集群在部署上也支持多地部署、相互隔离。

2. 开放SDK

为了给上游系统和用户提供更为开放的能力,帮助业务方根据自身需求完成能力建设。终端实验室提供开放的 SDK 能力:上游系统只需在自己服务上接入 SDK,就能够完成任务构建链路,从用例管理、设备选择、任务执行,到执行结果回调,在此基础上用户就能够根据自身业务特点将业务数据进行多维度组合,形成自己的能力输出。

  • 客户端 SDK

终端实验室经过几个阶段的发展,不仅提供 UI 自动化框架能力,而且在一些复杂场景做了深入研究和落地的工作。在这里我们以令大家头痛的“App 兼容性验证”作为切入点,结合目前常用的几种机器学习方案,分析方案的优缺点,最终形成了终端实验室的解决方案。

一方面伴随着移动互联网的快速发展,目前市面上手机的品牌和型号层出不穷,如何快速准确的验证 App 的功能在不同类型手机上运行有效性与稳定性,的确是件困难的事情;另一方面,目前针对图片的机器学习技术日益成熟,其图识别的准确性也完全能够满足日常兼容性的要求。

通常来说兼容性测试会采用两种方式:1.图像相似度计算2. 无监督的异常点聚类。 这两种方式在使用方式和结果输出都有其优缺点:

  • 对于“图像相似度计算”来说,其异常图片的识别成功率非常高,但其前提条件比较苛刻:用户需要对每一版 App 以及每一个业务点进行图片搜集和上传,而往往每条用例可能会包含少则几张图片多则十几张图片,对于几百、甚至几千条测试用例来说,就算是一版 App 的期望图片搜集工作都是巨大的,何况目前移动互联网普遍都是快速迭代发布,所以导致了这种预先处理图片的方式是不太可行的,下图是一般意义以图搜图的数据流:

  • 另一种常用的方案是直接将同一业务场景下不同手机的一组截图交给无监督的异常点聚类算法处理,这种方案的优点比较明显:对于用户和平台来说,没有增加的额外的工作量,操作简单,但带来的问题是,计算出来的结果并不完全可信,特别是在一些极端情况下(如某一类异常图片总数较多的情况),少数正常的图片反而会被识别成异常图片,告知给业务方。

对比以上两种技术方案,终端实验室在兼容性异常图片发现上采用了更加灵活的方案,通过手机端“异常目标检测”和服务端“异常点聚类”相结合的方式完成目标。

首先,平台搜集常见异常图片,并训练成模型,植入手机端。

其次,当用户执行兼容性测试的时候,在手机端完成一部分“常见异常图片”的发现工作。

再次,当任务执行完后,服务端将剩下一部分图片交给““异常点聚类”处理,并进一步是被不同的图片。

最后,在整个执行任务结束后,平台就能有效识别异常图片,另外当异常图片未被有效识别的情况下,又可以在平台上快速提交异常图片,并交给算法逻辑继续学习,形成新的模型,从而在下一次任务执行过程中,就能把这种新发现的异常捕获住。

通过这种灵活的方案,一方面大大提升了异常图片检测结果的准确度,另一方面在整个异常图片的发现上形成了闭环,大大提升的兼容性测试的效能。

  • 实验室能力

为了应对日益复杂的用户使用环境和不稳定的运行环境,终端实验室不断去构建各种专项实验室,尽可能在实验室环境里就把问题发现并推动研发流程去解决。同时伴随着 IoT 时代的到来,面对种类繁多的终端设备,如何能够通过实验技术的手段帮助研发同学提升效能,是一个新问题也是一个比较有挑战的问题:终端实验室通过托管 IoT 设备的方式,让用户快速方便寻找设备,并进行功能验证。具体技术方案是在原有的 Android/iOS 真机租用方案的基础上做了能力升级。

第一, 将终端实验室上某一款手机和 IoT 设备做关联,保证当浏览器通过 WS 远程操作手机打开摄像头就能够看到对应的 IoT 设备;

第二,通过 WS 读取 IoT 串口的 trace 信息,并将数据以 WS 的形式推送到用户浏览器端;

第三,在宿主机上集成 IoT 设备操作的 SDK,保证宿主机能够通过命令行或者 HTTP 方式操控 IoT 设备;

第四,宿主机集成语音转文字 SDK,这样当 IoT 设备发出声音时,就能够在页面上以文字的方式告诉用例。

通过这种远程 IoT 租用的方式,用户就能够快速做作一台远程设备,另外在给 IoT 设备发送指令的同时,可以看到设备的相应信息(视觉展示、声音展示以及实时日志信息),从而达到快速验证的目的。

  • 机械臂扫码测试:

  • 智能机柜支持真机云测

3. 借助 mPaaS 对外输出

以上介绍的蚂蚁金服终端实验室相应能力的构建与实践,目前已经通过移动开发平台 mPaaS 对外输出一部分能力。

在 mPaaS 平台上,我们将自动化测试框架,真机调度管理,场景化测试方案以及详尽的测试报告方案整合外部客户的现有业务场景和系统,从而覆盖 App 开发期的各个阶段,确保应用上线前获取充分测试,发现 bug,减少线上问题,提高整体用户体验。

目前,终端实验室不仅对内服务了包括蚂蚁金服体系下的支付宝 App、网商银行、口碑商家等,同时借助 mPaaS 与大量生态合作伙伴一同共建能力,包括常熟农商行、西安银行、泰隆银行等。由于篇幅限制,很多技术要点我们无法一一展开,欢迎大家通过技术文档或点击“阅读原文”进一步了解 mPaaS :https://tech.antfin.com/docs/2/49549

| 活动推荐:MTSC 2019 测试开发大会

MTSC2019 第五届中国移动互联网测试开发会将于 6 月 28-29 日在北京国际会议中心举行,50+ 来自 Google,BAT,TMD 等一线互联网企业的测试大咖分享精彩议题,涵盖移动自动化测试、服务端测试、质量保障 QA、高新测试技术(AI+、大数据测试、IoT 测试)等专题。

蚂蚁金服多位技术专家将在大会上分享精彩议题,解密蚂蚁金服内部移动测试 2.0+ 演进之路、代码实时染色系统如何完成代码覆盖率检测等,期待与你交流。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2020年边缘计算最新前沿报告:如何与核心云、5G、AI协同?如何打造新业态和部署运营?...

作者 | 唐汝林、陈琪责编 | 屠敏头图 | CSDN 下载自东方 IC数据来源 | 华信咨询设计研究院有限公司在数字经济的时代浪潮中,作为关键生产要素的数字技术的快速变革已成为新常态。正当人工智能开始崭露头角时,云计算的边缘化延伸趋势又成为了另一个新焦点…

Springboot/Cloud集成Sentinel进阶实战

文章目录一、自定义限流处理1. 自定义处理类2. 请求一次测试3. 重新配置流控规则4. 重新测试5. controller二、方法限流处理2.1. 创建接口2.2. 创建接口实现类2.3. 接口调用2.4. 请求2.5. 设置流控规则一、自定义限流处理 自定义限流文档 1. 自定义处理类 package com.gblfy…

若依SQL Server开发使用教程

1. sys_menu表中的将菜单ID修改为自动ID,解决不能增加菜单的问题,操作流程如下: 解决方案如下 菜单栏->工具->选项 点击设计器,去掉阻止保存要求更新创建表的更改选项,点确认既可以保存了 2 自动生成代码找不表的解决方案…

java基础 代理

1.代理是什么? 代理(Proxy)是一种设计模式。提供了对目标对象另外的访问方式,即通过代理对象访问目标对象。 有一个类我们无法更改,但我们希望在原有类上加上我们自己的逻辑(增强),这时就可以…

使用EMR Spark Relational Cache跨集群同步数据

背景 Relational Cache是EMR Spark支持的一个重要特性,主要通过对数据进行预组织和预计算加速数据分析,提供了类似传统数据仓库物化视图的功能。除了用于提升数据处理速度,Relational Cache还可以应用于其他很多场景,本文主要介绍…

异构计算黄金时代下,超强异构计算服务器FP5468G2将会带来哪些变革?

就在几年前,计算领域还是通用计算的天下。此一时,彼一时,随着计算密集型领域的快速崛起,面对移动互联网、大数据和云计算需求的爆炸式增长,传统的单一CPU方案越来越力不从心。另一方面,半导体技术在纵向提速…

基于External-DNS的多集群Ingress DNS实践

概要 External-DNS提供了编程方式管理Kubernetes Ingress资源的DNS的功能,方便用户从Ingress管理DNS解析记录。而在kubernetes federation v2环境中,使用External-DNS可以快速的管理多个联邦集群的Ingress DNS解析,降低用户的操作成本。下面…

在执行Dockerfile时出现Get https://registry-1.docker.io/v2/错误的解决方案

文章目录1. 登录阿里云2. 找到镜像加速3. 使用阿里云镜像1. 登录阿里云 没有就注册,不要文为什么要用阿里云镜像,没办法,就是快! https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 2. 找到镜像加速 复制内容: {&qu…

Java基础--反射

1.概念 什么是反射? (1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。 本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息…

做可交互的统计图表,这套图形语法不容错过

选好可视化 “一图胜千言”,是最直观的数据可视化魅力。以图表来传达和沟通信息,其效率远超枯燥乏味的数据表达。 有需求就有市场。数据可视化崭露头角后,各个厂商出备的产品、解决方案,开发者自研的可视化工具、操作平台都如雨…

Centos7 docker 安装 zookeeper

# 默认下载最新版本 docker pull zookeeper# 指定版本下载 docker pull zookeeper:3.5.8# 创建zk容器 docker run -di -p 2181:2181 --namezk zookeeper:3.5.8# 查看正在运行的容器 docker ps# 防火墙开放2181端口firewall-cmd --zonepublic --add-port2181/tcp --permanent# 重…

10分钟带你逆袭kafka之路

作者:故事凌 1. kafka概述 ##1.1 kafka简介 Apache Kafka 是一个快速、可扩展的、高吞吐的、可容错的分布式“发布-订阅”消息系统, 使用 Scala 与 Java 语言编写,能够将消息从一个端点传递到另一个端点,较之传统的消息中 间件…

漫谈分布式计算框架

如果问 mapreduce 和 spark 什么关系,或者说有什么共同属性,你可能会回答他们都是大数据处理引擎。如果问 spark 与 tensorflow 呢,就可能有点迷糊,这俩关注的领域不太一样啊。但是再问 spark 与 MPI 呢?这个就更远了。…

UI2CODE再进化!结合Redux的框架升级!

背景 UI2CODE的目标是通过分析视觉稿得到对应的代码,让AI提高开发效率。然而过去静态化页面的产出,不能得到业务场景的需求。针对于此,我们以UI2CODE自动化开发为基底,结合Redux的消息机制,将自动化生成的维度提升到页…

8080:The Tomcat connector configured to listen on port 8080 failed to start 的解决办法

问题再现: 控制台最后会显示Application启动失败,如下: ...*************************** APPLICATION FAILED TO START ***************************Description:The Tomcat connector configured to listen on port 8080 failed to start. …

数据库连接池的原理没你想得这么复杂

来源 | 犀牛饲养员的技术笔记封图| CSDN 下载于视觉中国背景介绍数据库连接池和线程池等池技术存在的意义都是为了解决资源的重复利用问题。在计算机里,创建一个新的资源往往开销是非常大的。而池技术可以统一分配,管理某一类资源,它允许我们…

CICD联动阿里云容器服务Kubernetes实践之Bamboo篇

本文档以构建一个 Java 软件项目并部署到 阿里云容器服务的Kubernetes集群 为例说明如何使用 Bamboo在阿里云Kubernetes服务上运行Remote Agents并在agents上运行Build Plans。 1. 源码项目 本示例中创建的GitHub源码项目地址为: https://github.com/AliyunConta…

拔掉数据库的电源会怎样?阿里云数据库新型灾备架构,让云端容灾有“备”无患

拔掉数据库的电源会怎样? 假设我们拔掉数据库的电源会怎样? 在日前举行的阿里云“企业级”云灾备解决方案发布会上,阿里云智能技术战略总监陈绪就来了一场现场“断电”演示,拔掉了数据库的电源。 (直播回放&#xf…

高可用 kubernetes 集群部署实践

前言 Kubernetes(k8s) 凭借着其优良的架构,灵活的扩展能力,丰富的应用编排模型,成为了容器编排领域的事实标准。越来越多的企业拥抱这一趋势,选择 k8s 作为容器化应用的基础设施,逐渐将自己的核…

还不知道 AWS 是什么?这 11 个重点带你认识 AWS !

作者 | Sajan Agrawal译者 | 天道酬勤 责编 | 徐威龙封图| CSDN 下载于视觉中国云计算的出现使软件行业受益匪浅。大多数公司已经改变了策略,将现有的项目转移到云上,并在此基础上构建新的项目。今天,让我们了解一个名为亚马逊网络服务云&…