您的位置:首页 > 移动开发

Android App专项测试-压力测试笔记

2016-11-08 21:16 513 查看
为什么需要压力测试:

                                        提高产品的稳定性

                                        提高产品的留存率

什么时候开展压力测试:

                                       首轮功能测试通过后

                                       下班后的夜间进行

1.手工测试场景

需求:找惹火辣妹聊天

查找->添加->聊天

2.自动测试场景

 TouchInput->keyEvent->TouchSearch->TouchName->TouchFriend->KeyEvent    模拟事件流

3.Monkey

发送伪随机用户事件的工具

4.ADB

Android Debug Bridge

5.Monkey Script

是一组可以被Monkey识别的命令集合

可以完成重复固定的操作

6.MonkeyRunner(手机截屏)

MonkeyRunner:用来连接设备或模拟器

MonkeyDevice:提供安装、卸载应用、发送模拟事件

MonkeyImage:完成图像保存,及对比的操作

多设备控制 功能测试  回归测试

提供了一系列的API

Monkey和MonkeyRunner的区别

Monkey:在adb shel中,生成用户或系统的伪随机事件。

MonkeyRunner:通过API定义特定命令和事件控制设备。

7.压力测试结果

1.什么是CRASH?

即崩溃,应用程序在使用过程中,非正常退出。

2.什么是ANR?

Application Not Responding  例如:未响应

1.一个APP的压测实践

准备Android SDK环境

准备python环境

连上手机

adb devices看手机是否连上

adb shell monkey 1000

Events injected:1000

完成事件与设定好的monkey数值一致,没有出错

获取App包名:在linux环境下使用adb logcat | grep START

                           在windows环境下使用adb logcat | findstr START

在出完信息后点开手机中你要测试的应用,会在cmd中显示出它的包名。即cmp=后面的com.至/前的内容

测试命令:adb shell monkey -p 包名 次数(比如1000)

2.Monkey高级参数的应用

【1】throttle参数 :事件之间的间隔   --throttle 1000 一秒延迟

adb shell monkey -p com.android.calculator2 --throttle 1000 100(monkey的次数)

【2】seed参数:指定随机生成数的seed值

adb shell monkey -p com.android.calculator2 -s 100 50 (次)

adb shell monkey -p com.android.calculator2 -s 100 50 选取一样的seed值可以复现上次的monkey测试内容

【3】触摸事件

adb shell monkey -p com.android.calculator2  --pct-touch  100(百分比) 100

adb shell monkey -v -p com.android.calculator2  --pct-touch 100 100会列出所有的操作事件

【4】动作事件

--pct-motion<percent>

【5】轨迹球事件

--pct-trackball<percent>

【6】基本导航事件

设定基本导航事件的百分比,输入设备的上,下,左,右

--pct-nav<percent>

【7】主要导航事件

兼容中间键、返回键、菜单按键

--pct-majornav <percent>

【8】系统导航事件

--pct-syskeys<percent&
4000
gt;

【9】启动Activity事件

设定启动Activity的事件百分比

--pct-appswitch<percent>

【10】设定不常用事件的百分比(如果想在执行系统主要事件之外测试一些其他事件可以使用此参数)

--pct-anyevent<percent>

【11】崩溃事件

忽略崩溃和异常

--ignore-crashes <event-count>

【12】超时事件

忽略超时事件

--ignore-timeouts

例:adb shell monkey -v -p com.android.calculator2  --pct-touch 50 --ignore-crashes --ignore-timeouts 100

3CRASH结果析取

Step1:安装可以引起CRASH 的App

Step2:执行压力命令

Step3:析取CRASH的Exception信息(将Crash后的信息复制给开发排错)在结束点可以看到seed值 

使用ignore忽略CRASH继续进行时每次CRASH后都会是一个新的SEED值,因此无法获取到seed值

4.ANR结果的析取

Step1:安装可以引起CRASH 的App

Step2:执行压力命令

Step3:析取ANR的Exception信息

(1) adb shell

(2) cd /data/anr/

(3) ls =>more traces.txt

一般ANR异常信息会放在此文件的上方

5.Monkey Script实例

adb shell monkey -f <scriptfile><event-count>

【1】DispatchTrackball命令

轨迹球事件

DispatchTrackball(long downtime,long eventide,int action,float x,float y,

float pressure,float size,int metastate,float xprecision,float yprecision,int device,

int edgeflags)

action 0代表按下,1代表弹起,x和y代表的坐标点

【2】点击事件

DispatchPointer(long downtime,long eventide,int action,float x,float y,

float pressure,float size,int metastate,float xprecision,float yprecision,int device,

int edgeflags)

action 0代表按下,1代表弹起,x和y代表的坐标点

【3】DispatchString命令(因为我们在搜索过程中需要一个查询值)

输入字符串事件

DispatchString(String text)

【4】LaunchActivity命令

启动应用

LaunchActivity(package,Activity)

【5】UserWait命令(实现过程中需要等待一些事件的出现)

【6】DispatchPress命令(查询词后一般会需要按一下回车,此时可用)

按下键值

DispatchPress(int keycode) #keycode 66 回车键

等待事件

UserWait(1000)

================================================================

2016/11/8  23:26   今天看相亲信息用掉了一个多小时,差不多从9点开始看的视频

暂时先睡觉,明天继续,今天早上上班迟到了,在慕课网上看到的这个视频教程。

================================================================

实例:

1.启动App

2.点击输入框

3.输入查询词

4.点击键盘的回车

5.点击搜索按钮

6.等待结果的出现

7.点击clear按钮

利用SDK中的工具uiautomatorviewer(need with API 16)获取屏幕

在android device Monitor中点开虚拟机管理界面新建虚拟机start

tools => Android=>enable ADB Intergration

================================================================

2016/11/10  23:15  这两天正式开始看公司的APP项目。将开发平台迁移到Android

Studio 上。各种报错和图片问题,电脑内存不足的问题开始凸显。4G的电脑伤不起

晚上在电脑卡死上就浪费了几个小时。期间还有IP冲突断网。明天开始利用uia工具

整理一下代码框架和图层间的关系。

================================================================

7.MonkeyRunner实例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息