安卓应用测试指南 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请求参数接收控制指南分享

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

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

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

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

python中各种常见文件的读写操作与类型转换详细指南

《python中各种常见文件的读写操作与类型转换详细指南》这篇文章主要为大家详细介绍了python中各种常见文件(txt,xls,csv,sql,二进制文件)的读写操作与类型转换,感兴趣的小伙伴可以跟... 目录1.文件txt读写标准用法1.1写入文件1.2读取文件2. 二进制文件读取3. 大文件读取3.1

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字