[安卓自动化测试] 001.UIAutomator初探

2024-02-16 10:50

本文主要是介绍[安卓自动化测试] 001.UIAutomator初探,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

UIAutomator初探

这篇文章你会学到的东西:
1、什么是自动化测试
2、有哪些测试
3、自动化测试工具
4、认识UIAutomator
5、用UIAutomator制作第一个自动化测试工具。


ps:笔者也是刚开始学习UIAutomator,若有错误的地方,或者有更好的操作方式,望请不吝赐教。

偷懒改变世界。
人们懒的走路,发明了汽车。
人们懒的爬楼梯,发明了电梯。
人们懒的洗衣服,发明了洗衣机。
人类的进步,离不开偷懒而又聪明的发明家。现在,一群偷懒而又聪明的程序员将偷懒上升到新的高度——利用程序来进行自动化测试。将测试员从繁琐的测试用例中解放出来,从此,可以一边喝着咖啡一边看着机器自动的执行测试,测试员不必看着测试用例重复进行无数次的测试步骤,也不必担心失误而导致不必要的错误,更不用担心压力测试而导致身心疲惫。UIAutomator就是这么一个被聪明的偷懒家发明出来的东西。我们可以使用它,来编写自动测试的代码,执行这些代码,就可以让机器自己执行测试,而我们,嘿嘿,去喝杯咖啡或者看看足球比赛吧。

什么是自动化测试

自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。

有哪些测试

1、Google CTS测试:兼容性测试,测试ROM的兼容性标准
2、实验室机器人测试,机械臂自动化模拟测试
3、Monkey Test 压力测试
4、End User Test 终端用户测试
对于美国的手机运营商,如:T-Mobile、Sprite、AT&T,他们都有自己一系列的手机性能测试、他们的测试项目、测试方法、测试过程,其实都是他们的商业机密,一个保证测试结果的严谨性,一个也保证了手机厂商能够不作弊的完成测试。所以千万不要学华X手机,在T-Mobile实验室偷拍手机机器人的软件、技术参数及其他机密信息,而被T-Mobile列入北美黑名单。逗比新闻

自动化测试工具

MonkeyRunner

monkeyRunner提供一个API来控制Android设备。可以写一个Python脚本来安装应用、运行应用、发送键值、截图。monkeyRunner对python进行了封装,加入一些针对Android设备的类。可以完全用python脚本来实现这些功能。适用于压力测试。

Instrumentation

基于Android单个Activity的测试框架。适用于白盒测试

Robotium

一个优秀的测试框架,基于Instrumentation的二次封装。使用于白盒测试

QTP

一个web上的自动化测试工具,通过录制脚本来实现自动化测试。

UIAutomator

目前最佳的UI自动化测试框架。基于Android4.x+系统,专业UI自动化测试,可以模拟用户操作手机的各种行为。编写快速,可以使用大部分Android Api、无需前面,没有Activity限制。

认识UIAutomator

UIAutomator,翻译过来就是Android UI 自动化测试,在Android4.1版本中推出了UiAutomator测试框架,此框架一改过去较麻烦的UI自动化测试,和解放了过去诸多枷锁,让UI自动化测试变得非常容易和简单。

用UIAutomator制作第一个自动化测试工具

我们用UIAutomator制作一个自动化测试工具,它只有一个简单的能力——帮助我们按手机的Home键。

第一步:创建一个测试工程

我们用ADT来创建一个测试工程。

创建一个java Project。

选中菜单栏->File->New->Java Project就可以创建一个java工程了。
如图所示:

alt text

添加必备的jar包。

在工程目录下新建libs包。里面存放从Android SDK的platform/android-19/目录下获取的两个jar包:android.jar和uiautomator.jar。把这两个jar包丢到libs目录下。并build path 配置好这两个jar包。

编写测试用例类。

我们创建了一个Test类,它继承了UiAutomatorTestCase类。我们在此编写一个测试用例方法。它的作用是按下手机的home键。因为UiAutomator遵循Junit3,所以方法前都要带test。代码如下:

package com.babybus.uiautomator.demo001;import com.android.uiautomator.core.UiDevice;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;public class Test extends UiAutomatorTestCase {public void testPressHomeKey() {UiDevice.getInstance().pressHome();}
}

  

第二步:创建build.xml
在终端执行脚本

在终端输入代码:

android create uitest-project -n [jar name] -t 1 -p[project path]

 

android create uitest-project 表示说要创建一个uitest-project项目
-n 这个项目的名称
-t 需要用到的android SDK的id。我们可以在终端执行android list来查看用的sdk的id编号。如下图:

alt text

-p 工程目录
输入好代码回车,如下图:

会在工程目录下创建build.xml.刷新工程,如图所示:

第三步:修改build.xml

我们把build.xml第二行的help改成build。代码如下:

<project name="BBUIAutomator" default="build">
第四步:编译,生成自动化测试jar包。
编译

执行命令:ant -buildfile [build.xml路径] 或者你也可以cd到工程目录下,执行命令:ant -buildfile build.xml,回车,如下图:

出现BUILD SUCCESSFUL,就表示编译成功了。我们会在bin目录下,发现编译好的jar包。

第五步:push jar包到手机
我们需要把这个生成的自动化测试jar包push到手机的data/local/tmp目录下。

执行命令:

adb push [jar path] /data/local/tmp


终端运行结果如下:

第六步:执行jar包里面的自动测试代码。这里如果正确,应该看到好像有一个隐形人,按下了手机的Home键。

执行命令:

adb shell uiautomator runtest [jar name] -c [类名(完整类名)]

回车,等几秒,你会看到手机好像有个人按了home建,屏幕返回到Home页面。 命令输出结果如下:

 

 

本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 ) 
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4493142.html

 

转载于:https://www.cnblogs.com/superdo/p/4543069.html

这篇关于[安卓自动化测试] 001.UIAutomator初探的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接