通过机器人对系统进行黑盒测试,类似的做法在国外Axiz机器人也有尝试。
▐为什么要UEE设备端到端自动化测试
E:满足深度用户体验评测的诉求(Experience)
更高精度:随着深度用户体验提升的需求日益增加,端侧的性能和体验优化会精确到ms级别,因此需要找到进一步提升用户体验指标度量精度的方法。
多设备间交互测量:随着多端交互的场景越来越多。不光是APP之间,设备层面APP和PC乃至IoT之间交互的场景也不断出现,需要度量多APP多设备之间的交互性能及用户体验,需要度量多设备多系统间(从A手机到B手机,手机到PC/IoT 等)的交互式体验指标。
真实模拟:软件模拟点击和真实用户操作还是存在差异,要探索一种更模拟用户真实操作的方式。
E:对多设备端到端功能自动化测试的支持(End1 to End2)
业务客户端发版经常需要对Android/iOS/Pad甚至PC进行覆盖测试,同时APP之间的业务交互场景也逐渐增多,比如淘系的消费者-商家互通全流程,测试不仅仅只是单手淘、天猫或者千牛APP覆盖,还要能覆盖和串联起从消费者到商家的整个业务流程端到端自动化。此时,我们面临着新的挑战:
多机交互自动化:无法快速支持多手机 App 间、手机与PC/IoT之间交互的操作;
基于外部视角的对象识别:CV和AI算法的加持让UI自动化测试在对象识别上有了新的突破,但依然无法摆脱软件层API操作的局限,受所在操作系统限制,依旧存在部分特定场景下元素无法识别的问题(如系统内Push消息操作);
一套跨终端设备的通用脚本:还不是真正意义上的多设备多平台一套脚本驱动,Android/iOS/PC/IoT受系统版本或环境影响,可能仍需要多套自动化脚本,维护成本高;
一个脚本一次执行覆盖多个设备和系统:由于不同操作系统有不同的自动化执行引擎,一个脚本一次执行无法同时对Android/iOS/PC/IoT 完成回归。
RXT(Robot-XT)迎接挑战,应运而生
基于UEE自动化的理念,我们尝试使用机器人的方式获取用户体验指标以及开展UI自动化测试,设计并研发了RXT。它基于IoT架构,从“用户真实感受”出发,零侵入被测系统获取用户体验指标(加载耗时、跳闪白分析),同时支持图/文驱动跨设备交互的UEE自动化用例批量执行。如下是演示效果:
下图是RXT的能力介绍:
▐深度用户体验指标
RXT立足“用户真实感受”获取用户体验指标,用机械臂手代替人手操作,用高速摄像头代替人眼记录操作过程,并具备体验指标算法(不需要目标对象的加载耗时分析、白屏分析)的大脑结构,RXT也可支持设备交互场景及竞品对比场景。
▐多端自动化
RXT在传统的单机操作之上引入一层新的“主控大脑”,接管、调度跨设备的时序操作,完美支持了多端多设备、多App间交互场景的自动化能力;RXT使用原生Python程式化(基于unittest)组织用例,用户可灵活控制/增加定制逻辑,并基于Python module理念抽离公共逻辑,降低用例维护成本,此外,用例可通过任务组织批量执行;RXT上层用例基于图文方式1套脚本驱动,底层执行引擎支持机械臂引擎和UIAutomator/WDA自动化引擎,其中机械臂方案做到与平台、设备无关,打通手机和PC(平板)间自动化的壁垒,满足各种场景的测试需要;“非预期”弹窗(突如其来的红包Poplayer、首次安装需要的各种权限、过渡动画广告等等)是自动化测试的灾难性问题,RXT-ESP提供了相关的识别和处理机制;RXT提供真机用例调试能力,用户无需准备任何本地环境即可运行、调试用例。
▐对象识别
多场景传感器融合下的对象识别,使用ROI截取、图像增强/去噪优化被测对象图片,坐标变换关联手机元素位置与机械臂操控位置,基于OCR获取目标图像文本信息,改进SURF/SIFT特征匹配算法提升图像识别准确率。
▐异常处理
RXT具备非预期弹窗的检测与处理能力,例如可以检测首页Poplayer红包弹窗、权限弹窗等,并且使用NLP对互动按钮(如”我知道了”,”允许“,”不再提醒“)进行语义理解、分类,然后加以处理。
▐用例生成
RXT能从分散杂乱的用户埋点数据中,通过清洗、聚合、去重构建手淘消息用户行为访问路径及Top N热点路径,从而转变成具备业务语义的用例,后者正在进行中。
项目实战
▐手淘消息场景用户体验升级项目
项目目标简介:手淘消息是世界上最大的商业沟通场景,该项目目标是大力提升手淘消息的加载体验、并进行跳、闪、白治理
策略&效果:下面是该项目优化前后,使用RXT观察到的用户使用前后版本打开消息业务的效果对比视频。
▐手淘消息多通道升级项目
项目目标简介:该项目涉及到底层链路新/老切换,与上层客户端业务进行对接,为降低质量风险,上线期间兼容了新/老链路方案,对应的测试回归场景涉及到手淘消费者(Android/iOS)、千牛商家(Android/iOS/PC)双端的新老链路交互,按笛卡尔乘积增长,共有48种,每种场景都基本对应同一套测试用例。
策略&效果:上层业务上存在大量重复Case回归,我们的策略是将简单、重复的用例交给RXT,人工投入更多的时间在复杂场景的用例设计和回归上。
▐大促态消费者-商家下单核心链路验收
项目目标简介:大促态下,消费者提交订单是核心链路。不仅需要保障手淘消费者(Android/iOS)提交订单成功,并且需要保障千牛商家侧(Android/iOS/PC)能够实时收到消费者提交的订单信息。
策略&效果:如下是实战效果(手淘-千牛移动端):
总结及未来展望
本文主要介绍了UEE自动化测试理念,并在此基础上设计并研发了RXT以及相关的一些项目实践结果。我们还将在“业务先赢”、“极致体验”的道路 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 上继续前行。未来我们将继续优化RXT产品,继续提升产品稳定性、智能化能力。同时也希望我们的能力可以更多对行业开放,让智能化测试服务行业,实现真正的测试智能。欢迎大家提供合作机会!!
同时我们也会在后续陆续发布与本文相关更多的技术方案和细节,例如:多传感器融合复杂场景的元素识别、智能异常处理、工程化开展等,敬请期待!
附:什么场景下建议开展UEE端到端用户体验测试?
建议UEE自动化作为UI自动化的辅助和补充。以下场景建议使用UEE自动化测试:
1、单设备APP用户体验指标评测:单手机APP对精度有更高要求,更真实模拟用户体感的场景。
2、多设备APP间的用户体验交互或对比评测:比如手淘消息和微信消息的用户体验指标对比、不同APP启动时长对比等等。
3、多设备交互的端到端功能自动化测试:比如社交类场景的卖家B和买家C的消息互通测试、手淘买家和千牛PC卖家之间业务依赖的B到C全流程测试等。
欢迎入群交流,RXT钉钉群二维码:
淘系技术质量-测试开发团队
淘系技术质量测试开发团队,在这里可以经历世界最大的双十一、春晚等超大并发场景;可以接触到全链路压测、海量的数据处理、人工智能推荐算法等领域;可以学习到业界最前沿的测试技术。我们团队负责阿里新零售领域IM消息平台的质量保障,通过IM即时通讯产品(push,聊天机器人、单聊、群聊、消息号和聊天室)构建连接消费者和数百万商家,处理百亿级规模的消息,为上百家APP提供安全、稳定、标准化的电商组件SDK。团队探索智能化测试,将AI能力在测试开发领域落地,走在行业前沿。欢迎有相同兴趣的同学加入我们。
邮箱:xionglin.wxl@alibaba-inc.com