Presentation is loading. Please wait.

Presentation is loading. Please wait.

Android手动测试实践 ——绮珠.

Similar presentations


Presentation on theme: "Android手动测试实践 ——绮珠."— Presentation transcript:

1 Android手动测试实践 ——绮珠

2 大纲 一、名词解释 二、环境搭建与安装测试包 三、基本测试工具介绍 四、测试点及经典bug

3 一、名词解释

4 ADT ( Android Developer Tools ) 开发工具 装入eclipse的插件
机器人 开源手机操作系统 APK  ( Android Package ) 安装包 ADT  ( Android Developer Tools ) 开发工具 装入eclipse的插件 SDK ( Software Development Kit ) 开发工具包 Adb ( Android Debug Bridge ) debug工具 基础 管理设备或手机模拟器 DDMS  ( Dalvik Debug Monitor Server ) Dalvik虚拟机调试监控服务 Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L'ève future)中。他将外表像人的机器起名为Android。 ADT (Android Developer Tools) 安卓开发工具,装到eclipse里的插件。 APK  Android Package  其实就是安卓的包 SDK(Software Development Kit, 即软件开发工具包,使用Eclipse进行android应用开发需要给Eclipse装adt插件,这样Eclipse就可以和android sdk建立连接,可以在Eclipse中启动android模拟器进行程序调试等 adb(Android Debug Bridge)是Android提供的一个通用的调试工具,说白了就是debug工具。借助这个工具,我们可以管理设备或手机模拟器的状态。 DDMS  ( Dalvik Debug Monitor Server )是 Android 开发环境中的Dalvik虚拟机调试监控服务。 Eclipse里的一个调试工具。 Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。

5 日常包,预发包和线上包 混淆包和非混淆包 TTID
----线上包均为混淆包 TTID 签名 ----安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系 Appkey ----区分一个应用 root权限 ----与linux一样 Appkey: appkey的是用来区分一个应用的(无法区分版本,但区分平台),其作用目前来看有两个,1,MTOP根据客户端的APPkey设置白名单,实现访问控制(没有加入白名带不许访问)。2,mtop也可以根据appkey,实现不同客户端之间的区分处理。 Android的root和linux一样,root代表了系统的最高权限,但是Android系统为了保护一些关键文件,root权限默认是关闭的。 如果要获取root权限,也就是要将手机root,这个方法很多,不同的手机方法也不一样。简单的做法,也是建议的做法,就是装一个刷机精灵,一键root,但缺点是,很多手机可能会没法root。如果使用刷机精灵root成功了,就可以获取root权限了。

6 二、环境搭建与安装APK

7 Android开发环境搭建 (1)开发环境 (2)其他 1、JDK 1、MAVEN 3 2、ANDROID SDK 2、GIT
可以直接下载 ADT Bundle,解压后直接点击eclipse.exe就可以了。但是很诡异的经常出问题。 下载sdk  点击exe文件安装sdk 安装eclipse插件 3、Eclipse + ADT插件

8 安装测试包 方法一:各种手机助手…… …………

9 安装测试包 方法二:扫一扫

10 安装测试包 方法三:adb命令安装 adb  install(-r) [apkpath] 命令安装。 方法四:源代码安装 …….

11 三、基本测试工具介绍

12 一、通用的调试工具、debug工具 – adb (1)
显示帮助信息 adb help 查看设备 adb devices 安装软件 adb install adb install <apk文件路径> :这个命令将指定的apk文件安装到设备上 adb install  -r <apk文件路径> :如果加-r参数会覆盖原来安装的软件并保留数据 注意:apk文件名不要使用中文且不要有空格号 卸载软件 adb uninstall adb uninstall <包名> adb uninstall -k <包名> 如果加 -k 参数,卸载软件但是保留配置和缓存文件. 打开你的cmd 使用adb之前,在环境变量里加上你放置的adt的目录,ADT\platform-tools,比如D:\工作\ADT\platform-tools 或者cd到你的ADT\platform-tools目录下,再使用命令 adb install d:\MainActivity.apk 如果没有显示你的手机,则关闭所有和ADB有任何暧昧关系的程序,进程。 确保ADB的端口没有被占用。 android的ADB程序,默认要使用5037端口,如果你的5037被一些自作多情的程序占用了,比如说36*手机助手这种东西,那么首先请关闭所有这类东西。 输入 netstat -ano|findstr "5037"”,查看端口情况。 adb uninstall要注意: ls data/app找到包名com.umeng.example.xp-1.apk。adb uninstall com.umeng.example.xp 后面跟的是包名,而不是软件名,很多人都说怎样卸载都不行,无论是应用程序名字还是包名加应用名都不行,也就是这个原因,包名一般就选择数字前面的一段名称即可!

13 一、通用的调试工具、debug工具 – adb (2)
进入设备或模拟器的shell   adb shell 通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux的命令,另外如果只想执行一条shell命令,可以采用以下的方式:   adb shell [command] 如:adb shell ls列出当前目录下的内容 从电脑上发送文件到设备 adb push <本地路径> <远程路径> 用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机) 从设备上下载文件到电脑 adb pull <远程路径> <本地路径> 用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑 一键root 在adb中su,由$变成# Adb push d:\MainActivity.apk /

14 二、本地日志抓取 ddms http://developer.android.com/tools/debugging/ddms.html
DDMS 的工作原理DDMS将搭建起IDE与测试终端(Emulator 或者connected device)的链接,它们应用各自独立的端口**调试器的信息,DDMS可以实时监测到测试终端的连接情况。当有新的测试终端连接后,DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的. DDMS监听第一个终端APP进程的端口为8600,App进程将分配8601,如果有更多的终端或者更多App进程将按照这个顺序依次类推.DDMS通过8700端口接收所有终端的指令. DDMS为IDE和emultor及真正的android设备架起来了一座桥梁,Android DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的 1)每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理,Mutex等等都是依赖底层操作系统而实现的。所有Android应用的线程都对应一个Linux线程。 2)DDMS启动时会与ADB之间建立一个device monitoring service用于监控设备。当设备断开或链接时,这个service就会通知DDMS 3)当一个设备链接上时,DDSM和ADB之间又会建立VM monitoring service用于监控设备上的虚拟机。 4)通过ADB Deamon与设备上的虚拟机的debugger建立链接,这样DDMS就开始与虚拟机对话了 将手机通过USB链接至电脑,链接时需要确认手机是处于“USB调试”模式

15 Error :error为最严重的错误,如果是抛到虚拟机的系统错误,就可能引起客户端崩溃,比如最为常见的空指针异常。
注:过滤日志的等级 Error :error为最严重的错误,如果是抛到虚拟机的系统错误,就可能引起客户端崩溃,比如最为常见的空指针异常。 Warning :警告,一般严重,比如网络异常什么,一般不会有crash,但需要引起注意,过滤warning异常的时候,会同时过滤出error错误。 Info :信息,也就是一些系统的信息,比如页面切换时间,手机信号量等等、过滤info信息同时会过来出warning和error信息 Debug :debug信息,系统的一些debug信息,包括所有error,warning和info。 Verbose:详情,包括所有error warning info和debug,还有其他的一些详情 Assert:断言

16 三、http数据包抓取 Fiddler 下载Fiddler2
地址: 2. 配置手机连接Fiddler步骤 1)打开Fiddler,     Tools-> Fiddler Options 。  2)在HTTPS中选中"Decrpt HTTPS traffic",    Fiddler就可以截获HTTPS请求 3)在Connections中选中"Allow remote computers to connect".  是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来 4)重启Fiddler 5)获取Fiddler所在机器的IP地址 6)在手机上配置Fiddler为代理。打开Android手机,  找到你的网络连接, 打开HTTP代理, 输入Fiddler所在机器的IP地址(比如: ) 以及Fiddler的端口号8888 Fiddler是类似代理服务器,它能够记录所有你的电脑和互联网之间的http(S)通讯,可以查看、修改所有的“进出”的数据。使用代理地址: , 默认端口:8888。 Inspectors tab下有很多查看Request或者Response的消息。其中Raw Tab可以查看完整的消息,Headers tab只查看消息中的header charles是另外一种抓包工具,我用他的一个很重要的原因是,charles可以模拟弱网环境,可以指定Download和upload的下载上传速度。验证在弱网环境,被测应用是否有异常,是否会出现crash。

17 四、常用mock工具 wmock 详细步骤请参照:

18 五、TCP和网络层包的抓取 Wireshark和TCPdump 先给手机刷root权限。 手机需要root权限,否则无法使用tcpdump。
下载tcpdump的Android版本, 把tcpdump拷到手机中去,用push命令将文件推到手机中: adb push [PCPATH] [mobilPATH] 4. 提升tcpdump的权限。 用adb shell进入android bash后,执行chmod 777 tcpdump。 5. 启动抓包工具。 [tcpdumpFilePath]/tcpdump -p -vv -s 0 –w [pcapfilePath] 停止抓包用ctrl + C。 导出.pcap文件。使用pc上的wireshark将日志文件打开,即可以看到所抓到的包了。 以后再抓包就只要重复5、6步就ok了

19 Monkey可以运行在模拟器或真实设备上,并产生一系列随机的用户事件(点击、触摸、手势以及系统级别的事件)。
ADT自带软件,无需安装 Monkey可以运行在模拟器或真实设备上,并产生一系列随机的用户事件(点击、触摸、手势以及系统级别的事件)。 Monkey一般用来进行压力测试或稳定性测试。 adb shell monkey {+命令参数} 参数: -p 指定一个或多个包 adb shell monkey -p com.htc.Weather 100 monkey -p com.htc.Weather --ignore-crashes 1000

20 adb shell monkey -p com.taobao.taobao -v 100
-help --throttle <milliseconds> 在事件之间插入固定延迟。通过这个选项可以减缓Monkey的执行速度。 --pct-touch <percent> 调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。 --pct-motion <percent> 调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)。 …… -p com.umeng.example.xp   -v –v 日志保存 重定向文件 把日志pull到pc上看      Monkey 命令可简单分为如下四类: 基本配置选项,如设置尝试的事件数量 运行约束选项,如设置只对单独的一个包进行测试 事件类型和频率,如设置触摸屏事件的发生频率 调试选项,如设置忽略应用程序异常,继续向系统发送事件,直到计数完成

21 七、性能监测工具(1) 1、TOP工具 进入Adb Bash,然后就能和linux的TOP一样使用了。

22 七、性能监测工具(2) 2、Android dumpsys
使用 adb shell dumpsys [options] 命令,即可获得相关的信息,参数如下

23 七、性能监测工具(3) 3.ddms性能检测工具
用ddms也可以用来检测性能,通过选项device和进程,就可以查到app的内存消耗,堆栈消耗,CPU消耗,网络消耗等等信息,以及控制模拟器(只有模拟器,真机不行)。 网络信息 内存信息

24 八、文件查看工具(1) 1. 还是DDMS Device->File Explorer… 打开文件管理器
如果手机root之后还是无法在ddms中查看一些文件,只需要修改文件权限就可以了 解决方法: 打开 ES文件浏览器或者Root Explorer 长按 data目录,列表最下面选择属性-->选择更改权限-->将其他用户的权限都选上:

25 八、文件查看工具(2) 2、Adb shell ls
Adb bash其实可以看成一个阉割版的linux bash系统,用adb shell进入adb bash后其他操作与linux系统基本无差异,但部分命令会无法使用。

26 八、文件查看工具(3) 3、RE浏览器(root explorer) 手机安装root explorer软件即可,需要手机root
ES文件浏览器也可以

27 八、文件查看工具(4) 常用文件存放地址 自己安装的APK存放地址:/data/app
淘宝客户端临时文件(缓存,如图片等):/sdcard/taobao 这个各个客户端不一样,有没有SD卡也有影响 APP的私有文件: /data/data/<packageName> APP的ANR日志 :/data/anr 下面 系统预装的APP:/system/app下面(一般只有预装包和我们测试的APP出现了冲突的时候,才会去删除 Adb 命令: /system/bin 下面 Android系统源代码目录 /system/framework 下面 ANR(Application Not Responding) 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。 默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒。超出就会提示应用程序无响应(ANR:Application Not Responding)对话框。 出现Application Not Responding的提示后,系统会将日志LOG写到到data\anr\traces.txt文件 PS:有些文件特别是/system下别乱改

28 四、测试点及经典bug

29 一、手机屏幕和系统 分辨率 低分辨率:320*240、480*320 中分辨率:800*480、854*480
高分辨率:640*960、540*960, 720*1280及其以上 屏幕大小 1.5英寸 2英寸 2.5英寸 3.5英寸 4.0英寸 4.3英寸 4.7英寸 5.3英寸 7英寸(pad)等等 操作系统 1.6,2.0 ,2.1,2.2 ,2.3,4.0,4.1,4.2(3.X系统一般只用在pad上面,不作为重点),4.3,4.4(重点关注4.X系统适配) 网络 wifi ,2G、3G、移动、联通、电信、 wap & net 等不同网络

30 二、机型 查看市场占有率 http://umindex.com/#android_device
包括:三星、华为、小米、HTC、中兴、摩托、索爱、联想、魅族、oppo 一般测试top10的手机

31 三、适配测试点 安装、卸载【重复安装与卸载】 客户端界面在不同大小手机屏幕的展现、横竖屏展现; 手机控件触发
手机语言切换: 使用过程中,手机语言进行中英文切换。 输入法适配:搜狗输入法,百度输入法,qq输入法,默认输入法 系统时间: App当前时间一般从手机系统获取或从网络获取。从手机系统获取,存在手机时间错误、手动变更时间的场景;取网络时间,存在网络延时的问题。

32 三、适配测试点(2) 7. 手机事件交互性适配及状态保持: 后台运行后-----是否记忆当前状态;多程序交叉后台运行;
7. 手机事件交互性适配及状态保持: 后台运行后-----是否记忆当前状态;多程序交叉后台运行; 断电、中途关机-----是否记忆当前状态; 闹铃、接电话看短信等-----是否会记忆当前状态,程序能否正常进行; 待机小段时间、待机很长时间----是否正常运行,并记忆当前状态; 拔插手机数据线-----对正在使用的客户端的影响; 中途按手机拍照键、打开手机音乐播放器; 比如手机音乐播放器对Android客户端语音搜索的影响;拍照对手机条形码搜索的影响; 手机快捷键的处理:拨电话键、挂电话键、回退键、home键:客户端在中途使用过程这些键的响应处理; 网络强弱 强弱变换,是否能够重新识别网络,进行处理; 手机卡网络和wifi网络间切换----客户端能否正常运行; 分享、获取手机中联系人等;

33 四、不同于pc的一些bug 网络切换,引起crash 横竖屏切换,引起crash 切换输入法,引起crash
切换用户背景图片失败,引起手机死机 快速进出客户端,引起crash 客户端长期挂起在系统后台,一段时间后返回,引起crash 传递参数很多,请求串超长,引起异常 埋点遗漏 传递参数很多,请求串超长,引起异常 比如购物车购物车里面一次购买20个宝贝,点击去收银台付款,弹出提示“网络请求超时”

34 Thanks.

35 附录1:Android客户端打包过程

36 附录2:Android的基本组件 四类基本组件: 1,Activity
2,Services 一个service没有可视化的用户接口,而是运行在后台一个无限期限内。 3,Broadcast receivers 受广播公告并对其做出反应 4,Content provide 一个Content provider使得一系列特定的应用程序数据对其他应用程序可用 其他:激活组件:intents 用来激活每一类组件

37 附录3:Android Activity的生命周期


Download ppt "Android手动测试实践 ——绮珠."

Similar presentations


Ads by Google