写点什么

LinkedIn Test Butler 旨在改进 Android UI 测试

2016 年 8 月 30 日

LinkedIn 工程师兼 Test Butler 创建者 Drew Hannay写道,Test Butler 是一款面向 Android 的开源测试工具,它允许开发人员对若干测试环境设置通过编程进行控制,从而使开发人员可以可靠地运行测试。

据 Hannay 介绍,Test Butler 的灵感来自谷歌 2014 年的演讲“环保之路:清理有毒的移动环境”。该演讲介绍了如何解决反复出现并影响移动测试的问题,比如缺少可靠性和可再现性、速度缓慢等。Hannay 表示,当结果可能受到环境因素影响时,测试就不可靠了,尤其是当它们出现在设备 / 操作系统层面时,比如 Android 模拟器的 CPU 突然休眠,不正常的设备方向变化,随机出现的锁屏,意外弹出的系统对话框,等等。所有那些事件都会导致 Espresso UI 测试失败。

为了解决这些问题,按照最初的设计,Test Butler 将作为一个后台服务在 Android 模拟器上运行,提供一些旨在增加测试环境稳定性的特性,比如:

  • 禁用动画,这是 Espresso 正常运行所需要的;
  • 通过安装一个自定义的 IActivityController 禁用系统对话框;
  • 监控模拟器的锁屏、Wi-Fi 和 CPU,保证它们不会休眠。

测试中的应用可以和 Test Butler 进行通信,并控制多个测试环境变量,比如:

  • 启用 / 禁用 Wi-Fi;
  • 在测试执行过程中通过编程改变设备方向;
  • 模拟不同的定位服务模式,比如,省电模式或者高精度模式;
  • 定义应用程序运行的区域设置。

Test Butler 的一个关键方面是,它使用面向内置 Android 模拟器的系统密钥库进行签名。也就是说,它会自动取得自己所需的任何 signature级的权限,而不需要通过 ADB,或者篡改清单文件。

下面的代码展示了如何设置应用,让其和 Test Butler 一起工作:

复制代码
public class ExampleTestRunner extends AndroidJUnitRunner {
@Override
public void onStart() {
TestButler.setup(InstrumentationRegistry.getTargetContext());
super.onStart();
}
@Override
public void finish(int resultCode, Bundle results) {
TestButler.teardown(InstrumentationRegistry.getTargetContext());
super.finish(resultCode, results);
}
}

当应用和 Test Butler 的连接建立后,你可以使用 TestButler 类提供的多种方法控制测试环境,比如修改定位服务模式、设置 Wi-Fi 状态、触发设备反转,等等。

据 Hannay 介绍,目前,LinkedIn 每天使用 Test Butler 运行超过 1 百万次测试。该工具是开源的,代码托管在GitHub 上

查看英文原文: LinkedIn Test Butler Aims to Improve UI Testing on Android

2016 年 8 月 30 日 19:001163
用户头像

发布了 1008 篇内容, 共 313.6 次阅读, 收获喜欢 282 次。

关注

评论

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

训练营第二周总结

大脸猫

极客大学架构师训练营

区块链交易所源码开发,币币场外交易系统搭建

135深圳3055源中瑞8032

Java-技术专题-Stream流详解

李浩宇/Alex

“绝影”机器狗如何利用ModelArts强化学习算法更改导航轨迹

华为云开发者社区

人工智能 机器狗 导航

人少钱少需求多的新项目该怎么带?看到这篇我心里有底了!

华为云开发者社区

技术 运维 后端

架构师训练营第二周作业

李日盛

架构

打破内卷化,AppGallery Connect的全生命周期赋能方案

脑极体

2020中国系统架构师大会活动回顾:ZEGO实时音视频服务架构实践

ZEGO即构

架构设计 RTC

一周信创舆情观察(10.19~10.25)

统小信uos

架构师训练营 - 第 6 周课后作业(1 期)

Pudding

技术实践丨PostgreSQL插件之pg_dirtyread "闪回查询"

华为云开发者社区

数据库 后端

承兑商支付平台开发搭建,USDT支付系统解决方案

135深圳3055源中瑞8032

产品资讯 | mPaaS 适配 targetSdkVersion 29

蚂蚁集团移动开发平台 mPaaS

移动开发 mPaaS

首个通用安全技术行业标准发布适用于区块链技术架构 但监管仍待完善

CECBC区块链专委会

金融 安全技术

Appium常用操作之「元素定位、swipe 滑屏操作」

清菡

区块链钱包开发技术公司,数字钱包APP系统搭建

135深圳3055源中瑞8032

区块链云算力挖矿平台开发公司,云算力软件开发价格

135深圳3055源中瑞8032

Java-技术专题-JDK8新特性之Stream流

李浩宇/Alex

十个写代码的小技巧,保你在面试过程中脱颖而出

Java架构师迁哥

架构师训练营 -week06-总结

大刘

极客大学架构师训练营

LR软件开发平台:快速建立企业协同办公解决方案

力软.net/java开发平台

作为打工人,如何正确的选择自动化测试工具(完全指南)

软测小生

软件测试 测试 软件自动化测试 测试工具 测试开发

C 语言实现一个简单的 web 服务器

C语言与CPP编程

c c++ socket C语言 HTTP

阿里P8大牛2020年总结整理的心血之作:17W字操作系统、网络协议教程、面试真题(附导图+笔记)

Java架构之路

Java 程序员 架构 面试 编程语言

2020年了,终于有大佬把Java程序员必学知识点总结整理出来了!

Java架构之路

Java 程序员 架构 面试 编程语言

【JSRC小课堂】Web安全专题(四)SRC漏洞挖掘技术之命令执行漏洞

京东科技开发者

WEB安全

训练营第二周作业

大脸猫

极客大学架构师训练营

架构训练营 - 第6周课后作业 - 学习总结

Pudding

阿里技术四面+交叉面+HR面成功拿到offer,谁说双非本科进不了大厂?

Java架构之路

Java 程序员 架构 面试 编程语言

苏州高铁新城打造区块链发展聚集地

CECBC区块链专委会

区块链 智能合约 金融

区块链将与人工智能、物联网、云计算技术形成互补

CECBC区块链专委会

人工智能 物联网

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

LinkedIn Test Butler旨在改进Android UI测试-InfoQ