淘系产业级移动应用智能测试最新方案MonkeyBot公开!测试效能提升3倍以上

本文主要是介绍淘系产业级移动应用智能测试最新方案MonkeyBot公开!测试效能提升3倍以上,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

f06bb72e8536563ecdaee0a9ed28b1a1.gif

产业级移动应用测试面临操作系统碎片化人工测试负担过重、功能复杂场景繁多、自动化测试探索效率低效的问题。淘系技术质量团队与北京大学讲席教授谢涛老师团队合作,在业界提出了首个基于计算机视觉(和多模态强化学习)的自动化视觉测试框架Monkeybot,解决了遍历测试效率低下,自动测试工具难以跨平台使用的问题,为移动应用测试提供了通用高效的解决方案。并于21年9月底在QECon全球软件质量效能大会上对行业公开了这一技术方案。随后,在10月份云栖大会上谢涛教授对MonkeyBot落地效果进行了分享展示。

2d3df0bae79e08ce54dc840fadc197b5.png

Monkeybot在阿里巴巴集团包括淘宝、千牛等在内的十余个大型产业移动应用上落地部署,服务于他们的日常测试和质量保障,特别是双十一等重要场景的质量保障和测试工作中,并通过软件绿色联盟向全行业提供用户体验测试,智能探索测试,智能验证等服务。已在Android、iOS、鸿蒙等操作系统落地实践,推动测试效能提升3倍以上。

接下来一起看下我们是如何来实现的吧。

研究背景

手淘拥有十亿级用户,产品快速迭代和功能复杂多样化给质量保障工作带来巨大挑战,面临功能测试回归成本高、易漏测等问题,迫切需要一个高效智能的自动化测试方案来保障软件质量。

  解决复杂交叉场景易漏测问题

随着淘宝业务的扩大,当前手淘不仅具有购物下单的功能,还有很多其他的业务功能,比如有消息聊天、直播、逛逛、互动游戏等。不同的业务都是划分在不同的团队负责,因此各业务的上线和回归都是相对比较独立的。但是,从用户角度很难区分每个业务的边界,用户使用产品过程一定是一个多场景组合的情况,比如用户买东西的时候想跟商家沟通一下尺寸号码的问题,用户大概率会从商品详情页找到客服,然后进到聊天页面发消息;结果商家没有及时回复,下次可能会从消息tab找到会话去聊天,然后逛着逛着商家回复了又可以从新消息弹框点进去聊,聊完了可能还要返回继续逛,逛着逛着又想起一些事情要跟商家交代,于是从快捷入口进到消息再找到会话聊天。一个简单且常用的聊天功能,用户可能会有很多路径去完成,过程中也会涉及到很多消息之外的业务,对于测试同学很难全面覆盖组合场景验证,也就容易出现交叉场景漏测导致线上问题发生。

97be7933dde496325a56839c2332d1a0.png

  解决快速迭代回归成本高问题

手淘客户端每次迭代发布各个业务都需要进行回归验证,每个月手淘至少一次正式版本发布,大概每周都有一次灰度发布,对于每一次发布都要进行至少两轮回归,每次回归至少覆盖安卓和iOS两个系统,保守计算每个月至少要做16次功能回归,每次回归都需要大量的人力成本。

为了降低回归成本,UI自动化测试广受大家喜爱,Selenium、appium、Airtest、RXT等工具陆续出现,通过维护自动化脚本来实现测试自动化,也取得了不错效果。但是随着产品快速迭代,维护自动化测试脚本仍然需要很大的人力成本和时间成本。

为了更好地为测试提效,让机器尽可能以接近用户的视角来自动执行测试流程,尽可能多地覆盖不同业务场景,受遍历测试和Monkey测试的一些启发,我们尝试让机器在给定app内自主探索,结合智能的探索策略,具备类人测试能力,实现全流程无人参与的自动化测试。

思路分析

为了让机器具备类人测试能力,我们制定了以下几个目标:首先,在执行层面我们希望一套测试工具支持多系统多平台验证;其次,测试工具需要摆脱对测试脚本依赖,具有主动理解业务的能力;最后,在理解业务的基础之上能智能做出决策执行操作,有效覆盖更多用户操作路径。

显然,这些目标是很难实现的。但是,我们仍然要在这布满荆棘的道路上摸索前行!

通过长时间的技术调研和尝试,我们找到了如下图所示的一套解决方案。第一,基于纯视觉的UI分析,不再依赖系统信息完成分析,更好的适配不同系统;第二,通过图像特征、文本信息和UI的结构等信息来对UI状态进行建模获取图文多模态信息,然后对于图片进行不同层次多粒度状态抽象,更好地理解图像业务含义;第三,引入强化学习探索策略,结合探索历史和智能探索策略,实现更有效地路径覆盖。

27ef740e6b8ed4fe331f5df5f0736a07.png

MonkeyBot 技术框架

MonkeyBot测试执行是依赖RXT平台完成的,RXT本身具有兼容不同系统的优势,因此也达到了摆脱系统依赖的目的。对于状态抽象层主要对获取的UI界面的图像特征、文本特征及图像结构等进行分析,多模态多粒度的状态抽象为我们压缩了UI信息,也为决策智能技术的入场打好了地基。探索策略部分则主要包含奖励设计,动作选择和参数更新,结合历史状态访问情况和设计的奖励策略进行行为决策。

e2ecdb1e74bf3c509a8e50303aa64510.png

具体执行流程如下:

  1. 执行进入app初始状态。

  2. 对当前状态UI界面进行抽象,通过元素识别、文字提取和图像结构解析后的信息进行场景特性分析,然后再进行分层状态抽象。

  3. 对于抽象的状态信息与历史访问状态信息进行比对,结合好奇心策略、置信上界探索策略以及深度广度平衡等策略分析后,得到一个奖励值分布,并完成参数更新。通过奖励值分布情况选取下一步的行为。

  4. 通过RXT完成执行操作,并获取新的状态。

  5. 以此循环执行,直到指定探索轮数或者指定探索时间结束。

UI 元素识别技术挑战和解决方案

近十年来计算机视觉在自然图片处理中展现出了傲人的效果,无论是基于统计学习的类人视觉模型还是基于深度学习和数据驱动的模型化神经网络,计算机视觉在诸如图片分类,语义分割,目标检测等任务上都有接近人类的表现。尽管计算机视觉在自然图片处理任务上如火如荼的发展,在UI这一特定场景上的研究却相对缺乏。我们通过在手淘上的大规模实证研究表明,直接将现有的计算机视觉技术不加改动地应用到UI分析任务上去会导致较差的结果,想要把整个UI界面中的所有元素信息比较精准的分割识别出来是十分困难的:

  1. 通过传统图像分割方式很难设定一个较好的阈值,容易把多个元素合并成一个,或者把一个整体元素拆分成多个小的元素。

  2. 想完全依赖深度学习的方法来训练识别元素也是行不通的,对于手淘这种大型流行应用,UI界面大部分的元素是基于业务设计的,样式多变,不统一,且更新迭代快,因此几乎不可能完成对所有元素数据集的收集,难以在实际使用中落地的。

为此,我们发展了特别针对UI图像的综合视觉分析技术。

首先,我们的技术是低数据依赖的:针对没有测试历史数据的移动应用,我们的技术基于动态图像滤波,使用多种滤波算法和自底向上的基于视觉统计的梯度分割与区域聚合,无需训练数据即可获得较高的分析精度;同时我们的UI分析技术可以自动在分析过程中收集待测应用数据,借助测试历史反馈数据,驱动基于深度学习和机器学习预训练模型的参数微调,进一步提高UI分析的效果。

其次,我们吸收了autoML的思想,通过自动化参数组合和检验选择出最适合于指定待测应用和待测机型适的参数组合。

此外,我们的技术对于UI能够进行基于图像语义和业务语义的分割,对于UI的不同组分进行异质视觉分析,进一步提升了UI分析的稳定性和健壮性。

c9715bc0690e5fa47976c9bc0a93931f.png

上图展示了我们的UI 分析技术的效果。我们在手淘核心场景上的控件定位,控件分类和语义分割准确度超过了95%,在UI的层次提取和业务逻辑规约上也实现了极高的精度。

探索过程遇到的问题和解决方案

在遍历和探索测试过程中常常会遇到这样三个问题:

  1. 类似或者相同的业务场景重复测试,比如在手淘中下单的场景,虽然是不同商品,但是功能都是一致的,因此没必要对每个商品详情页重复测试。

    906e5b29c506dfaaa55db27efab6a3a2.png

  2. 在场景交错的情况下,可能会出现循环的情况,即A场景可以点击元素进入B场景,然后B场景又可以点击某元素回到A场景。比如下图所示与商家聊天的场景和店铺首页场景间可以来回切换,这时可能会导致机器一直陷入循环做无效探索。

    52fbb08daafee9e519f2a5f96cd5b9a8.png

  3. 在一些场景中可有效点击的元素非常少,很多元素是点击无反应的,此时如果一直探索的话会影响探索效率,如下图聊天页面,每条聊天信息都被识别成一个独立的元素,但是均无法点击。

    7a3011f6638ec26976d760efd5c75751.png

我们的探索过程是基于强化学习完成的,针对以上问题做了很多探索策略的优化设计。对于重复探索和循环探索都会跟历史状态有非常大的关系,因此我们引入好奇心探索机制,增加对历史状态记忆的能力,促使代理人选择更容易触发新状态的动作。并通过深度广度平衡能力,决定是否继续在当前页面探索,还是回到之前的页面寻找其他操作路径。

针对无效点击的问题首先在做状态抽象的时候我们会分析元素分布和文本分布情况,对界面信息抽象压缩,然后我们会根据状态抽象信息对每一个状态进行一个价值上的估计,即这个状态是否重要,我们是否需要继续探索,从而提升我们的探索有效性。

效果展示

在手淘app测试中,设计后的探索策略对比Monkey测试随机策略activity覆盖率提升120%,有效功能路径覆盖提升2倍以上,大大提升了覆盖路径的有效性。

880cd0c6f69c123b80b3af843b8bc77f.png

以下为Monkey和MonkeyBot运行过程的对比效果:

总结和展望

对于拥有海量用户或者错综复杂业务场景的应用,都会面临功能测试回归成本高且容易漏测的问题,如何在测试中全面覆盖用户操作路径成为质量保障的一大难题。

本文介绍了一套由淘系技术质量团队和北京大学谢涛教授团队一起合作研究的基于融合AI技术打造的智能探索测试方案,并展开分析了方案解决的一些技术问题和业务问题。

为打造一套通用的类人测试的工具,采用RXT机器人测试工具完成执行操作,然后打造一套纯视觉分析的解决方案。对于UI能够进行基于图像语义和业务语义的分割,在手淘核心场景上的控件定位,控件分类和语义分割准确度超过了95%。

通过图像特征,文本信息和UI的结构等信息来对UI状态进行建模,同时容许状态抽象的多粒度表达。多模态信息的使用充分的提高了状态抽象的准确性和可靠性,而多粒度的状态抽象则使得业务语义和多种测试需求的同步表达成为了可能,增加了智能探索测试的灵活性。

引入强化学习探索策略,结合探索历史和智能探索策略,解决了相同业务场景重复探索、探索陷入循环和界面无效点击等问题,对比随机策略activity覆盖率提升120%,有效功能路径覆盖提升2倍以上,实现更有效地路径覆盖。

未来在探索策略上还有更高的提升空间,我们希望通过状态抽象和探索策略能力的提升,机器可以实现在给定app内更高效探索,同时结合智能验证能力主动发现过程中遇到的bug,完全具备类人测试能力,实现全流程无人参与的自动化测试。

欢迎大家交流合作

联系人:居凡
邮箱:weizhi.mwz@alibaba-inc.com

✿  拓展阅读

c80686b401df50bb8dfc75bc8eb18745.png

08b96ea0b4a2f12864c675d04d88de03.png

作者|居凡

编辑|橙子君

出品|阿里巴巴新零售淘系技术

9d3c37771ee3a56a993eadd84fb2c087.png

efc3b95f0195bc3af7465b133bfc33ad.png

这篇关于淘系产业级移动应用智能测试最新方案MonkeyBot公开!测试效能提升3倍以上的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/817634

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in