ppt.glzy8.com提供海量PPT模板免费下载!

Download Report

Transcript ppt.glzy8.com提供海量PPT模板免费下载!

浅谈我与Android相处的点
滴
Android自动化探索
目的:
1. 实现性能测试及压力测试
2. 实现功能的自动化测试
3. 提高生产力,解放人力
4. 为大规模自动化测试做技术探索和储备
策略:
1. 熟悉android
2. 选择脚本语言
3. 切入某个点实现自动化
4. 丰富更多功能的自动化
5. 实现压力测试
培养人员时间规划:
1. 熟悉android 2012.7.10-2012.07.15
2. 深入了解android testing 相关知识 2012.07.16 – 2012.07.31
3. 编写一个功能点的自动化 2012.08.01 – 2012.08.10
4. 熟悉性能压力测试环境和方法 2012.08.11 – 2012.08.20
5. 编写一个性能压力test case 2012.08.30 – 2012.08.31
6. 丰富功能点和性能等test case 2012.09.01 –后续
措施:
1. 学习:\\192.168.1.100\05 系统测试\Android测试
2. 浏览:http://www.apkbus.com/forum.php?mod=collection&action=view&ctid=1中
测试相关部分。
一、了解android的大体框架
1.应用程序
2.应用程序框架
3.程序库
4.android运行库
5.Linux内核
二、安装Android开发环境,根据例子运行了一个Hello World
三、熟悉Android Testing 相关知识
1.工具相关:DDMS、Itestin、adroidrobot、monkey、monkeyrunner、以及其他对比工
具等等
2.test package 主要是编写test代码进行测试
例子:hello test 对HelloAndroid进行了测试并体现运行后的结果
3.Monkeyrunner:
monkeyrunner工具则是提供一个API来编写程序,控制一个Android从外部设备或模拟器的
Android代码。通过monkeyrunner,可以编写一个Python程序,安装一个Android应用程序或
测试包,运行它,发送按键到它,需要它的用户界面图片,并将截图存储在工作站。
monkeyrunner工具则是主要被设计用来测试应用程序和设备的功能/框架水平,运行单元测试
套件。一个API测试设备与Python programs一个用Python编写的进行api测试的程序这是一
个简单的monkeyrunner程序,连接到一个设备,创建一个MonkeyDevice对象。使用
MonkeyDevice对象,程序来安装一个Android应用程序包,运行它的一个活动,并向其发送按键
事件来达到我们的测试目的。
① 应用程序层
② 应用程序框架层
③ 系统运行库层
④ linux核心层
Android构架划分
Android本身是一套软件堆迭(Software Stack),或称为「软件迭层架
构」,迭层主要分成三层:操作系统、中间件、应用程序。
 Ⅰ. Applications【应用程序层】:
用户直接使用的功能,谷歌提供了基本应用,比如电话、联系人、短信、邮件、浏览器等,还
有无数第三方应用...JAVA开发
 Ⅱ.Application Framework【应用架构层】:
开发应用程序使用的基础组件,相当于供应用程序调用的API,JAVA开发,包括:
1. 丰富的界面控件,如列表、按钮、文本框、内嵌浏览器等等。
2. Content Providers,数据存储组件,应用程序可以通过Content Providers分享数据
给其他应用,也可以访问其他程序的数据,包括系统基本应用提供的数据,如联系人,
记事本等数据。
3. A Resouce Manager, 资源管理器,帮助应用程序访问图片,布局文件等资源。
4. A Notification Manager, 应用程序可以通过Notification Manager在主界面的状
态栏上显示一个自定义的提示信息,用户点击提示信息就能进入程序。
5. An Activity Manager, 主要负责管理应用程序的生命周期和程序调用栈。
Android构架划分
 Ⅲ. Android Runtime【系统运行库层】:
1、Android Runtime【运行环境】
应用程序的运行空间,包括一个实现JAVA语言大多数功能的核心库;以及一个类似JAVA虚拟
机的Dalvik虚拟机,所以应用程序都是运行在虚拟机中运行。Dalvik虚拟机针对移动设备做过优
化,每个程序单独运行在一个虚拟机中,提高系统的安全性和稳定性,但是相对牺牲了一部分性
能。Dalvik VM底层基于Linux核心的线层管理和内存管理等功能。
2、Libraries【库文件界面】:
一系列的C/C++库,相当于Android系统在Linux核心系统上的功能扩展,为Application Framework层的
许多功能提供支持,通过JNI供JAVA调用。包括:
● System C library - libc, 标准C系统库,针对linux嵌入式设备优化。
● Media Libraries - 基于OpenCore的多媒体库,提供视频、音频、图片的播放记录等功能,
支持MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG等
● Surface Manager - 管理显示子系统模块,包括多层程序2D,3D图层混合显示。。。
● LibWebCore - 大名鼎鼎的webkit浏览器内核
● SGL - 底层2D图片引擎。
● 3D libraries - 基于OpenGL ES 1.0 APIs; 包括硬件3D加速(硬件支持的话),
或者优化的3D软解析
● FreeType - 字体引擎
● SQLite - 基于SQL的轻量级数据库
Android构架划分
 Ⅳ. Linux Kernel【linux核心层】:
Linux核心,Android的基础,基于2.6版本,基本的操作系统组件,包括内存管理,进程管理,
存储管理,网络栈,驱动模型等等
• 随机测试的使用方法比较简单,可参考下述参数表,这里举一个例子
进行说明。
• 假设现在要KingsoftClips,我们可输入如下命令:
• adb shell monkey -p cn.wps.clip --pct-touch 50 --pctmotion 50 -v 1000
• 命令解释:↓
• -p后面接的是要测试的包名,金山复制助手的包名为cn.wps.clip
• --pct-touch 50 指的是touch事件所占的百分比为50
• 同理--pct-motion 50指的是motion事件所占的百分比为50
• -v 使反馈信息级别增加1,其默认值是0
• 而最后的1000,则表示发送1000个随机事件。
• 详情可参照下面提供的参数表格。
• 注意:自己指定的百分比之和不能超过100,否则会出错
adb shell monkey -s 1001 -p cn.wps.clip -process-after-error --pct-trackball
30 -v --throttle 500 --pct-motion 50 --pct-syskeys 20 --throttle 500 20000
在python中首先要导入Android的相关组件:
from com.android.monkeyrunner import MonkeyRunner
from com.android.monkeyrunner import MonkeyDevice
from com.android.monkeyrunner import MonkeyImage
连接设备:device = MonkeyRunner.waitForConnection()
安装:device.installPackage('D:/AppInstall/KingsoftClip.apk')
卸载:device.removePackage ('cn.wps.clip')
启动Activity:device.startActivity(component='cn.wps.clip/.CloudClipActivity')
Touch动作:device.touch(200,200,'DOWN_AND_UP')
Drag动作:device.drag((250, 650),(250,150),0,20)
系统按键:device.press('KEYCODE_MENU')
输入字符:device.type('Bobby')
截图:result = device.takeSnapshot()
result.writeToFile('D:/AppInstall/shot'+ time +'.png','png')
运行环境:ADB+SDK包下的Tools工具
将下面代码保存为.bat或.cmd格式的文件,双击即可快速导出手机
LOG信息,具体需要什么LOG可自己修改。
.adb devices:查看当前已与PC端连接的设备序列号
.adb -s XX:加-s可对单一设备执行命令(XX指设备序列号)
.adb install -r *.apk:安装应用程序(带-r参数可以覆盖安装)
.adb uninstall cn.wps.clip:卸载应用程序(注意要用内部包名)
.adb remount:(重新挂载系统分区,使系统分区重新可写)
.adb shell rm system/app/ *.apk:删除系统应用(需要root)
.adb shell am start -n 包名/包名+类名:启动一个Activity
.adb pull /data/data/cn.wps.clip/databases/download.db
【导出应用的下载数据文件】
.常用抓取LOG命令
(1)adb shell top -m 10 -n 20 > c:\log\top.txt(top:打印CPU占用率最高的几个进程)
(2)adb shell dumpsys > dumpsys.txt (dumpstate:打印手机现在的状态,包含了很多内容,比如CPU
占用率,当前运行到哪一行代码,系统的属性等,“系统忙,....无响应”很多是由于死锁引起的,dumpstate对解决
这类问题很有用;)
(3)adb shell logcat /proc/kmsg | tee c:\log\kmsg.txt (kmsg 、kernel:打印的是内核信息)
(4)adb pull /data/dontpanic c:\log (dontpanic:打印的是手机的数据中的堆栈信息)
(5)adb pull /data/anr c:\log (anr:弹出 “应用程无响应 等待 强制关闭”这个对话框时留下来的信息。)
(6)adb shell logcat > E:\log\logcat.txt (缓存区的LOG信息)
(7)adb logcat -b radio (录无线通讯日志)
(8)......
★【Log中搜索异常关键字:FATAL EXCEPTION、NullPointerException、Indexoutof、ANR....】
例1:adb shell input keyevent 3 --HOME
键
例2:adb shell input keyevent 4 --Back键
例4:adb shell input keyevent 5 --电话呼叫
例5:adb shell input keyevent 6/26 --锁屏
例6:adb shell input keyevent 82--Menu
键
例7:adb shell input keyevent 85--播放音
乐
例8:adb shell input keyevent 7--输入字符
7~
....更多键值对可以到Google官方网查询
Monkey_Test关键代码:
adb shell monkey -s 102 -p cn.wps.clip --kill-process-after-error -vv -throttle 1000 50000
一键安装关键代码:
adb install -l -r XX.apk
一键截图关键代码:
result = device.takeSnapshot()
result.writeToFile('D:/KingTest/data/takeSnapshot%times%.png','png')
手机信息查看器关键代码:
adb shell getevent -p
adb shell getprop
手机流量实时监控关键代码:
adb shell cat /proc/self/net/dev /proc/net/dev
资源包审核工具:这个工具就不详述,在这里给大家展示下测试后的最终报告
录制关键代码:
adb shell getevent(需要转换十六进制来获得坐标位置)
回放关键代码:
adb shell sendevent /dev/input/event0
adb shell sendevent /dev/input/event0
adb shell sendevent /dev/input/event0
adb shell sendevent /dev/input/event0
adb shell sendevent /dev/input/event0
adb shell sendevent /dev/input/event0
adb shell sendevent /dev/input/event0
adb shell sendevent /dev/input/event0
以上4组命令必须配合使用,缺一不可
1
3
3
3
0
0
0
0
330 1
58 53
53 200(x)
54 380(y)
20
00
20
00
adb shell cat /proc/bus/input/devices 来获得对应设备的Evnet值
自动化入口检测(单项)
读到APK
反编译
解密失败
解密成功
获得内部程序名称
无ADB
环境与
设备检测
自动设置环境
等待
安装
运行
卸载
退出
失败
保存LOG
批量应用入口检测
获取Apk
解密失败
解密apk
获取失败
无ADB
解密成功
获取内部文件
环境与
设备检测
OK
查杀
流氓软件
未
完
成
等待
安装
运行
检测合格
失败
保存LOG+截图
卸载
记录报表
是否完
成全部
OK
退出
一键卸载
设备无ROOT
判断root
检测环境
检测设备
读取失败
逐
个
卸
载
读取data
读取成功
卸载失败
卸载
计数=0
退出
数据处理
全
部
卸
载
打印结果
Question?
谢谢观赏