写点什么

淘宝深度分享:如何用真正的机器人模拟真实用户做测试?

  • 2022 年 4 月 20 日
  • 本文字数:4755 字

    阅读完需:约 16 分钟

淘宝深度分享:如何用真正的机器人模拟真实用户做测试?

嘉宾 | 金晖(定源)


“为模拟真实用户”,Robot-XT 极测机器人提供了为用户体验度量评测的能力,不仅可以最大程度地模拟用户真实操作,还实现了多设备跨终端的功能自动化和用户体验度量。同时,Robot-XT 极测机器人通过 IoT+AI 的智能化技术搭建一套支持多机操作并具备高稳定性的的 UEE 自动化解决方案,实现了覆盖从线上 App 到线下智能门店场景的端到端自动化测试,赋能行业,为软件绿色联盟的加盟 App 提供用户体验评测服务。

 

在 2021 年 5 月北京 QCon 全球软件开发大会上,阿里巴巴高级测试专家金晖(花名定源)分享了阿里巴巴基于 AI+IoT 的机器人测试方案。我们整理了他的演讲,以期为您提供自动化测试的新方案。(下文以金晖老师第一人称叙述)

 

一、泛终端自动化测试及真实用户体验评测的背景介绍

互联网公司通常存在多个 App 交互频繁。比如消费者在 c 端手淘、天猫下单,商家会在千牛 App 收到订单提醒,多 App、跨终端的交互测试场景越来越多。从终端来说,随着智能移动终端普及从智能手机拓展到了 IoT(物联网),终端系统也拓展到了 Android、iOS、鸿蒙、Win Touch、RTOS 等等。随着新零售的发展,线上线下不断融合,硬件和云端、AI 形成了软硬件一体化的链路,此时测试和纯软件层的测试差异较大。

 

在新的时代趋势下,传统基于单操作系统内的 UI 自动化测试已经无法满足多 App 多终端间的交互测试,无法真正意义上地实现端到端覆盖业务的全链路测试。

 

同时,在产品精细化过程中,用户体验竞争白热化,严重影响到用户流失、拉新促活,因此深度用户体验提升的需求也日益增加,用户体验指标需要更高精度的测量,需要探索一种完全模拟用户真实操作的方式。

 

我们缺乏多端/多系统交互全流程的⾃动化测试⼿段,体验指标需分段获取且精度不够,在不同操作系统上测试需要维护多个脚本。因此,我们尝试了一种新的测试思路:UEE 测试(User E2E Experience Testing)——以“真实”模拟用户为核心目的,与被测软件解耦,实现了真正的端到端的测试。

 


UEE 的第一个 E 代表了 Experience,即具备深度⽤户体验评测的能⼒,即要求:

  • 更⾼精度:端侧的性能和体验优化精确到 ms 级别

  • 多设备间交互测量:除了 App 之间,实现和 PC 乃⾄IoT 之间交互的场景

  • ⽆侵⼊真实模拟:降低软件模拟点击和真实⽤户操作的差异

 

第二个 E 代表了端到端——“End1 to End2”,即实现对多设备端到端功能⾃动化测试的⽀持:

  • 多机交互⾃动化:快速⽀持多⼿机 App 间、⼿机与 PC/IoT 之间交互的操作

  • 外部视⻆的对象识别:摆脱软件层不同操作系统 API 操作的局限,以及软件层 API 对 部分场景下元素⽆法识别的问题

  • ⼀套跨终端设备的通⽤脚本:降低多套⾃动化脚本的维护成本

 

所以 UEE 测试要具备两个核心能力,用户交互体验评测能力多设备端到端功能自动化能力

 

用户交互体验评测能力即通过 IoT(如摄像头、机械⼿、传感器)等外部设备采集,并通过 AI 算法将真实⽤户感受数字化,来获取最接近真实⽤户体感的性能及⽤户体验指标。

 

多设备端到端功能自动化能力即通过机械⼿对多设备跨终端的被测系统做⾃动化测试、通过 AI 算法实现 IoT 设备的调度控制、对象识别、测试步骤执⾏、异常处理等。

 

二、基于 AI+IoT 的机器人测试方案:UEE 测试模式

 


实现机器人测试,首先要用高清、高速摄像头模拟人的眼睛,引入摄像头的对象识别机制代替原存在系统内截图、录屏和 XPath,同时拍摄多个设备,做到⽆侵⼊被测系统。

 

第二是用机械⼿模拟人的单手和双手,包括伸缩、滑动等动作,此时需要封装一套机械手的操控的 API,并且它要实现底层软硬件执⾏引擎透明,既可用机械手也可用传统软件层执行,⼀套脚本跨越所存在的操作系统,同时可操作多个设备。

 

最后通过算法代替人脑智能分析,实现视视频/图像分析、异常弹窗处理、⽩屏检测等

 

RXT 机器⼈技术⽅案

 


RXT(Robot-XT)机器⼈技术方案核心难点有三:

  • 实现多传感器的融合,通过摄像头、机械手、传感器等等组合实现与被测系统的解耦

  • 通过多种算法组合⽀撑体验评测和跨端⾃动化

  • 开发⼀套跨平台系统的脚本 IDE

 

IOT 控制方面的核心是控制摄像头和机械手。我们采取了云边结合的架构,在边缘端部署了控制摄像头和机械手的 RXT 客户端。

 


摄像头的操控

 

我们发现相同算法面对摄像头⻆度不同、环境光源不稳定等情况下收集到的视频、图像数据,计算结果差异很大。因此,我们采用了双摄像头模式,顶部摄像头负责图片拍摄,做图像实时分析;侧面底部摄像头负责拍摄视频传到云端做离线用户体验评测。

 

同时,摄像头拍摄的视频和录屏截屏的图像质量存在的品质差距,增加了算法处理的难度。我们通过图像增强,直方图处理等,使得图像更易被算法识别。

 

此外,我们需要从摄像头拍摄的画面分割出所需的手机屏幕。机械臂在执行时常常和手机屏幕相连,因此做边缘检测也会合为一体,难以拆分。手机屏幕、械臂及周边底色存在亮度差异,我们借此实现了 ROI 获取,过程如下图所示:

 


机械手精准操作

真正的端端自动化必须保证机械手的精准操作。核心问题是如何将手机屏幕、摄像头拍摄的图像以及机械手三个坐标映射到同一个世界坐标中?我们采取了多级空间坐标映射,通过透视变换,实现算法识别后机械臂可精准地点到指定位置。

 


基于图像 AI 的组合算法

图像 AI 的算法我们主要实现了三种:图⽂并茂的对象识别、⾮预期弹窗的识别处理和体验评测⾃动化。



图⽂并茂的对象识别

识别对象时,我们改进了 SURF 算法,叠加了 OCR 技术,增强了小图标识别能力。原生的 SURF 算法精度不够,对于特征相似的小图像经常匹配失败。我们在特征向量上增加了斜率判断,匹配的成功率大幅度上升(如图中情况 3)。如特殊情况屏幕中存在多个相同小图标,则需要手动调参。

 


非预期弹窗的识别处理

弹窗一般存在两类,系统级弹窗和业务级弹窗。系统级弹窗即首次安装 App 时的授权许可等,业务级弹窗即业务促销的红包、活动等的弹窗,如盖楼、抢红包等。

 

图一、图二中系统级的弹窗可通过传统方式监听,图三、图四业务级弹窗受业务影响,变化复杂,传统⽅法⽆法监听。因此,我们将传统的基于系统事件监听的⽅式整体变为了基于纯视觉算法的判断。

 


图一、图二中系统级的弹窗,可通过 OCR 识别先将文字提取出来,用波特进行语义理解,识别出“好”、“确定”等词后点击。对于图三、图四中业务级弹窗,我们首先通过 Yolov3 做的模型训练,将弹窗从背景中分割出来,分割后可识别每个弹窗的圆×进行。该组合算法可处手淘理 95%以上的弹窗。

 

体验评测⾃动化

体验评测自动化中,我们认为用户真实感受到的加载时长等于从机械手点击到页面变化的最后一帧的时间差,关键在于如何去判断页面加载的结束帧。我们采取视频降采样,根据灰度、⼆值化、去噪声计算图像的差值分数,即变化的程度,随后用实验测出合适的阀值,之后在整个视频区间倒序查找阀值之上最后一个差值,即为最后一帧,流程如下图所示:

 


一套跨平台脚本 IDE

我们跨平台脚本 IDE 的特点是一个脚本同时可以操作多个设备,可在 IDE 上调试和运行,即脚本需在 Web IDE 上运行后,方可提交机器人执行。

 

在调试和运行时,多个模拟⼿机可以随时切换,可切换手机去看执行步骤,通过 d1、d2 等来操作所有设备中的被测对象。此外,我们⽀持截图编写脚本。

 

机器人测试实战案例

我们在实际项目中使用 UEE 完成了众多的测试任务。

 

UEE 测试项目自动化实战

一年半前,淘系消息系统要对百亿级 BC 消息系统(买卖双方聊天系统)做整体架构和业务模型升级。当时,旺信业务已运行多年,重构时需让⽤户⽆感平滑迁移,而重构后⾸个客户端版本即为双⼗⼀版本,缺乏灰度时间。所以此时测试至关重要。

 


上图中巴拿马是我们内部指新的消息系统的代号。为了保证项目平滑稳定,我们在客户端同时准备了新老两个版本,一旦故障可快速切回老通道。

 

该方案极大地增加了测试工作量:BC 消息系统交互本就非常复杂,包括安卓、iOS、PC 等多端,再加上新、老通道,组合共计 36 种消息互通场景,工作量为原有的 36 倍。

 

当时,我们只凑成了 10 个测试同学,要在 30 天中测完 700 多人日的测试任务,难于上青天。

 

UEE 测试系统在此项⽬中起了关键作用,⽀撑了 Android、iOS、PC 共 6 轮⾃动化回归,每轮执⾏了⽤例 3000+,使测试人员可以将精力放在服务端全量入压测等复杂测试上。

 

UEE 测试项目体验实战

手淘和千⽜的体验优化中,UEE 测试支撑了⼿淘消息/千⽜商家 Android/iOS 核⼼场景加载时⻓测试,获得了跳闪⽩检测体验数据 2000+次,⽀撑了淘宝买菜 Android/iOS 核⼼场景 A/B⽅案和竞品分析,获得了体验数据 500+条、

 

这里需要特别强调的是,某些 lOT 设备厂家的定制系统有未对外开放的 API,此时在软件层就无法实现竞品分析了,需借用 UEE 测试系统。

 

此外 ,在双十一大促备战时,我们会设置专项,包括卖家到买家到卖家等端到端的核心流程自动化、手淘/千牛加载体验验收、线上舆情自动化复现等。

 

线下端到端测试

下图是 UEE 测试系统线下端到端测试的案例,图中分别为 UEE 和联通合作、天猫无人超市、阿里未来酒店的场景。

 


阿里未来酒店存在 300 多间房,测试人脸识别购买不能只在软件层做回归,但硬件测试找真实的人去测成本高。我们通过机器人测试对未来酒店人脸购买做了自动化验收。

 

室内定位拥有众多 AP 节点,需要对整个空间搭建指纹库,即基础的信息库。通过人工收集数据工作量大且精度只能到米,借助 RXT 机器⼈可实现自动化地采集和定位且精度可控制到厘米。上图(左)为用激光雷达扫描的酒店⼤堂 SLAM 地图。最终实现了根据地图自动化采集和巡检。

 

线下门店无人超市的重力货架的测试也需要测硬件,我们通过机器人对 300 多个重力货架,实现了压测和功能上巡检。

 

机器人智能化测试下一步思考和探索

UEE 测试改变了改变了端到端测试,从软件层到硬件层,从单端到多端覆盖了全端;扩展了自动化测试范围,⼀次性完成功能⾃动化和⽤户体验评测;降低了测试脚本维护成本,⼀套 DSL 脚本同时操作 1 个或多个设备(iOS/Android/PC Touch/RTOS/鸿蒙 等等)。

 

UEE 测试适合以下场景:

  • 单设备/多设备 App⽤户体验指标⾼精度评测

  • AB/新⽼版本/竞品体验对⽐评测

  • 多设备交互的端到端功能⾃动化测试

  • 一次性完成单端功能+⽤户体验评测⾃动化测试

  • 线下场景软硬件端到端测试

 

UEE 测试在阿里集团内,⽀持了阿⾥集团 10+ App 的测试,覆盖了阿⾥集团⼤促体验验收、商家业务、消息、社区团购、直播、逛逛、IoT、线下智能等业务形态。

 

阿里在 2018 年内部开始使用机械手和摄像头做用户体验评测,2019 年时软件绿色联盟也推出了移动智能终端的行业标准,认定需要用摄像头和机械手来做评测。我们 2020 年和绿盟合作,成为了软件绿色联盟的官方评测平台之一。现在还在内测阶段,未来将面向全行业开放,希望我们的开源能减轻大家的负担,用无脚本的方式实现自动化测试。

 


我们已经开始研发的 RXT2.0 引入了强化学习、好奇心机制、规则自学习等能力,将聚焦在智能探索和智能验证的两个能力上,去实现智能探索测试,只能判断测试过程中发现的预期内和预期外的问题。

 

此外我们也在研发做新一代的自动化的机柜,可规模化量产的机械臂+摄像头⼀体机柜。

 

嘉宾介绍

金晖(花名定源),阿里巴巴淘系高级测试开发专家。目前负责淘系的消息基础平台、千牛商家平台、服务市场等业务板块的质量保障。也曾负责无人超市、阿里未来酒店等线下智能场景的质量保障。存在丰富的线上和线下测试经验,主攻智能化测试方向,探索 UEE(User E2E Experience Testing)自动化测试。在加入阿里巴巴之前,就职于中国工商银行软件开发中心杭州测试部担任高级经理。并存在多项发明专利。

 

活动推荐

2022 年 6 月,ArchSummit 全球架构师峰会(上海站)即将落地,会议邀请了美团优选测试团队负责人李永刚,设置了【智能化软件测试】专题,邀请了美团、百度等知名公司一线技术专家现场分享其基于 AI 技术、专注于安全性和自动化的测试方案。大会日常已上线官网,现场门票火热售卖中,感兴趣的同学可扫描图中二维码了解详情。



2022 年 4 月 20 日 10:312511

评论

发布
暂无评论
发现更多内容

华为云携手马栏山文创园助力湖南广电荣获国家广电总局多项大奖

华为云开发者社区

AI 5G 视频 华为云 马栏山

TCP协议

IT视界

TCP 传输协议 网络通信

【LeetCode】你能在你最喜欢的那天吃到你最喜欢的糖果吗?Java题解

HQ数字卡

算法 LeetCode 6月日更

我把 Spring Boot 项目从 18.18M 瘦身到 0.18M,部署起来真省事!

xcbeyond

微服务 springboot 6月日更

面向对象的Python编程,你需要知道这些!

华为云开发者社区

Python 面向对象 oop 面向对象编程

Chia奇亚云算力挖矿系统开发成功案例丨Chia奇亚挖矿源码成品

系统开发咨询1357O98O718

LeaRun .Net Core/Java工作流引擎,分离式前端,升级Vue

雯雯写代码

Vue 工作流引擎

fil云算力系统开发具体流程丨fil云算力开发源码成品

系统开发咨询1357O98O718

🏆未来可期,WebRTC成为实时通讯方案的行业标准

浩宇天尚

音视频 WebRTC 实时通信 6月日更

一封MySQL之父Monty的回信,开启彭立勋的数据库之路

华为云开发者社区

MySQL 数据库 opengauss GaussDB 华为云数据库

你的同事是你的竞争对手吗?

石云升

战略思考 职场经验 6月日更

国内首篇云厂商 Serverless 论文入选全球顶会:突发流量下,如何加速容器启动?

Serverless Devs

Serverless 容器 云原生

一文回顾 Java 入门知识(上)

逆锋起笔

Java 后端 javase

基于开源Tars的动态负载均衡实践

vivo互联网技术

负载均衡 TARS

书单 | 5月畅销新书情报,你最Pick哪一本?

博文视点Broadview

C 语言面向对象的封装方式

实力程序员

架构实战营模块五作业

竹林七贤

写给想做程序员的半吊子应届毕业生们

北游学Java

Java Python 求职 秋招

图表示学习+图神经网络:破解AI黑盒,揭示万物奥秘的钥匙!

博文视点Broadview

云上创新,阿里云视频云分享全场景音视频服务背后的场景探索与技术实践

阿里云视频云

阿里云 音视频 在线教育 视频会议 直播技术

带你认识大模型训练关键算法:分布式训练Allreduce算法

华为云开发者社区

分布式训练 Allreduce算法 集合通信 分布式通信算法 大模型训练

网络攻防学习笔记 Day33

穿过生命散发芬芳

网络攻防 6月日更

【译】JavaScript 代码整洁之道-异常处理篇

KooFE

JavaScript 大前端 异常处理 6月日更 整洁代码

火爆全网的迁移学习简明手册全面更新,重磅出版上市!

博文视点Broadview

云网络开山之作,揭秘云上高速公路的十年技术成果!

博文视点Broadview

Flink+Alink,当大数据遇见机器学习!

博文视点Broadview

自适应微服务治理背后的算法

万俊峰Kevin

微服务 自适应 服务治理 Go 语言

毕业设计So Easy:珠穆朗玛FM音频电台APP

不脱发的程序猿

android 软件开发 APP开发 毕业设计 移动应用开发

架构实战营 - 模块 5- 作业

carl

为什么说混合云是新基建的流行架构?

博文视点Broadview

anyRTC SDK 5月迭代:优化自定义加密功能,让通信更安全

anyRTC开发者

音视频 WebRTC sdk

淘宝深度分享:如何用真正的机器人模拟真实用户做测试?_架构_李慧文_InfoQ精选文章