安卓应用测试指南 pdf_智能高效、跨设备支持,安卓应用自动测试工具SARA现已开源...

本文主要是介绍安卓应用测试指南 pdf_智能高效、跨设备支持,安卓应用自动测试工具SARA现已开源...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

a6af78b60482e85c78b7741271d63dc2.gif

编者按:在安卓软件测试中,现有的录制与回放技术在录制信息完整度、适配不同机型等很多方面还不能很好地满足工程实践的实际需求。为此,微软亚洲研究院最近提出了一种新的录制与回放技术 SARA,在单设备、跨设备中的录制回放成功率均达到86%,代码已在 GitHub 开源。

SARA 是一个面向移动应用开发者的智能化测试工具,旨在提高软件开发人员进行测试和维护的效率,适应移动开发快速迭代的特点,达到解放开发者、提高生产力的目的。

工具代码已开源

https://github.com/microsoft/SARA

应用背景

在软件测试中,录制与回放技术(Record and Replay, R&R)并不是一个新生事物,在传统桌面程序和 web 程序测试中已经得到了广泛的使用。具体来说,R&R 工具可录制应用程序界面中的用户操作和事件,并通过对输入事件进行模拟来模拟用户操作,从而可以将录制好的用户对程序界面的操作序列不断重复模拟,达到自动测试应用程序的目的。

录制与回放是自动化 UI 测试的重要技术,可以帮助应用开发团队大大提高测试效率。在移动互联网时代,移动应用无处不在,基于录制与回放的测试技术在移动应用的测试中也至关重要。但是由于安卓设备和 OS 版本的高度碎片化,市场上有大量的安卓设备厂家,每个厂家的不同产品都有不同的硬件配置(例如不同的屏幕尺寸)和定制了的安卓 OS,这给移动应用程序对不同安卓设备的适配提出了前所未有的挑战。开发一种能够适应不同配置安卓设备的 R&R 技术成为一个非常迫切的实际需求

学术界和工业界已经对 R&R 技术进行了诸多的研究和开发,目前也已经有多种移动应用 R&R 技术,但是现有的 R&R 技术在适配不同配置的机型上做得不尽如人意。在工程实践中,工程师们希望 R&R 技术不仅仅能够录制鼠标或者触摸点的屏幕坐标信息,也能记录用户操作是在哪些组件上发生的,以及操作事件之间的时间间隔,并且希望录制的事件信息应该对移动应用的内部状态不敏感,从而便于模拟时不断重复。同时,工程师们不希望 R&R 工具受到定制操作系统、有无 Root 权限、有无软件源代码等使用条件限制。根据来自 UIUC 和微信团队对现有工具的研究[3]来看,目前市场上的 R&R 技术在很多方面无法满足工程实践的实际需求。

SARA 为了克服目前 R&R 工具的限制,满足工程实践中的真实需求,微软亚洲研究院数据、知识、智能组提出了一种新的 R&R 技术。 a560b797436c47f9d0274a59bb0b44f1.png 图1: SARA 流程图 针对以上挑战,我们设计了相应的解决方案,并实现了高效、智能的 R&R 工具——SARA。关键技术包括: 1. 利用动态插桩记录丰富的输入来源。插桩是一种通过代码插入或替换来对程序进行监控的技术,动态插桩在程序执行过程中进行插入,不影响动态执行,也无需获取软件源代码,符合实际应用限制。 2. 创新的Self-replay 技术,实现准确高效的回放。由于录制组件信息时间开销大,SARA 在录制环节只记录坐标信息,然后自动地在同一设备上进行基于坐标的回放,同时补充记录组件信息,即 Self-replay 环节。这一技术降低了使用者的时间开销,同时完成了组件信息记录。 3. 创新的Adaptive replay 技术,实现跨设备回放。设备屏幕参数的不同往往会导致界面布局的差异,因此,SARA 在跨设备回放时,进行坐标变换和启发式地组件查找。 性能评估

我们从 Google Play 的24个应用类型中,选取了下载量最高的50个应用程序,来评估 SARA 在实际使用中的性能,并与当前最新的其它 R&R 技术做了比较。我们选取的这些应用具有很强的代表性,每一个应用的下载量均超过百万次。在每个应用程序中选择5个常用的应用场景作为录制和回放的目标。系统的性能评价分为2个方面:在相同设备上的录制回放、在不同设备上的录制回放的成功率。实验选择的设备如表1所示。

3fd6a3d224bb12ff8f13d0ae5e0f4ae9.png

表1:实验设备

1) 同一设备成功率

在录制的265个使用场景中,SARA 能够成功回放228个场景,成功率达到86%,相比于目前其他的工具有较大提升(例如appetizer: 60.7%, RERAN: 10.9%)。

2) 跨设备回放成功率

在随机选择的42个场景进行跨设备的回放评测,共两轮。结果如表2所示。总体成功率也达到86%,远远超过其他工具。

81ecead53ab3e8cf76e461ae1d05d461.png

表2:不同设备录制与回放实验结果(共35个场景)

具体的技术细节可以参见我们的论文[1]。这项技术的代码已经开源[2],欢迎大家试用我们的测试工具,并对技术提出宝贵意见和建议。

参考文献

[1] 2019, J. Guo, S. Li, J.-G. Lou, Z. Yang, T. Liu. Sara: self-replay augmented record and replay for Android in industrial cases. ISSTA 2019: 90-100.

https://www.microsoft.com/en-us/research/publication/sara-self-replay-augmented-record-and-replay-for-android-in-industrial-cases/

[2] 2019. SARA. https://github.com/microsoft/SARA

[3] 2017. W. Lam, Z. Wu, D. Li, W. Wang, H. Zheng, H. Luo, P. Yan, Y. Deng, and T. Xie. Record and Replay for Android: Are We There Yet in Industrial Cases?. In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering. ACM, New York, NY, USA, 854–859.

你也许还想看

8646b91fedd90d6c3705d92d53925f99.png

b354595cecf2cc138d1d519ef8da2c56.png

113e70f0bb3d569e82d3d4306816839e.png 11982ad7e7b04bfed38d8d6045a53f50.png 80f56cbff21e5a1ec26de7d886016657.gif

这篇关于安卓应用测试指南 pdf_智能高效、跨设备支持,安卓应用自动测试工具SARA现已开源...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

SpringBoot整合OpenFeign的完整指南

《SpringBoot整合OpenFeign的完整指南》OpenFeign是由Netflix开发的一个声明式Web服务客户端,它使得编写HTTP客户端变得更加简单,本文为大家介绍了SpringBoot... 目录什么是OpenFeign环境准备创建 Spring Boot 项目添加依赖启用 OpenFeig

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.