Android开发、adb、monkey测试

一、手机测试的概念架构

对于手机端测试,按照平台来分,分为Android和IOS两大主流系统

二、分类

  • 功能测试
  • 安装与卸载测试
  • 软件升级测试
  • 登录测试
  • 安全性测试 - 权限测试
  • 消息推送测试
  • 前后台切换测试(锁屏)
  • UI测试(界面测试)
  • 兼容性测试
  • 网络环境测试
  • mokey测试
  • 性能测试
  • 异常测试

三、Android介绍

Android是一种基于Linux的自由及开放源代码的操作系统,由Google公司和开放手机联盟领导及开发。
Android的系统架构和其操作系统一样,采用了分层的架构。
从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层


image.png

3.1. Android SDK(Software Development Kit)的安装和配置

1、java环境变量(jdk)
2、adb 环境变量
3、雷电模拟器

3.2 ADB常用指令

  • 查看设备:adb devices
    这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示
  • 安装软件:adb install -r (APK路径)
    -r 代表如果apk已安装,重新安装apk并保留数据和缓存文件。apk路径则可以直接将apk文件拖进cmd窗口,记得加空格
  • 卸载软件
    adb uninstall <软件名>
    adb uninstall -k <软件名>
    如果加 -k 参数,为卸载软件但是保留配置和缓存文件
  • 查看手机内存情况
    adb shell dumpsys cpuinfo
  • 查看内存情况
    adb shell getprop | findstr dalvik 本机内存的使用情况
  • 查看应用内存使用情况
    adb shell dumpsys meminfo +包名:应用的内存使用情况
  • 列出手机装的所有app的包名
    adb shell pm list packages
  • 列出系统应用的所有包名
    adb shell pm list packages -s
  • 列出除了系统应用的第三方应用包名
    adb shell pm list packages -3
  • adb logcat 查看手机日志
    adb logcat -v time process > C:/log/aa.txt
    "-v"选项 : 使用adb logcat -v time 命令, 可以查看日志的输出时间
    "process"格式 : " 优先级 (进程ID) : 日志信息
    ">"输出 : ">" 后面跟着要输出的日志文件, 可以将 logcat 日志输出到文件中

四、Monkey测试

1、Monkey用来做什么

Monkey 主要用于Android 的压力测试自动的一个压力测试小工具, 主要目的就是为了测试app 是否会Crash(崩溃)。

2、Monkey 前提条件

  1. 环境配置:把adb加入系统环境,手机开启开发者模式
  2. 连接手机,获取测试的包名。获取包名的方法
  3. Monkey编写测试命令,并运行。monkey操作命令
    如果要提前中结束测试,中断运行中的monkey
CTRL+C
adb shell ps | grep monkey  返回进程号
adb shell kill [刚才查到的进程号]

3、Monkey 命令 基本参数介绍

  • 1.使用monkey测试手机所有程序
adb shell monkey 100 执行monkey测试100次
  • 2.-p <允许的包名列表>
adb shell monkey -p com.example.login 100
用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。
如果不指定包, monkey将允许系统启动设备中的所有app
  • 3.显示日志详细程度
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
 //  1、缺省值,仅提供启动提示、测试完成和最终结果等少量信息
adb shell monkey -p com.example.login -v 100
// 2、提供较为详细的日志,包括每个发送到Activity的事件信息
adb shell monkey -p com.example.login -v -v 100
// 3、最详细的日志,包括了测试中选中/未选中的Activity信息
adb shell monkey -p com.example.login -v -v -v 100
  • 4.Monkey日志分析
将log信息写到文档中
adb shell monkey 100 >c:/log/b.txt
正常情况, 如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间
Monkey finished 代表执行完成
随机数种子

用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的

monkey测试1:adb shell monkey -p com.shjt.map –s 10 100
monkey测试2:adb shell monkey -p com.shjt.map –s 10 100
  • 5.--throttle <毫秒>
    用于指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的 生成和发送消息
例:adb shell monkey -p com.example.login --throttle 300 100
表示执行100个伪随机用户事件流,事件间隔为300毫秒
注:一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件。
  • 6.--ignore-crashes
作用:通常,应用发生崩溃或异常时Monkey会停止运行。
如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
例:adb shell monkey -p com.example.login --ignore-crashes 1000
// 正常操作,不忽略异常,遇到异常就终止
例:adb shell monkey -p com.example.login 1000
  • 7.--ignore-timeouts(ANR)
    作用:通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
  • 8.Monkey 实例


    image.png

monkey -p com.tencent.mtaexample -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &

  1. -p后面接着的对应的包名,如果是整机测试,就不需要 -p package_name
  2. -s后面是对应的种子数,好像就是操作步骤,根据她们测试的经验,一般种子数在23,同步她们测试的结果,一般种子的个数固定为23,和她们选择的操作步骤就是同步的。
  3. --ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash或者timeout时,Monkey测试会终止。这里是防止Monkey测试终止。
  4. -v 指的是Monkey测试时打印log级别。
  5. 100000 这里是指点击的次数,根据她们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是整机,一般设置在500000次。
    /data/local/tmp/log.txt测试的log记录在手机上/data/local/tmp/ 下面的log.txt里面,这个名字可以自己写。
  6. 2>&1 固定的写法,这个也很重要,代表的意思是中间忽略的东东的日志一并输入到指定的文件中。
  7. 最后单独的一个"&" 是一旦Monkey测试开始了,之后可以拔掉数据线,不会影响Monkey测试。
  8. 测试所有模块 monkey -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &

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.程序异常退出,uncausedexception (ctrl+f搜索‘Fatal’)
2.程序强制关闭,ForceClosed (简称FC) (同上)
3.程序无响应,ApplicationNo Response(ctrl+f搜索‘ANR ’,加空格是为了屏蔽掉一些无效信息)
4.手动生成。
Monkey 执行中断, 在log最后也能看到当前执行次数

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容