1 Android Studio 初识
Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。
在IDEA的基础上,Android Studio 提供 :
--基于Gradle的构建支持
--Android 专属的重构和快速修复
--提示工具以捕获性能、可用性、版本兼容性等问题
--支持ProGuard 和应用签名
--基于模板的向导来生成常用的 Android 应用设计和组件
--功能强大的布局编辑器,可以让你拖拉 UI 控件并进行效果预览
--用以捕捉性能,可用性,版本兼容性和其他问题的工具
1.1 Android Studio 简介
http://www.jikexueyuan.com/course/2531_1.html?ss=1
1.2 Android Studio 下载和安装
http://www.jikexueyuan.com/course/2531_2.html?ss=1
如果只想使用Android SDK提供的工具,不需要Android的开发环境,下载Android SDK 就足够了。Android Studio 和 Android SDK 下载地址:
https://developer.android.com/studio/index.html
1.3 SDK tools
Android SDK tools - 软件及开发工具包(software development kit),集成在Android Studio中,被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合,是Android专属的软件开发和测试工具包。
常用工具有:
sdk
|——build-tools
| |——xx.x.x
| |——aapt
|——platform-tools
| |——adb
|——platforms
| |——uiautomator.jar
|——tools
| |——ddms
| |——monitor
| |——monkeyrunner
| |——traceview
| |——uiautomatorviewer
| |——hierarchyviewer
2 环境变量配置
打开计算机属性——高级系统设置——环境变量
2.1 JDK环境变量配置
2.1.1 新建一个环境变量,变量名:JAVA_HOME,变量值: C:\Program Files\Java\jdk1.8.0_91 (JDK安装目录)
2.1.2 在用户变量PATH后面加上变量值 ;%JAVA_HOME%\bin 保存
2.2 SDK环境变量配置
2.2.1 新建一个环境变量,变量名:ANDROID_HOME,变量值:D:\adt-bundle-windows-x86_64-20140702\sdk(以你安装目录为准,是SDK的所在目录),点击确认。
2.2.2 在用户变量PATH后面加上变量值 ;%SDK_HOME%\tools;%SDK_HOME%\platform-tools; 保存
2.2.3 Android SDK配置完成,接下来验证配置是否成功。
点击运行——输入cmd——回车——输入adb——回车
3 常用测试工具介绍
3.1 aapt
aapt即Android Asset Packaging Tool,在SDK的build-tools目录下。该工具可以查看,创建, 更新ZIP格式的文档附件(zip, jar, apk)
3.1.1 列出压缩文件目录
aapt l[ist] [-v] [-a] file.{zip,jar,apk}
3.1.2 查看apk包的packageName、versionCode、applicationLabel、launcherActivity、permission等各种详细信息
aapt dump badging file_path.apk
3.1.3 查看权限
aapt dump permissions file_path.apk
3.1.4 查看资源列表
aapt dump resources file_path.apk
3.1.5 查看apk配置信息
aapt dump configurations file_path.apk
3.1.6 查看指定apk的指定xml文件
aapt dump xmltree file_path.apk res/***.xml
3.2 adb
3.2.1 查看设备连接
adb devices
3.2.2 查看log信息
adb logcat [option] [filter-specs]
3.2.3 安装和卸载APP
安装: adb install apk所在路径
卸载: adb uninstall app包名
3.2.4 导入和导出文件
adb pull remote local 把手机local目录的文件导出到pc
adb push local remote 把pc的文件push到手机
3.2.5 查看adb其它命令
adb help
3.3 uiautomator
uiautomator 是Android原生UI自动化测试框架,API介绍如下:
http://wear.techbrood.com/tools/testing/testing_ui.html
3.3.1 UiDevice :在测试中可以通过UiDevice对象去对设备的控制,如点亮屏幕、锁屏、旋转方向、截图等,点击home键、back键、menu键等。可以通过getUiDevice()来获取UiDevice对象。UiDevice=getUiDevice(),如:getUiDevice.pressHome();点击home键
3.3.2 UiObject : 整个UI里面的某个元素或控件。可以通过UiObject对象来对控件模拟用户的操作。UiObject的构造函数里是传入一个UiSelector对象。所以我们要通过UiSelector来查找我们需要的元素或控件 ,如:UiObject appsButton=new UiObject(new UiSelector().description("apps"))
3.3.3 UiSelector : 可以通过UiSelector对象去定位UI元素。如果发现多个满足条件的控件则会返回第一个控件,在使用UiSelector的时候可以组合使用多个属性来定位具体的控件,还可以使用childSelector()函数来嵌套 UiSelector 对象
3.3.4 UiScrollable:可滚动的控件,如果操作的控件需要滚动就可以使用UiScrollable ,如:
UiScrollable appsList=new UiScrollable(new UiSelector().className("android.view.View"));
appsList.setAsHorizontalList();
3.3.5 UiCollection: 代表所有控件的集合,可以用来获取所用控件的个数,获取子元素对象
3.4 ddms
DDMS 的全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务。
它为我们提供功能如下:
--为测试设备截屏
--针对特定的进程查看正在运行的线程以及堆信息
--Logcat
--广播状态信息
--模拟电话呼叫
--接收SMS
--虚拟地理坐标
3.4.1 启动ddms
--通过点击 sdk/tools 目录下ddms直接启动
--通过命令行启动,windows cmd或mac terminal中输入ddms即可启动
3.4.2 截图和录屏
截图:Device-Screen capture 截取当前屏幕
录制屏幕:Device-Screen Record,设置对应参数,点击OK开始录屏,点击Cancel结束录屏
3.4.3 log查看和过滤
--点击log区域的+号,可以添加过滤器
--可以通过Log Tag、Log Message、PID和Application Name来创建过滤器
3.4.4 查看进程的堆使用情况
可以通过DDMS查看进程的堆内存的使用情况,特别是通过某几步操作后,当前应用进程的堆使用情况,操作步骤如下:
— 点击选中想要监测的进程,比如com.qihoo.appstore进程
— 点击选中Devices视图界面中最上方一排图标中的“Update Heap”图标
— 切换tab到 VM Heap
— 点击Heap视图中的“Cause GC”
— 此时在Heap视图中就会看到当前选中的进程的内存使用量的详细情况
3.4.5 跟踪对象内存分配
— 切换 tab 到 Allocation tracker,单击“Start Tracing”按钮
— 运用被测APP,操作待测试的feature,操作完毕后单击“Get Allocations”按钮,一个已分配对象的列表就会出现第一个表格中
— 单击第一个表格中的任何一项,在表格二中就会出现导致该内存分配的栈跟踪信息。通过allocation tracker,不仅知道分配了哪类对象,还可以知道在哪个线程、哪个类、哪个文件的哪一行。
3.4.6 查看手机文件
Device - File Explorer,即可导入或导出手机文件
3.5 monitor
android Device Monitor是一个提供了图形化界面的可以对Android应用进行调试和分析的独立的工具,它集成了Android SDK下的以下工具:
3.5.1 DDMS 介绍见3.4
3.5.2 Tracer for OpenGL ES
Tracer是在你的Android应用程序分析OpenGL的嵌入式系统(ES)代码的工具。该工具允许您捕获的OpenGL ES命令和每帧图像,以帮助您了解图形命令是如何被执行。分析绘制过程参考:http://blog.csdn.net/jinzhuojun/article/details/8901835
3.5.3 Hierarchy Viewer
不合理的布局会使我们的应用程序UI性能变慢,HierarchyViewer能够可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计。HierarchyViewer是我们优化程序的工具之一,它是Android自带的非常有用的工具,可以帮助我们更好地检视和设计用户界面(UI),绝对是UI检视的利器。
-- 启动Hierarchy Viewer:点击Android SDK/tools/hierarchyviewer启动,或命令行输入hierarchyviewer启动
-- 连接测试设备,启动被测应用,并定位到要分析的界面
-- Hierarchy Viewer工具,找到要分析Activity
-- 点击Load View Hierarchy,就可以看到当前Activity的层级结构了
-- 点击要测试的空间,可以查看控件的属性,如id、text等
3.5.4 Systrace
Systrace允许你监视和跟踪Android系统的行为。可以用来跟踪 graphics 、view 和 window 的信息,发现一些深层次的问题。
官网介绍:https://developer.android.com/studio/profile/systrace.html#overview
3.5.5Traceview
TraceView 是 Android 平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到方法。
官方文档:https://developer.android.com/studio/profile/traceview.html
3.6 monkeyrunner
monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。
官方文档:https://developer.android.com/studio/test/monkeyrunner/index.html
3.7 Traceview
见3.5.5
3.8 uiautomatorviewer
可以通过uiautomatorviewer工具来获取应用的界面截图并分析。uiautomatorviewer工具提供了一个便利的方式来查看UI布局结构,并且可以查看各个控件的相关属性。利用这些信息可以用来创建UI测试代码。
--手机连接PC,打开被测APP,定位到待测试的界面
--工具栏选择 Device Screenshot (uiautomator dump),左侧区域显示手机当前屏幕,右侧显示当前屏幕界面对应的布局
--在左侧试图区域选择控件,即可在右侧的布局区域查看该控件的层级和属性
--通过查看activity内各控件的属性,配合uiautomator框架,即可实施Android UI自动化测试
3.9 hierarchyviewer
见3.5.3
参考资料:
http://developer.android.com/tools/studio/index.html
http://developer.android.com/tools/debugging/ddms.html
http://developer.android.com/sdk/installing/index.html
http://www.jianshu.com/p/5908def0e8af
http://developer.android.com/intl/zh-cn/tools/studio/index.html
http://baike.baidu.com/link?url=c---85A_3-jPh9BVEY_drfkY6M2amlOePyFYegJjc1E6BXMMd14xHKbubRKM3uzmH4S4_LI75NXRxl9k1lfekK
http://baike.baidu.com/link?url=2jMARS-wxMYSMFPnei4ja1LvnL29ykJgEOe-u-E9nwlID6zrFSld4tK3E_lkVHtI6HONJ9w9UdRt25Zf-ueP0q
http://developer.android.com/intl/zh-cn/tools/debugging/ddms.html
http://baike.baidu.com/link?url=NIfuNDZGeLAQkETC70S6E1SZqpTBa2455qUScWseFiZJVOJaOHtj9zHzaFQx22LkbHUgDQRIQPpHJcP0wPszS_
http://www.360doc.com/content/14/0329/23/10366845_364806505.shtml