博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
apk测试工具调研
阅读量:6860 次
发布时间:2019-06-26

本文共 3288 字,大约阅读时间需要 10 分钟。

hot3.png

最近 boss让做关于apk测试工具的调查,最后整理出如下,现在网络上的资料并不是很多,自己一步步经过查找测试到完成领导的预定任务到提交报告。

因为是份报告所以有些地方并不是很具体,可以参考给出网址。

如果有什么不足还请告知及时补充。

 

apk测试工具调查

简介

android SDK里自带的测试工具monkey 和 monkeyrunner

1. mokey

Monkey工具直接运行在设备或模拟器的 shell中,生成用户或系统的伪随机事件流,主要应用在压力和可靠性测试上,运行该命令可以随机地向目标程序发送各种模拟键盘事件流,并且可以自己定义发送的次数,以此观察被测应用程序的稳定性和可靠性

2. monkeyrunner

monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器,主要可应用于功能测试,回归测试,并且可以自定义测试扩展,灵活性较强,并且测试人员可以完全控制。

目前的缺陷

•不支持中文字符的输入(只能输入ASC码中存在的字符)

•基于UI操作,一旦遇到复杂的应用,测试代码的复杂度指数增长;测试设备性能不同,需要根据设备的快慢对操作加时延;脚本的运行速度慢

•无法将测试结果抓取出来,只能采用截图比较。无法准确统计测试数据。

•drag方法只能实现简单的滑动屏幕的操作,不能进行复杂的拖拽。微博客户端的下拉刷新操作无法模拟出来。

下面主要说明monkeyrunner的使用

monkeyrunner的使用

考网站

http://www.51testing.com/html/59/n-242759.html

http://blog.csdn.net/zm2714/article/details/7980634

运行monkeyrunner之前必须先运行相应的模拟器,不然monkeyrunner无法连接设备。

虚拟机

1.        打开cmd  执行emulator -avd 4.0(4.0为设备名称)命令,启动虚拟机。

2.        执行 monkeyrunner命令。

3.        进入shell命令交互模式后,首要一件事就是导入monkeyrunner所要使用的模块。直接在shell命令下输入:from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice 回车。

 截止到这步完成,我们就可以利用monkeyrunner进行测试工作了。这里有两种方案,一是直接在shell命令下输入以下命令,另一种是将以下命令写到python文件里(要懂点python脚本)。

命令说明

 这里摘录部分关键命令 详情请参考上述网站或下面的官方网站

  http://developer.android.com/reference/android/view/KeyEvent.html

device=MonkeyRunner.waitForConnection() #连接手机设备

#安装apk包到手机设备。

device.installPackage("C:/WINDOWS/ElectronicMenu/bin/ElectronicMenu.apk") 

#启动其中的任意activity了,只要传入package和activity名称即可

device.startActivity(component="com.sarnath.electronicmenu/com.sarnath.electronicmenu.MainActivity") #打开这个应用程序的某个Activity。

device.reboot() #手机设备重启

按下HOME键 device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)

按下BACK键 device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)

按下下导航键

device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP) 

  按下上导航键

  device.press('KEYCODE_DPAD_UP',MonkeyDevice.DOWN_AND_UP) 

按下OK键

device.press('KEYCODE_DPAD_CENTER',MonkeyDevice.DOWN_AND_UP)

  在指定位置发送触摸事件(x,y的单位为像素)

  device.touch(x,y,TouchPressType-触摸事件类型)

python脚本

  就是把系列指令写在x.py 文件里,运行cmd 执行如: monkeyrunner D:\test.py

 指令,D:\ 是存放 x.py文件的路径。test.py放在d 盘的根目录下。

 Text.py文件

   from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice

device=MonkeyRunner.waitForConnection()

device.startActivity(component="com.beer.dialogdemo/com.beer.dialogdemo.MainActivity")

device.touch(132,271,MonkeyDevice.DOWN_AND_UP)

过程执行了开启项目到点击按钮事件的整个过程。

手机设备

 链接设备后直接执行shell命令

Monkeyrunner

 后边的步骤同上。

shell操作的截图如下

Hierarchy Viewer 工具使用简介

此device.touch(x,y,TouchPressType-触摸事件类型)的触摸事件的坐标获取工具

此方法使用时要开启hierarchyviewer工具获取对应的坐标,开启方法 另起cmd 定义到sdk的tools目录 执行shell命令hierarchyviewer.bat。

详情请参照:http://tech.it168.com/a2011/0802/1226/000001226690.shtml

使用截图

整体效果图如下

                         

总结

1.monkeyrunner提供的操作有限,适合处理反复点击等小范围的操作,用来测试一个点是比较好的。可以做软件跑分、浏览器跑分等 稳定性测试,或是用来安装JUnit写好的测试app。

2.monkeyrunner不适合处理连续的操作。一旦进入到应用层,因为drag方法的不稳定,跳转就需要用点击按钮来代替,这样无法模拟用户真实的操作。 用工具来定位坐标、查找各个按钮的id,消耗时间。一旦UI改变,脚本可能就无法使用

3.monkeyrunner或者其他基于UI的脚本测试,对所测试系统的稳定性要求比较高。如果系统或者软件非常容易奔溃,就会终端测试脚本,无法自动化。

4.基于UI的自动化测试,测试结果通过截图判断,无法脱离人工干预。

5.综上,基于UI的自动化测试事倍功半,是一条不归路。建议根据Android本身的特点,合理划分软件层次。测试部门用JUnit来测试API,完成逻辑测试;用人工来完成场景测试。

个人意见

综合上述观点,monkeyrunner 符合这次调研的要求,但就目前的版本来说并不适用于平时的测试工作。

附:两款云端测试工具

Testin云测试

优点:测试点更精细跟准确。

测试分为 兼容测试、性能测试、功能测试三大部分。

这是以 点菜宝为例上传测试后的结果概要截图

百度云众测

优点:提供APP评测、用户体验反馈、问卷调查等

就云测试来说,两款云端测试工具 我更倾向于前者,也就是Testin云测试,测试更具象化。

而后者 更亲向于 用户体验与反馈。

                                                                                            ---刘利涛

                                                                                            2013-4-26日

转载于:https://my.oschina.net/u/617297/blog/125586

你可能感兴趣的文章
我的前端2019面试指引
查看>>
iOS热更新实现方式
查看>>
创建型模式 工厂模式
查看>>
最新安装CocoaPods教程
查看>>
Swizzling Method
查看>>
React同构踩坑记录
查看>>
教你用Python如何实现微信自动回复功能,机器人自动对话!
查看>>
使用var定义变量和不使用的区别
查看>>
React两个bug踩坑
查看>>
vue引入mxGrpah
查看>>
合并冲突 - 每天三分钟玩转Git(三)
查看>>
你们公司今年会发年终奖吗?Python告诉你大家怎么说
查看>>
Derek解读Bytom源码-Api Server接口服务
查看>>
Java之JDK7的新语法探索
查看>>
微软大秀Windows 10中的MyOffice App免费功能
查看>>
UDP协议
查看>>
学jstl,看这一篇就够了
查看>>
Webpack之tapable深入学习(一)--Sync*Hook
查看>>
Redis 环境配置,缓存必备
查看>>
设计模式 系列记忆之 六大设计原则
查看>>