安卓自动化测试第一课

安卓自动化测试大课第一课

2013年11月24日星期日
上午课程

一、安卓系统简介

1、安卓四重要组件(面题)

Activity:看到的单独的屏幕都是Activity,显示控件并提供监听用户操作的功能;
BroadcastReceiver:提供app对外部事件进行过滤和允许干扰当前app,进行外部事件的接收并作出响应;
Service:长生命周期,没有用户界面的程序,可以用来开发如监控类程序。Service的数量过多会导致安全软件进行拦截并浪费用户的手机资源;
Content Provider:DB的一个工具类,可以让app的指定数据集提供给其他应用程序。SQLlite及其他合理的数据存储介质。

2、Acitivity生命周期(面题)

onCreate() onStart() onResume() 是看见app界面之前的准备;
Running()时用户才能看到app界面;
onrestart在哪个支线?应该是在onStop()支线,而不是onPause()支线;

3、无线测试与PC测试的区别?

(1)、功能测试:包含黑盒和白盒测试;
(2)、UI测试:适配测试,易用性测试;
(3)、网络测试:2G,3G,WIFI, 联通,移动,电信。

4、性能测试

电量测试,流量测试,内存占用测试,CPU占用测试,流畅度测试,加载性能测试,响应时间测试,稳定性测试。
(2)、流量测试:流量越来越便宜,将来这方面的测试将逐渐退出主流测试;
(3)、内存占用测试:占用量测试及内存泄露测试;
(4)、CPU占用测试:影响CPU性能的测试;
(5)、流畅度测试:界面中帧测试。
(6)、加载性能测试:测试加载时间,在规定时间内的加载完成度;
(7)、响应时间测试:针对多种无限类型进行响应时间进行测试;
(8)、稳定性测试:monkey进行测试,一般情况下不使用人工进行测试。

5、安全测试

接口级别安全测试,后台Service安全测试,SQLite注入测试,加密解密测试,HTTPS强证书测试,伪造广播测试等
(1)、
(2)、Service安全测试:Service被Debug则会造成安全漏洞
(3)、SQLite注入测试:类似PC的SQL注入,明文存储数据的SQLite被拉出后则被泄露,因此该部分数据要进行加密解密测试;
(4)、加密解密测试:
(5)、HTTPS强证书测试:证书的强度需要足够才能通过该类测试;
(6)、伪造广播测试:判断接收的广播是否来自正确的来源;出现漏洞则可能造成短信费损失及垃圾数据的堆积。

6、服务器端测试

PC级别测试

二、Monkey稳定性测试工具

注意事项:1、不要放中文目录下;2、不要放深目录下;3、目录中不要存在特殊字符;

简单版本的MonkeyTest命令讲解

1、adb shell monkey 100
最简单的monkey命令,随机执行动作100次
2、adb shell monkey –p com.android.contacts 100
针对联系人功能,随机执行动作100次
3、adb shell monkey –p com.android.contacts –v –v –throttle 300 100
100个事件,事件间隔300ms。

高级版的MonkeyTest命令讲解

1、adb shell monkey –p com.android.contacts –v –v –pct-touch 50 –pct-trackball 30 –throttle 300 100
pct-touch 50点击事件占50%
–pct-trackball 30 滚动球事件占30%
–throttle 300 100 间隔300ms 100次
注意:复制粘贴的命令中”-”会产生错误字符。
参数的比例与测试的app特性有关,本命令对于桌面应用程序中包含测试滚动球的内容是比较适用的。
2、adb shell monkey –p com.android.contacts –v –v –pct-touch 50 –pct-trackball 30 –s 123456 –throttle 300 100

-s 参数后面跟着必须是数字的参数内容 测试种子,种子相同时测试序列相同。实战测试中是必须跟-s参数,用于复现BUG。
“123456”最好由变量进行替换,即可做到测试时随机,复现时只要记录当时变量的值即可。

Monkey的基本用法和参数事件

-s
伪随机数生成器的seed值。如果用相同的seed值再次运行 Monkey,它将生成相同的事件序列。
–throttle
在事件之间插入固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被产成。
–pct-touch
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。

常见问题

1、定位bug:
含有“crash”、“ANR”、“Exception 自己应用的包名”关键字的都是BUG日志。

2、Monkey除了做伪随机事件外,能不能写脚本?
答:方法1、1个事件100%占比率,则多个不同的命令组合成为脚本
方法2、使用参数-f调用脚本
使用adb push xxx.script /sdcard/命令将脚本放置到手机的sdcard中,准备进行脚本调用
(但是不要用这种方法去进行功能测试)

adb shell monkey –v -v –f /sdcard/monkey.script 2 2

               |--–f /sdcard/monkey.script调用脚本
               |---2 等待2秒
               |---2 执行2次

扩展:使用adb -s emulator-5554 指定操作的安卓虚拟机

并发原理
获取adb devices设备列表

获取PKG是否安装的信息
命令:Adb shell pm list package
pm=package manager包管理器

快速查找包名:
结果导入文件,然后分析得到要找到的包名
在Linux 下:Adb shell pm list package > /root/1.txt & –表示后台进程执行该命令
windows下是否存在&是没有任何区别的

覆盖安装或卸载安装

并行Monkey测试
adb -s emulator-5554 logcat > a.txt & (&参数表示:后台执行)

你可能感兴趣的:(android测试,monkeyTest)