压力测试 第一次接触这个概念,客户端做压力测试,没听说过。其实是有的,典型:疯狂的点击屏幕。今天试验了一把,原理:用脚本疯狂去模拟点击事件,如何去模拟点击事件呢,就是好比一个人,随便去点,不一定非得就去点击有反应的控件。

看看打印的log:

m.android.settings/.WirelessSettings } in package com.android.settings

:Sending Pointer ACTION_DOWN x=209.0 y=147.0

:Sending Pointer ACTION_UP x=209.0 y=147.0

:Sending Pointer ACTION_MOVE x=-2.0 y=0.0

// Rejecting start of Intent { act=android.intent.action.MAIN cat=[android.i

ntent.category.HOME] cmp=com.android.launcher/.Launcher } in package com.android //这种非本程序的包,是不去模拟的

.launcher

:Sending Pointer ACTION_DOWN x=219.0 y=29.0 //疯狂模拟各个位置的点击事件

:Sending Pointer ACTION_UP x=219.0 y=29.0

:Sending Pointer ACTION_DOWN x=319.0 y=18.0

:Sending Pointer ACTION_UP x=319.0 y=18.0

:Sending Pointer ACTION_DOWN x=179.0 y=91.0

:Sending Pointer ACTION_UP x=179.0 y=91.0

:Sending Pointer ACTION_DOWN x=212.0 y=176.0

:Sending Pointer ACTION_UP x=212.0 y=176.0

:Sending Pointer ACTION_DOWN x=196.0 y=193.0

:Sending Pointer ACTION_UP x=196.0 y=193.0

:Sending Pointer ACTION_MOVE x=-5.0 y=-2.0

// CRASH: com.acp.main (pid 325)

// Short Msg: Array index out of range: 0

// Long Msg: java.lang.ArrayIndexOutOfBoundsException: Array index out of range://程序出问题了,数组越界了,测试到这,测试就会自动停止了。

0

// Build Label: android:generic/sdk/generic/:2.1-update1/ECLAIR/35983:eng/test-k

eys

// Build Changelist: 35983

// Build Time: 1273161972

// ID:

// Tag: AndroidRuntime

// java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0

//   at java.util.Vector.elementAt(Vector.java:331)

//   at com.acp.main.BuyTg$3.onItemClick(BuyTg.java:142)

//   at android.widget.AdapterView.performItemClick(AdapterView.java:284)

//   at android.widget.ListView.performItemClick(ListView.java:3285)

//   at android.widget.AbsListView.onKeyUp(AbsListView.java:1757)

//   at android.widget.ListView.commonKey(ListView.java:2059)

//   at android.widget.ListView.onKeyUp(ListView.java:1968)

//   at android.view.KeyEvent.dispatch(KeyEvent.java:1061)

//   at android.view.View.dispatchKeyEvent(View.java:3683)

//   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:746)

//   at android.widget.ListView.dispatchKeyEvent(ListView.java:1943)

//   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)

//   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)

//   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)

//   at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyE

vent(PhoneWindow.java:1655)

//   at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(Phone

Window.java:1102)

//   at android.app.Activity.dispatchKeyEvent(Activity.java:2038)

//   at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(

PhoneWindow.java:1631)

//   at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2368)

//   at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2338)

//   at android.view.ViewRoot.handleMessage(ViewRoot.java:1641)

//   at android.os.Handler.dispatchMessage(Handler.java:99)

//   at android.os.Looper.loop(Looper.java:123)

//   at android.app.ActivityThread.main(ActivityThread.java:4363)

//   at java.lang.reflect.Method.invokeNative(Method.java:-2)

//   at java.lang.reflect.Method.invoke(Method.java:521)

//   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.ja

va:860)

//   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

//   at dalvik.system.NativeStart.main(NativeStart.java:-2)

** Monkey aborted due to error.

Events injected: 571

:Dropped: keys=0 pointers=15 trackballs=0 flips=0

## Network stats: elapsed time=68130ms (68130ms mobile, 0ms wifi, 0ms not connec

ted)

** System appears to have crashed at event 571 of 1500 using seed 0

# monkey -p com.acp.main -v 6000

monkey -p com.acp.main -v 6000

:Monkey: seed=0 count=6000

:AllowPackage: com.acp.main

:IncludeCategory: android.intent.category.LAUNCHER

:IncludeCategory: android.intent.category.MONKEY

// Event percentages:

//   0: 15.0%

//   1: 10.0%

//   2: 15.0%

//   3: 25.0%

//   4: 15.0%

//   5: 2.0%

//   6: 2.0%

//   7: 1.0%

//   8: 15.0%

:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.categ

ory.LAUNCHER;launchFlags=0x10000000;component=com.acp.main/.BootUI;end

// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.in

tent.category.LAUNCHER] cmp=com.acp.main/.BootUI } in package com.acp.main

:Sending Pointer ACTION_MOVE x=-4.0 y=2.0

// Allowing start of Intent { cmp=com.acp.main/.DesktopUI } in package com.a

cp.main //本程序内的跳转是允许的

// activityResuming(com.acp.main)

:Sending Pointer ACTION_UP x=0.0 y=0.0

// Allowing start of Intent { cmp=com.acp.main/.LoginUI } in package com.acp

.main

// activityResuming(com.acp.main)

如何使用Monkey:

1、第一步,cmd 进入“ adb  shell”,进入avd 的根目录后,“ls ”看到了一个data的目录,里面就是我们要安装程序的

2、第二步,找到所有安装应用程序的包,其中里面就有你要测试的包的名称

3、当然你如果熟悉了Monkey的话,直接“adb -d shell monkey -p your.package.name -v 6000”也是可以的。

命令:adb shell

#ls

ls

cd /data/data

ls

adb -d shell monkey -p your.package.name -v 6000

参考文章:http://www.cnblogs.com/renjie/archive/2011/05/22/2053183.html

http://blog.csdn.net/li_guotao/archive/2011/03/03/6219729.aspx

在这过程中,可能会出现adb 命令不能用的情况

解决问题如下:

首先这个问题有两种可能:     
1.就是没有配置环境变量, 这个只需要将android安装:例如C:/Program File/android-sdk-windows/tools加入到 系统变量Path中,需要注意的是Path中会配置的有其他的路径,需要在android的路径前加;然后将上面的路径粘贴上去就OK了。
2.就是配置了环境变量在cmd中输入adb还是出现“adb不是内部或外部命令”这样的问题,那么轻接着往下看: 在我刚学习android的时候在网上找了许多配置android环境变量的方法、也根据他们的说法配置好android的环境变量、然后输入adb、别 人就可以显示好多信息,可是我的偏偏出错了,可是我明明是按照网上说的方式去做的,而且大多说法都一样,我就找错啊,找了半天找不到啊,实在是找不到,不 就是配置一个环境变量吗,有什么好配置的呀,后来看文件夹,发现在/platform-tools下面有adb.exe,而在tools文件夹下面没有, 原来是这样的。android2.2和android 2.3是不一样的 ,android2.3 adb.exe是放在android-sdk-windows/platform-tools目录下面的,而2.2是放在tools目录下面的,所以我吧 path的路径指到platform-tools下面,然后输入adb,成功!!!
希望大家注意android版本更改后文件夹路劲会产生变化,但是只要做相应的改变,相信没什么大问题的。O_o
参考:http://blog.sina.com.cn/s/blog_60ed47f00100qxb3.html
注意事项:要测试某个软件,先把模拟器开启来,软件开不开都无所谓。软件,要是装在手机上,显示权限不允许。
--------------------------------------------------------------------------------------------------------------------------------------
应用程序无响应ANR Application No Response
也是第一次听说这个概念,其实没什么新奇的,目的:一个反应灵敏的程序,用多线程。

很多初入Android开发的网友可能发现ANR的字样,到底Android ANR是什么呢? 其实ANR就是Application Not Responding的全称,当某个应用处于长期假死状态时Android系统会弹出一个窗口上面写道,XXX is not responding给出两个按钮一个为force close一个为wait。

可能触发ANR的情况

1. 长时间的I/O处理,比如读写大文件,网络访问时造成的阻塞。

2. 执行耗时的运算,Android默认为超过5000ms即5秒开始弹出ANR窗口,某些应用可能首次执行时没有缓存十分耗时,可以通过Splash播放闪屏Logo等方式来延缓加载

3. Service和appWidget中也要注意多线程的使用,除非它和Activity工作在不同的进程。

避免ANR的方法

1. 单独开工作者线程,通过独立的Thread或使用类似AsyncTask的方式来处理耗时的内容。

2. 耗时的操作尽量分段处理,使用类似状态机的方法,类似Symbian的活动对象将一个复杂的事情,分段执行。

3. UI线程中不要处理过多的内容,比如将一个5MB的文本,让TextView去setText,要知道这种UI操作,没有什么好方法去解决的,所以Android123提示,遇到UI中需要执行复杂的操作,可以参考上面2提到的分段处理方式。

转载于:https://www.cnblogs.com/royi123/archive/2013/06/02/3114157.html

压力测试 Monkey 应用程序无响应ANR Application No Response(转)相关推荐

  1. Android Training - 避免程序无响应ANR

    可能你写的代码在性能测试上表现良好,但是你的应用仍然有时候会反应迟缓(sluggish),停顿(hang)或者长时间卡死(frezze),或者应用处理输入的数据花费时间过长.对于你的应用来说最槽糕的事 ...

  2. Android App压力测试(Monkey和ADB)

    压力测试简介 压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分.压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试.通常 ...

  3. Android笔记 ANR Application Not Response

    ANR: Application Not Response 应用程序无响应 ANR产生原因:主线程要做很多事,如响应点击事件,更新UI.如果在主线程阻塞过久的时间,则发生ANR.单位时间内主线程(UI ...

  4. 鸿蒙系统测试失败,ANR-WatchDog-ohos: 一个简单的监测程序,可检测到鸿蒙系统的 ANR(Application Not Response-应用程序无响应)错误并引发有意义的异常...

    ANR-WatchDog-ohos 一个简单的监测程序,可检测到鸿蒙系统的 ANR(Application Not Response-应用程序无响应)错误并引发有意义的异常 项目名称:ANR-Watc ...

  5. C# OpenFileDialog.ShowDialog 打不开,程序无响应(错误的解决)

    1:C# OpenFileDialog.ShowDialog 打不开,程序无响应 环境:win7 .Net framework2.0 现象; c#写的一个程序,在xp下点击文件打开按钮没有任何问题,但 ...

  6. 您没有权限来打开应用程序_苹果建议:除非应用程序无响应,否则不要滑动强制退出...

    紫金财经2月26日消息 今日,苹果公司发布的一条建议,成为了微博热搜的话题.苹果建议除非应用程序无响应,否则不要滑动强制退出. 苹果公司表示,滑动关闭iPhone的应用程序可能会缩短电池寿命,并使设备 ...

  7. Doom流量回放工具导致的测试环境服务接口无响应的排查过程

    Doom流量回放工具导致的测试环境服务接口无响应的排查过程 现象描述: a)部分接口(A组接口)无响应 b)部分接口(B组接口)正常响应 c)还有一部分接口(C组接口),场景1无响应,场景2正常响应 ...

  8. chm打开秒退_Mac_Mac电脑程序无响应怎么办?Mac程序无响应解决方法,虽然Mac电脑一向以运行稳定、 - phpStudy...

    Mac电脑程序无响应怎么办?Mac程序无响应解决方法 虽然Mac电脑一向以运行稳定.流畅而著称,但Mac电脑运行时间长了,难免也会遇到程序卡死无响应.一直"转菊花"的情况,可能是由 ...

  9. 简单有效的解决打开Xcode一直loading并显示程序无响应问题

    简单有效的解决打开Xcode一直loading并显示程序无响应问题 项目场景: 问题描述: 原因分析: 解决方案: 项目场景: 打开一个旧的项目文件的 main.storyboard 时候Xcode崩 ...

  10. android服务器压力测试,Android压力测试Monkey工具

    最近在Android程序测试过程中接触到了自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyrunner其它test t ...

最新文章

  1. 使用Python判断俩张图像相同或以某种方式相似
  2. 按下回车表示确定提交
  3. 披上AI战衣的中国APP,正在让印度节节败退
  4. form表单序列化去除空值
  5. JavaScript 函数定义方式
  6. Teams中的快捷键让沟通协作更加高效
  7. Web设计与开发终极资源大全
  8. nginx关闭favicon.ico日志
  9. Citrix 桌面云 XenApp_XenDesktop_7.18 部署
  10. android开发rn插件,RN native module 插件开发
  11. yolo系列外文翻译_yolov3论文中英对照版
  12. appium-滑动、拖动操作
  13. 英语简单句——英语句子的基本结构、句子的成分(谓语、主语)、简单句的考点分析
  14. ECS架构 Entitas-CSharp学习之路(二)
  15. [Oracle- MySQL] Oracle通过dblink连接MySQL
  16. 【面试题】有一个数组,每隔两个数删掉一个数,到末尾又循环到开头继续进行,求最后一个被删除的数的原始下标位置
  17. 2020年十大办公室装修设计建议!
  18. NAACL 2022 | 机器翻译SOTA模型的蒸馏
  19. [转]Android 开源项目分类汇总
  20. .NET Core使用Cookie做身份验证

热门文章

  1. vue push 无效_深入浅出Vue响应式原理
  2. python同步远程文件夹_利用python实现两个文件夹的同步
  3. 8086cpu学习笔记(1):系统结构
  4. matlab软件及基础实验第8单元,知到高等数学与MATLAB启蒙第八单元章节测试答案...
  5. 数字盲打怎么练_数字键盘区的功能及指法技巧
  6. L1-023 输出GPLT (20 分) — 团体程序设计天梯赛
  7. 设置电脑右下角显示自己的大名
  8. 05 基本数据类型+五大数据类型
  9. 关闭软件的同时,也关闭软件的进程
  10. dfs序七个经典问题[转]