移动端测试---adb 命令与monkey命令

对于手机端测试, 按照平台来分,分为Android和IOS两大主流系统 Android开源导致碎片化比较严重, 手机品牌众多,系统版本各异,分辨率不统一,主流 手机型号上千。无法保证应用、游戏对于所有手机的适配兼容, bug比较多,而IOS通常 bug会少一些   如何进行移动端测试: 1.1.2. 功能测试 我就先来说一下功能测试吧,对于手机app来说,和我们测试web项目差不太多,也是各 种测试方式需要考虑进来, 比如说逻辑功能测试, 现在移动端越来越火爆,大家用的软件 也越来越多,对软件也越来越挑剔,现在公司在开发移动端的时候,肯定是有 相应的需求 文档和UI所设计的产品效果图 ,我们做逻辑功能测试,就是根据这些资料,当然也根据我 们正常人的逻辑思维进行逻辑功能测试,就拿我上个项目来说,它就是一个移动端项目,在 做逻辑功能测试的时候,我们要测试主页面,我的页面,商城页面这些功能是否合理。 1.1.3. 安装与卸载测试 软件安装后 是否可以正常运行, 安装过程中 是否可以取消,安装空间不足时,是否有相 应提示,是否可以卸载应用(可通过桌面卸载,也可以通过软件卸载。曾发现在IOS手机上有 个应用安装时未完全安装,终止安装后, 未完成安装的 应用图标一直显示在手机上,并且 无法成功删除), 卸载是 否支持取消功能,单击取消后软件卸载功能是否正常, 卸载后 文件 是否全部删除所有的安装文件夹, 从不同的应用市场下载进行安装测 试,比如测试小米市 场,华为市场,应用宝,安卓市场,安智市场的安装测试。 1.1.4. 软件升级测试 当客户端有新版本时,是否有更新提示,当版本为非强制升级版时,用户可以取消更 新,老版本能正常使用, 用户在下次启动app时,仍能出现更新提示 ;当版本为强制升级版 时,当给出强制更新后用户没有做更新时,退出客户端,下次启动app时,仍出现强制升级 提示,当然现在强更已经很少出现了。检查更新后各个功能是否能正常使用;在线跨版本升 级后能否正常使用,当然现在主流的安装更新方式开始向 热更新热部署方式转 变,就是在 用户不需要手动更新的情况下, 完成版本的静默更新 ,这个技术是有难度的,需要看公司 中程序员的技术能力还有就是是否有这样的产品需求。 1.1.5. 登录测试 对于登录测试,基本上每一款app都有登录注册功能,所以在测试App的时候,登录测试是必不可少的一项。 .我们做登录测试的时候,往往包含这么些项,登录用户名和密码错误时 ,界面有提示信息 用户主动退出登陆后,下次进入app时,应该进入登陆界面 密码更改后,登录时是否做到了有效数据的校验,对于未登录状态时,一些页面的操作, 是否做了控制 切换账号登录,检验登录的信息是否做到及时更新,对于多个端(web、iso、android等) 进行操作时,确保数据库操作无误,且每个端可以及时看到数据的更新,一个账号只允许一 台机器登陆的软件,需要账号登录多个手机时,是否将原用户踢下线,且能够给出提示信 息,用户登录状态太久,session会过期,会出现“虽然是登录状态,系统会提示用户没有登 陆” 1.1.6. 安全性测试——权限测试 对于手机权限,如果我们是刚开发不知名的app,权限这块尽量少一些,这些权限在安 装的时候都必须用户同意。在Android 6.0之后,权限需要动态的申请,我们测试的时候,需 要测试在使用到这些权限的时候,程序员是否做逻辑判断,用户同意权限应该怎么操作,不 同意权限又应该怎么操作。 1.1.7. 消息推送测试 消息推送,是移动端的一大特色。我就说一下消息推送我们所做的这些方面吧, 未锁屏时,应用后台运行,消息推送是否可正常接收,未锁屏时,APP客户端使用过程中, 可以收到消息提醒,且点击可查看。 锁屏时,手机消息栏是否可以接收到消息提醒。且点击可查看。点击后消息栏中消失。 精准推送 当推送消息是针对登录用户的时候,需要检查收到的push与用户身份是否相符,没有错误的 将其他人的消息推送过来 push推送消息是是否能有针对性的推送,如相应内容推送给相应用户(精准推送) 退出登录后,是否接受push推送(根据需求来) 1.1.8. 前后台切换测试 APP切换到后台,再回到APP,检查是否停留在上一次操作界面;检查功能及应用状态是 否正常;程序是否崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新 的时候 手机锁屏解屏后进入app注意是否会崩溃,功能状态是否正常 当APP使用过程中有电话进来中断后再切换到APP,功能状态是否正常 当关闭APP进程后,在开启APP,APP能否正常启动 对于有数据交换的页面,尤其是有视频图片之类的页面,每个页面都必须要进行前后台切 换、锁屏的测试,这种页面最容易出现崩溃 1.1.9. UI测试(界面测试) 确保产品UI符合产品经理制定的原型图与效果图 一般涉及界面(如菜单、对话框、窗口和其他可视控件)布局、风格、文字是否正确,页面 是否美观,操作是否友好。 如:安装app后的加载页显示,分享页面的产品logo显示 1.1.10. 兼容性测试 我再说一下兼容性测试吧, 兼容性测试主要考虑 手机的版本,型号,分辨率 , 就像我 说的,现在手机碎片化比较严重,各个版本,比如Android,从Android4.0到Android8.0的 版本它是不一样的,然后现在各大手机厂商像华为,三星,小米,锤子,魅族,vivo这些厂 商都修改android源代码,也是给我们增加和好多工作量,好多时候开发的软件在三星上没 问题,但是华为,小米就不行。还有手机分辨率,现在主流的可能是1920*1080,但是还有 好多其他分辨率,比如720*1280,还有一些更大分辨率的手机,都要考虑这些分辨率的兼 容,不然用户视觉体验就不好。 兼容测试,公司中会买好多测试机来太让我们进行测试,一般是不同厂商的手机,当然 还有第三方云测平台,比如testin还有腾讯wetest,就可以做兼容性测试。可以一次性测试 100台测试机,同时会有相应的兼容报告,bug报告。 对于IOS,ISO版本有7.1.2、8.3、9.1等;能否适配各种屏幕尺寸。 1.1.11. 网络环境测试 测试2G、3G、4G、wifi、有网、无/网、弱网情况下应用的运行 网络不好时,提交数据是否一直处理提交中,是否会有延迟,数据交换失败是否会有提醒 有网到无网再到有网环境时,数据是否可以自动恢复,正常加载 无网络时,各种提示信息是否友好,数据本地化是否正确(比如提示当前已断开网络,请检 查网络设置;还有从wifi环境切换到4G环境提示是否启用4G网络,会产生扣费。 1.1.12. mokey测试 对于手机测试, 除了我们一些常规的功能测试,我们还会做压力测试, 比如对于 Android手机,我会使用adb指令进行一些相应的操作,比如通过adb查看设置,进入设备, 抓取log,我们测试的时候,会使用adb logcat所抓出来的log日志存到电脑,发给开发,方 便他们快速解决bug。 另外,我还会使用monkey对app进行测试,可以使用monkey对app做压力测试,主要就是测 试操作app的时候,程序是否会崩溃。 我们使用adb shell monkey 指定对应的app,执行要测试的次数,指定要触摸的比率,超 时时间和忽略崩溃信息,就可以执行测试,将测试log存到某个位置,然后把测试出的bug 日志发送给开发。300000 我就简单的说一下测试的指令吧,比如我上边所说的逻辑,我们用 adb shell mokey -p 指 定要测试的包名 --ignore-crashs 忽略崩溃 --ignore-timeout 忽略超时 --throttle 38 指定延迟时间毫秒 -s 指定测试种子 指定测试次数,然后将文件 >输出到磁盘中。 1.1.13. 性能测试 对于性能测试,(eclipse和Android studio中本身有检测cpu和内存的工具,也有检测手机 内存泄漏的工具)靠工具来测试手机cpu占用,内存占用,电池温度等,以及测试我们的app 在后台持续运行的流量消耗和电量消耗问题。   Android介绍: Android 是一种基于 Linux 的*及开放源代码的 操作系统 , 主要使用于 移动设备 ,如 智能手机 和 平板电脑 ,由 Google 公司和 开放手机联盟 领导及开发。尚未有统一中文名称,中 国大陆地区较多人使用“ 安卓 ”。 Android 的系统架构和其操作系统一样,采用了分层的架构。 Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux 内核 层 Android 四大组件分别为 activity 、 service 、 content provider 、 broadcast receiver 。   ADB介绍 ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管 理android模拟器或者真实的andriod设备(如G1手机) 它的主要功能有: * 运行设备的shell(命令行) * 管理模拟器或设备的端口映射 * 计算机和设备之间上传/下载文件 * 将本地apk软件安装至模拟器或android设备   <  >配置 ADB 环境变量 1: 在系统变量中新建 ANDROID_HMOE 变量,赋值路径 (D:\install\androidSDK) 2:在系统变量path中添加%ANDROID_HOME%\platform-tools 3. 验证adb配置是否成功 移动端测试---adb 命令与monkey命令  

ADB常用指令:

查看设备 adb devices 这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示   开启服务 adb start-server   关闭服务 adb kill-server   移动端测试---adb 命令与monkey命令   安装软件:adb install apk路径   覆盖安装:adb install -r (APK路径) -r 代表如果apk已安装,重新安装apk并保留数据和缓存文件 -s #安装在SD卡内,而不是设备内部存储   移动端测试---adb 命令与monkey命令   移动端测试---adb 命令与monkey命令   系统应用:adb shell pm list packages –s   移动端测试---adb 命令与monkey命令   第三方应用:adb shell pm list packages -3 移动端测试---adb 命令与monkey命令   列出手机装的所有app的包名: adb shell pm list packages   移动端测试---adb 命令与monkey命令   卸载软件 adb uninstall <软件包名>   移动端测试---adb 命令与monkey命令   将电脑文件传输到移动端 adb push 电脑路径 移动端路径 将移动端文件传输到电脑 adb pull 移动端路径 电脑路径   移动端测试---adb 命令与monkey命令   查看adb命令帮助信息 adb help 移动端测试---adb 命令与monkey命令   截屏例:adb shell screencap -p 截图文件路径 移动端测试---adb 命令与monkey命令   查看手机CPU情况 adb shell dumpsys cpuinfo 移动端测试---adb 命令与monkey命令   查看应用内存使用情况 adb shell dumpsys meminfo +包名:应用的内存使用情况 移动端测试---adb 命令与monkey命令   显示磁盘使用信息: adb shell dumpsys diskstats 移动端测试---adb 命令与monkey命令   清除应用缓存信息: adb shell pm clear [packagename] 移动端测试---adb 命令与monkey命令   查看电池状态 adb shell dumpsys battery 移动端测试---adb 命令与monkey命令   查看电池信息 adb shell dumpsys batteryproperties 显示当前电池关键属性值(ac:直充,USB,无线、状态、健康指数、当前状态指数、电量 等级、音量、暂时声音大小、当前声音大小): 移动端测试---adb 命令与monkey命令   adb logcat 查看手机日志 adb logcat 命令格式 : adb logcat [ 选项 ] [ 过滤项 ], 其中 选项 和 过滤项 在 中括号 [] 中 , 说明这是可选的 ; ">" 输出 : ">" 后面跟着要输出的日志文件 , 可以将 logcat 日志输出到文件中 , 使用 adb logcat > log 命令( adb logcat >C:\log\1.txt ) 移动端测试---adb 命令与monkey命令   指定 logcat 的日志输出格式 : -- "-v" 选项 : 使用 adb logcat -v time 命令 , 可以啥看日志的输出时间 ; 将手机日志输出到本地文件中 adb logcat -v time > C:/log/aa.txt   移动端测试---adb 命令与monkey命令   Android 的日志分为如下几个级别: V —— Verbose (最低,输出得最多) D —— Debug I —— Info W —— Warning E —— Error F —— Fatal S —— Silent (最高) 过滤指定等级日志: 按某级别过滤日志则会将该级别及以上的日志输出。 比如,命令: adb logcat *:W 将 Warning 、 Error 、 Fatal 和 Silent 日志输出 显示所有优先级大于等于“warning”的日志 移动端测试---adb 命令与monkey命令   输出最近的日志:adb logcat -t 5 输出最近5行的数据 移动端测试---adb 命令与monkey命令    

Monkey测试

通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压 力测试,检测程序多久的时间会发生异常 Monkey用来做什么 Monkey 主要用于Android的稳定性测试 ,自动的一个压力测试小工具, 主要目的就 是为了测试app 是否会Crash(崩溃).   Monkey程序介绍 (1) Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路 径是: /system/framework/monkey.jar; (2) Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在 Android文件系统中 的存放路径是:/system/bin/monkey; (3)Monkey 命令启动方式: a)可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测 试 b)在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测 试 c ) 在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终 端模拟器   . Monkey 命令、 基本参数介绍   使用monkey测试手机所有程序 adb shell monkey 100 执行monkey测试100次 针对rom测试或者 移动端测试---adb 命令与monkey命令   -p <允许的包名列表> adb shell monkey -p 包名 100 用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指 定包, monkey将允许系统启动设备中的所有app。 指定一个包: 移动端测试---adb 命令与monkey命令   移动端测试---adb 命令与monkey命令   显示日志详细程度 用亍指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参 数如下 表所示: Level 0: adb shell monkey -p 包名 -v 30 // 缺省值,仅提供启动提示、测试完成和 最终结果等少量信息 移动端测试---adb 命令与monkey命令   adb shell monkey -p 包名 -v -v 30 // 提供较为详细的日志,包括每个发送到Activity的事件信息 移动端测试---adb 命令与monkey命令   adb shell monkey -p 包名 -v -v -v 30 // 最详细的日志,包括了测试中选中/未选中的Activity信息 移动端测试---adb 命令与monkey命令   Monkey日志分析 将log信息写到文档中 adb shell monkey 100 >路径 移动端测试---adb 命令与monkey命令     正常情况, 如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次 数和所花费的时间; // Monkey finished 代表执行完成\   -s 随机数种子 用亍指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也 相同的。 示例: monkey测试1:adb shell monkey –s 10 100 monkey测试2:adb shell monkey –s 10 100 移动端测试---adb 命令与monkey命令   --throttle <毫秒> 用亍指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可 能快的 生成和发送消息。 例:adb shell monkey -p com.example.login --throttle 300 100 表示执行100个伪随机用户事件流,事件间隔为300毫秒。 注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件。 移动端测试---adb 命令与monkey命令   --pct-touch <percent> 触摸事件 调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按 下并抬起的操作) –pct-touch:触摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件。 Down(ACTION_DOWN)和Up(ACTION_UP)的坐标临近,但并非相同。 如: adb shell monkey ­­pct­touch 67 ­v 10 表示执行 10 个伪随机用户事件流,并调整其中触摸事件的百分比为 67% 。 注:此参数设置要适应当前被测应用程序的操作,比如一个应用 80% 的操作都是触摸,那就 可以将此参数的百分比设置成相应较高的百分比   移动端测试---adb 命令与monkey命令   --pct-motion <percent> 调整 手势事件 motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系 列伪随机的移动事件和一个up事件组成) –pct-motion:动作事件。以Down(ACTION_DOWN)开始,Up(ACTION_UP)结 尾,中间至少有一次Move(ACTION_MOVE)。 如: adb shell monkey ­­pct­motion 67 ­v 10 表示执行 10 个伪随机用户事件流,并调整其中动作事件的百分比为 67% 。 注:这里的移动是直线滑动 移动端测试---adb 命令与monkey命令   Event percentages : 0 : --pct-touch//touch events percentage 触摸事件百分比(触摸事件是一个在屏幕单一位置的按下 - 抬起事件) 1 : --pct-motion//motion events percentage 手势事件百分比(手势事件是由一个在屏幕某处的按下事件、一系列的 伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯 2 : --pct-pinchzoom//pinch zoom events percentage 二指缩放百分比,即智能机上的放大缩小手势操作 3 : --pct-trackball//trackball 即单纯的 Move ( ACTION_MOVE ) events percentage 轨迹球事件百分比(轨迹球事件包括一个或多个随机移动,有时还伴有 点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样) 4 : --pct-rotation//screen rotation events percentage 屏幕旋转百分比,横屏竖屏 5 : --pct-nav//nav 基本导航事件。即来自于方向输入设备的上下左右操作。 events percentage ”基本”导航事件百分比(导航事件包括上下左右,如方向输入设备的 输入)老手机的上下左右键,智能机上没有 6 : --pct-majornav//major 即Navigation Bar的确认,菜单,返回键等 nav events percentage ”主要”导航事件百分比(这些导航事件通常会引发 UI 的事件,例 如 5-way pad 的中间键、回退键、菜单键) 7 : --pct-syskeys//system(key) operations percentage ”系统”按钮事件百分比(这些按钮一般专供系统使用,如 Home, Back, Start Call, End Call, 音量控制) 8 : --pct-appswitch//app switch events percentage 启动 activity 事件百分比。在随机的间隔里, Monkey 会执行一 个 startActivity() 调用,作为最大程度覆盖包中全部 Activity 的一种方法 9 : --pct-flip//keyboard flip percentage 键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘 收回 10 : --pct-anyevent//anyevents 该事件可能包含其他上述事件。 percentage 其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设 备上的按钮等等。     --ignore-crashes 作用 :通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续 发送事件给系统,直到事件计数完成。 --ignore-timeouts(ANR) 作用 :通常,应用程序发生任何超时错误(如“Application Not responding”对话框) Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。 adb shell monkey --ignore-timeouts –v 10     Monkey 实例 用monkey 命令 对登录apk进行 性能测试 移动端测试---adb 命令与monkey命令     adb shell monkey -p 包名 -s 23 --throttle 2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 1. -p 后面接着的对应的包名,对具体某个app测试 2. -s 后面是对应的种子数,好像就是操作步骤,一般设置相同的种子数目的是复现 bug 3. --ignore-crashes --ignore-timeouts 这里是在 monkey 测试的过程中遇到 carash 或者 timeout 的情况时忽略掉,一般不设置时,出现 carash 或者 timeout 时, Monkey 测试会终止。这里是防止 Monkey 测试终止。 4. -v 指的是 Monkey 测试时打印 log 级别。 5. 100000 这里是指点击的次数,根据她们测试的经验,对于单个应用程序这个次数 设置在 100000 次就可以了;如果是真机,一般设置在 500000 次。 6. --throttle-时间 ,设置事务之间的延迟等待时间,单位是毫秒 7. >路径,设置日志存储路径 8.--pct-touch 50:指定具体的某个事务的占比 adb shell monkey -p com.example.login --ignore-crashes --ignore-timeouts --throttle 100 --pct- touch 50 --pct-motion 50 -v -v 1000 >c:\login\c.txt     Monkey异常分析 一般我们可以一次发送5万次随机事件的请求,每个请求之间的间隔为150毫秒,测试大约会 进行40min,完成以后就可以查看日志。 日志中可能的错误: 1.程序异常退出, crash (ctrl+f搜索) 2.程序强制关闭,ForceClosed (简称FC) (同上) 3.程序无响应,ApplicationNo Response(ctrl+f搜索‘ ANR ’,加空格是为了屏蔽掉一些 无效信息) 4.手动生成。 Monkey 执行中断, 在log最后也能看到当前执行次数    
上一篇:Monkey


下一篇:如何重现android猴子崩溃?