基于monkeyrunner的Android应用自动化测试框架的研究
2019-03-04王佳明骆德汉
王佳明 骆德汉
摘要:针对Android手机应用软件测试,提出了基于monkeyrunner框架的自动化测试解决方案。对于Android手机常用的测试场景给出了具体的实现方法,测试结果表明,通过基于monkeyrunner的Python脚本实现测试用例自动化,减少了重复和烦琐的手工测试,提高了Android手机应用测试的效率,节约了人力成本,缩短了软件开发周期。
关键词:Android;自动化测试框架;monekyrunner;Python
中图分类号:TP311.1
文献标识码:A
文章编号:1009-3044(2019)34-0234-03
1 背景
自2011年以来,Android -直是全球最畅销的智能手机操作系统,截至2018年12月,Google Play商店拥有超过260万个应用程序[1]。随着手机应用的功能越来越复杂,更新迭代越来越快,传统的手工测试已经不能满足要求,Android手机应用自动化测试的需求越来越迫切。自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程[2],通过所开发的软件测试工具、脚本等来模拟用户行为,按照事先设计好的路径,完成固定的流程和操作,实现替代人工重复性的工作。相对于手工测试,自动化测试具有良好的可操作性、可重复性和高效率等特点。软件自动化测试是提高测试效率、覆盖率和可靠性等的重要手段,它是软件测试不可分割的一部分。常用的Android自动化测试框架有monkey,monkeyrnner,Robotium,UIAutoma-tor等,本文主要介绍基于monkeyrunner框架的Android应用自動化测试。
2 monkeyrunner简介
monkeyIunner提供了一个API,可以通过这个API在An-droid代码之外控制Android设备或模拟器,通过monkeyrunner,可以编写自动化测试脚本程序去安装一个Android应用程序或测试包并运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站[3]。monkeyrunner API可以跨多个设备或模拟器,可以在同一时间接上所有的设备或一次启动全部模拟器,也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。由于monkeyrunner是一个API工具包,可以基于PYthon模块和程序开发一整套系统,以此来控制Android设备。
monkeyrunner API由三个模块组成,分别为MonkevRunner,MonkeyDevice,Monkeylmage。MonkeyRunner提供了将monkev-runner连接到设备或模拟器的方法,它还提供了为monkeyrunner程序创建UI以及显示内置帮助的方法;MonkeyDevice提供了安装和卸载软件包,启动Activity以及向应用程序发送键盘或触摸事件的方法,还可以使用它来运行测试包;Monkeylmage提供捕获屏幕,将位图图像转换为各种格式,比较两个Monkeylmage对象以及将图像写入文件的方法[4]。
3 开发环境搭建
本节主要介绍怎样在Windowsl0 64位操作系统下搭建Android开发环境,需要提前准备好JDK(Java Development Kit),SDK(Software Development Kit)和Python安装文件。根据作者的经验,JDK和SDK安装过程相对简单,主要是安装完成后配置相应的环境变量略显复杂,因此下面主要介绍JDK和SDK环境变量的配置。由于Python安装和配置都很简单,且相关资料很多,在此不再赘述。
3.1 JDK环境变量的配置
JDK是Java语言的软件开发丁具包,它是整个Java开发的核心,它包含了Java的运行环境,Java工具和Java基础的类库[5]。在电脑上安装好JDK后,按照下面的步骤配置JDK的环境变量。
Step 1:鼠标右键点击“我的电脑”图标,选择属性一高级系统设置一高级一环境变量。
Step 2:新建系统变量,变量名为:JAVA_HOME,变量值为:C:\Program Files\Java\j dkl.8.0_191,也就是安装JDK的根目录。这里需要注意的是,每个人JDK安装路径可能不一样,需要根据自己JDK实际安装路径填写,如图2所示。
3.2 SDK环境变量的配置
Android SDK.即Android软件开发工具包,是软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。为Android提供了必要的API库和开发工具来构建,测试和调试应用程序[6]。简单来讲,An-droid SDK可以看成用于开发和运行Android应用的一个软件。SDK不需要安装,将下载好的SDK压缩包解压到本地电脑相应的目录下即可,然后按照下面的步骤配置SDK的环境变量。
Step 1:鼠标右键点击“我的电脑”图标,选择属性一高级系统设置-高级一环境变量。
Step 2:新建系统变量,变量名为:ANDROID_HOME,变量值为:D:\android-sdk_r24.4.1-windows\android-sdk-windows,也就是前面提到的SDK压缩包解压到本地电脑后的路径。
Step 3:修改系统环境变量Path,在Path中新建%AN-DROID_HOME% \platform-tools和%ANDROID_HOME% \tools,如图5所示。
4 自动化测试实例
本文测试所用手机为酷派cooll dual,型号为C106-9,手机Android版本为6.0.1。测试电脑为Windowsl0 64位操作系统,所有测试脚本都是基于Python 3.7.0开发。在进行测试之前,请将手机通过数据线连接至测试电脑,确保手机进入开发者选项且允许USB调试,并允许安装来自未知来源的应用和后台安装应用。
4.1 自动化实例一
实例一测试用例:实现自动安装手机QQ,并卸载手机中已经安装好的新浪微博。
4.1.1测试脚本代码
测试脚本代码如下,将其保存为install_uninstall.py至电脑d:\scripts目录下。
4.1.2 执行测试
将手机通过数据线连接至电脑后,在电脑cmd中执行:monkevrunner d:\scripts\install_uninstall.py,如图7所示。
4.2 自动化测试实例二
实例二测试用例:实现手机QQ的自动启动和登录,默认用户名为‘123456,密码为‘654321。
4.2.1 测试脚本代码
测试脚本代码如下,将其保存为login.py至电脑d:\scripts目录下。
4.2.2 执行测试
将手机通过数据线连接至电脑后,在电脑cmd中执行mon-keyrunner d:\scripts\login.py,如图9所示。
4.3 自动化测试实例三
实例三测试用例:实现抖音的自动启动和自动划屏播放下一个视频的功能,并将每个视频截屏后保存至本地电脑。
4.3.1 测试脚本代码
测试脚本代码如下,将其保存为douyin.py至电脑d:\scripts目录下。
4.3.2 执行测试
将手机通过数据线连接至电脑后,在电脑cmd中执行:monkeyrunner d:\scripts\douyin.py.如图11所示。
5 结束语
本文提出了一种基于monkeyrunner框架的Android应用自动化测试方案,根据Android常用的测试场景给出了具体的实现方法,这些方法可以广泛适用于Android手机应用的功能测试以及回归测试等。当然monkeyrunner也有它的不足,例如點击和拖拽方法需要获取坐标,但坐标依赖于手机屏幕分辨率,如果手机屏幕分辨率一旦改变,就会使得相应的操作可能无效,因此monkeyrunner脚本代码的复用率和可移植性比较差,这时就需要寻求其他更好的测试方案。
参考文献:
[1] Android (operating system)[EB/OLl. https://en.wikipedia.org/wi-ki/Androidjoperating_system).
[2]李龙,李向函,冯海宁,等.软件测试实用技术与常用模板[Ml.北京:机械工业出版社,2010.
[3] monkeyrunner[EB/OL]. https://developer. android. com/studio/test/monkeyrunner.
[4]许奔.深入理解Android自动化测试[M].北京:机械工业出版社,2016.
[5]支艳强,谢文阁,王丽丽.基于JDK的Java集成开发环境的设计和实现[J]‘大众科技,2011(9):9.
[6]周宇,尹生强,王冬青,等,基于Eclipse和Android系统的App开发平台搭建研究[J].青岛大学学报:工程技术版,2016,31(3):50.
【通联编辑:谢媛媛】
收稿日期:2019-10-08
作者简介:王佳明(1984-),男,湖北洪湖人,硕士研究生,主要研究方向为软件测试。