第九章 APP项目测试(4) 测试工具

2023-05-16

接上面一篇 继续

(7)--kill-process-after-error

参数说明:用于指定当应用程序发生错误时,是否停止运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保存当前状态(应用程序仅停止在发送错误时的状态,系统并不会结束该应用程序的进程)

例子:adb shell monkey-pcom.android.music--kill-process-after-error 1000

表示在测试过程中,如果music发送错误,monkey会停止运行并保存在当前状态。

(8)-hprof

参数说明:如果设置这个选项在Monkey事件序列之前和之后生成概要分析报告。这将在数据/misc中生成大型(5MB)文件,请慎用该选项

【事件选项】主要有--pct-[touch、motion、trackball、syskeys、nav、majornav、apps-witch、flip、rotation、anyevent、pinchzoom]等。

Monkey可以同时指定多个类型事件的百分比,但总和不能超过100%

(1)--pct-touch<percent>

参数说明:调整触摸事件的百分比,触摸事件是一个“按下”“抬起”事件发生在触屏的某处。

例子:adb shell monkey-pcom.music-pct-touch 101000

设置测试的触摸事件的百分比为10%

(2)pct-motion<percent>

参数说明:调整动作事件的百分比,动作事件由屏幕上某处的按下事件、随机事件和抬起事件组织。

例子:adb shell monkey-pcom.android.calendar--pct-motion 201000

表示设置动作事件的白费比为20%

(3)--pct-trackball<percent>

参数说明:调整轨迹事件的百分比,归基金事件由一个或几个随机的移动事件组成,有时还伴随有点击。

例子:adb shell monkey-pcom.android.calendar--pct-trackball 301000

表示设置轨迹事件的百分比为30%

(4)--pct-syskeys<percent>

参数说明:调整系统按键事件的百分比,系统按键指HOME、BACK、POWER、音量+、音量-等按键。

例子:adb shell monkey-pcom.android.calendar--pct-syskeys 601000

(5)-pct-nav<percent>

参数说明:调整基本导航事件的百分比,基本导航事件由up、down、left、right组成

例子:adb shell monkey-pcom.android.calendar--pct-nav  301000

6)--pct-majornav<percent>

参数说明:调整主要导航事件的百分比,这些导航事件主要是键盘中的一些按键事件。

例子:adb shell monkey-pcom.android.calendar--pct-majornav 501000

(7)--pct-appswitch<percent>

参数说明:调整启动APP Activity百分比。也就是调用应用活动控件的百分比。

(8)--pct-flip<percent>

参数说明:键盘翻转事件的百分比

(9)--pct-rotation<percent>

参数说明:设置旋转事件的百分比,就是设置应用的转屏动作。

例子:adb shell monkey-pcom.android.calendar--pct-rotation 1001000

表示设置应用camera的转屏事件百分比为100

(10)--pct-anyevent<percent>

参数说明:调整其他类型事件的百分比,包括所有其他类型的事件。

(11)主要有--pct-pinchzoom

参数说明:调整缩放事件百分比

4、Monkey 测试结果Log分析

1)正常Log,一般由这几种,列出Monkey运行时设置的参数

2)出现异常时,Log主要由2种,一种是 crash信息,应用奔溃后会出现这种Log,另一个是ANRlog。

crash log分析

在log文件中搜索crash,如果找到crash,说明应用出现过奔溃的情况,原因有很多种,主要由NullPointerException(空指针异常)、 lllegalStateException(非法指针参数)OutOfMemoryError(低内存异常)

ANRLog分析

在Log文件中搜索ANR,如果能找到,表示测试过程中国出现过应用无响应的情况。出现ANR的可能原因:某个进程处理时间过长、应用等待超时、应用本身等待网络超时、相关应用处理不同步、导致一直等待。

其他异常情况:Restart System异常(系统重新启动)RuntimeException(Android运行 时异常)、Stale DataException、ReadException(数据处理异常)

3)如果测试过程中由异常Log给开发人员分析。建议在测试过程中结合logcat实时抓取日志来分析问题。

5、Monkey 测试时注意事项
(1)准备好测试的前置条件

做一些准备工作,比如手机需要按照的应用、SD卡需要那些数据等。

(2)慎重使用ADB

一般会在2种情况下执行Monkey测试;工作时间或休息时间。如果在工作时间,想在模拟器或真机上执行Monkey测试的同时做出其他工作,记住慎重使用adb相关的命令,尤其是 adb kill-server这样的命令。由于Monkey是通过adb shell命令启动的,当由于某种原因在使用adb命令时重启adb服务,Monkey测试的日志记录会被终止,测试之后不会有相应的日志记录这种情况,如果测试发现奔溃问题,将不会记录log日志,这样很难分析问题。

3)同时记录Android系统日常

执行Monkey测试的同时,最后同时抓取adb logcat信息。

4)需要记录seed值

seed值是唯一能够重现Monkey测试中出现奔溃问题的方法。当一个Monkey测试中出现奔溃问题的方法。当一个Monkey测试出现的问题被修复后,有时不知道如何进行验证,这时候只能通过相同的参数,相同的seed值进行重现验证。

5)不要使用单一的命令

可以多写几条不同测试偏重点的monkey测试命令,在一个项目中同时使用这些命令进行测试,以便在每次测试时达到不同的测试效果,找到更多的缺陷。

6)重视crash

monkey测试所出现的NullPointException(指针奔溃)等都可以在用户使用时出现,何时出现只不过是时间问题。所以monkey所有的crash都需要在分不前修复好

9.4.4 DDMS

是Dalvik Debug Monitor Service的缩写,实际上它是Android虚拟机的调试监听服务器。它通过了端口转发服务、设备屏幕截取、设备上的线程和堆信息、logcat信息、进程和广播状态信息、来电和短信息模拟、地理位置数据模拟等。

DDMS工作在设备或模拟器上,如果真机设备或模拟器同时运行并且连接到计算机上,那么DDMS之间启动设备检视服务。当设备连接时,adb和DDMS间建立了虚拟机监听服务,它将提高DDMS"设备上的虚拟机何时开始,何时终止“一旦虚拟机运行,DDMS通过(adb deamon 守护进程)建立一个到虚拟机调试器的连接。DDMS可以通过相应的协议和虚拟机通信。

在命令下运行ddms便可以启动DDMS,启动DDMS之前需要先运行模拟器或连上设备。

2、DDMS的功能

DDMS集成在android的虚拟机中,用于管理运行在模拟器或设备上的进程,并协助进行调试。可以用它来选择一个程序来调试、生成跟踪数据、查看堆和线程数据、对模拟器或设备进行屏幕快照等。

(1)启动DDMS

启动之前需要连接上设备或模拟器。然后命令下运行ddms便可以启动DDMS,启动后界面如图9-9所示

(图中分3大模块,第一模块是设备或模拟器中运行的进程。第2模块有多个标签页、包括info、Threads、VM、Heap、Sysinfo Network等。 第3模块显示应用运行的日志信息)

(2)信息日志信息--logcat

Logcat 用来显示系统中的调试信息,在程序中调用的Log类函数的输出信息都在这里输出。如图9-9第三模块所示。logcat中输出很多日志信息,可以选择不同级别的信息进行显示,日志显示的级别,详见表9-3

(3)线程标签页-Threads

显示在目标虚拟机中当前进程中的所有线程信息如图9-10所示,

 显示了进程com.freshO2O的线程信息。其中ID表示在虚拟机中的线程ID,Tid表示Linux线程ID,跟

PID一致,Status表示状态值(状态值有Runnable正在执行、wait等待执行、monitor等待获取一个监听锁),带“*”表示守护进程,Utime表示应用执行的累计时间,Stime表示系统执行的累计时间Name表示线程名字。

(4)内存堆状态信息 VM heap

首先在9-11图中

单击图片 (show heap update),然后在单击(Cause an im-mediate GC)便在VM heap标签页中显示虚拟机内存堆信息。显示当前进程占用内存情况,其中,Heap Size表示该进程能用的总共内存大小,Allocated表示该进程当前使用的内存空间,Free表示剩余的内存空间,如图9-11所示。

(5)生成分析.hprof文件

在图9-11中单击Dump HPROF fule可以抓取heap dump文件,它的扩展名为hprof,开发人员通过分析heap dump可以发现应用是否存在内存泄露的问题。

(6)导入导出

在启动页面中,菜单栏Device下,单击File Explorer会列出当前设备或模拟机器上的所有文件,如图9-12所示。

还可以把设备或模拟器上的文件导出到PC端,也可以PC端上的文件复制到设备或模拟器中。

(7)保存截图

还提供了一个截图功能,当测试过程中发现问题,并且想把现场保存下来,可以使用ddms来保存截图,具体操作:在启动界面菜单栏Device下,单击 “Screen capture"按钮,出现图中单击“Save”

按钮就可以保存。然后选择保存路径进行保存,最后保存为.png文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第九章 APP项目测试(4) 测试工具 的相关文章

随机推荐

  • linux 22.04版本ubuntu换源

    1 备份原始源文件 执行下面命令 xff0c 将原来的源文件备份保存 sudo cp etc apt sources list etc apt sources list bak 2 修改源文件sources list 打开源文件 xff0c
  • jquery dialog 弹出 ajax加载数据

    我之前就是想实现一个弹框 xff0c 在弹框的时候用ajax 动态加载要展示的内容 xff0c 这个地方实现起来并不难 xff0c 但是在实现的时候遇到了一个坑 页面 xff1a lt div id 61 34 logDiv 34 styl
  • 解决STM32新增加函数出现Undefined symbol HAL_ADC_Init (referred from main.o). 问题

    最近在开发STM32L0xx系列产品的ADC采集项目 xff0c 在老工程上添加库函数 xff0c stm32l0xx hal adc h stm32l0xx hal adc c函数 进行ADC初始化 xff0c 编译不通过出现 xff0c
  • GET,POST,PUT,DELETE,OPTIONS等请求方式简单总结

    之前做的java web项目 xff0c 基本上只使用get和post的请求方式 xff0c 但是现在新项目额外增加了put xff0c delete xff0c 查了点资料 xff0c 做个简单的总结 1 GET get请求是用来获取数据
  • IOS TableView Cell重用机制及TableView常用Code

    写的太好了 xff0c 多谢楼主的无私分享 文章来自 xff1a http heidianfeng blog 163 com blog static 6184345620121114104552518 创建UITableViewContro
  • 编译Linux驱动程序

    基于Ubuntu 12 10 xff0c 编译Linux驱动程序 1 准备linux内核源码 此时 xff0c 我要编译的驱动是基于Ubuntu 12 10内核的 xff0c 所以我下载的是其对应的内核源码包 xff1a linux 3 5
  • 卸载windows10子系统卸载linux

    参考地址 xff1a https docs microsoft com en us windows wsl wsl config 查看所有已经安装的分发版本 xff1a wsl list all 查看正在运行的分发版本 xff1a wsl
  • github镜像站

    github镜像站 xff1a https hub fastgit org GitHub 在国内经常会出现无法访问的情况 xff0c 下面分享几个 GitHub 镜像站供大家使用 xff01 全局加速 可直接访问站点 xff0c 查看代码等
  • vnc连接linux失败,vnc连接linux失败解决办法

    在日常工作学习中 xff0c 经常会使用到vnc连接 xff0c 那有小伙伴知道如何进行vnc连接linux吗 xff1f 当vnc连接linux失败又该如何解决呢 xff1f 之前有简单介绍过如何实现vnc连接linux 那接下来让我们一
  • 域名是如何关联到CDN的

    用户在访问一个域名的时候 xff0c 网络中是怎么知道这个域名到底是配置在哪一个CDN厂商的呢 xff1f 笔者以test1 huiziguoxueshe com为例 xff0c 来描述下具体的过程 xff0c 如下所示 xff1a ste
  • 第五章:软件详细设计

    真是应了那句 xff1a 白天游四方 晚上点灯补裤裆 捂脸 xff09 xff0c 孩子睡了夜深人静了 我才是开始我的小笔记整理工作 详细设计是软件设计的第二阶段 xff0c 这一阶段的工作 xff0c 就是要对系统中的每个模块给出足够详细
  • 第7章 软件测试(1)

    今天是个开心的日子 xff0c 具体为啥开心我知道你懂得 继续我的龟速学习小笔记 它来了它来了 xff0c 你说它很简单 xff0c 当我看到此章的一部分内容后发现了原来学霸和学渣差别就是如此大 xff08 捂脸 xff09 xff0c 今
  • 第7章 软件测试(3)

    一晃3天没有学习了 xff0c 昨天的阅读量创立了一个新高 xff0c 内心还是很欢喜的 7 4 2黑盒技术 黑盒技术着重测试软件功能 xff0c 需重点研究需求说明和总体设计中有关程序功能输入 输出之间的关系等信息 xff0c 从而与测试
  • 第七章 软件测试(此章完结)

    春乏秋困 xff0c 一个早上哈气连天 脖子酸 腰痛 xff08 捂脸 xff09 近期叫醒我的不是闹钟也不是梦想 xff0c 而是凌晨4点和6点广播大喇叭喊居民做核酸的声音 xff0c 还是别的小区的 xff08 再次捂脸 xff09 也
  • 第十章:面向对象分析(2)

    3 泛化关系 泛化关系和类找那个的泛化概念是一样的 xff0c 于用例继承父用例的行为和含义 xff0c 还可以增加或覆盖父用例的行为 xff0c 子用例可以出现在任何父用例出现的位置 xff08 父和子均有具体的实例 xff09 也可以重
  • 第十章:面向对象分析(此章完结)

    10 4 4建立活动图 活动具体表现为由一系列动作组成的执行过程 xff0c 将各种活动及不同活动之间的转换 xff0c 用图形进行表示就构成了活动图 xff0c 作用是对系统的行为建模 1 活动图与流程图 活动图描述系统使用的活动 xff
  • 第十五章 软件工程新技术

    俺家老大说这一章我不需要仔细看 xff0c 快快过一遍就行 xff08 可能是觉得以我的能力一时半会也用不到吧 xff08 捂脸 xff09 xff09 那么我就抄一段本章小结吧 xff0c 后面如有需要我在重新认真学习 xff08 奸笑
  • 第四章 软件测试方法(2)

    上周学习了白盒 xff0c 本周开始学习黑盒测试 4 3黑盒测试 黑盒测试 xff08 Black Box Testing xff09 也称功能测试 xff0c 主要测试每个功能是否正常使用 是软件测试使用中最广泛的一类测试 在黑盒测试中
  • vnc viewer手机中文版,超好用的5款vnc viewer手机中文版

    在平时工作中 xff0c 经常会用到vnc viewer软件 当软件打开都是英文介绍 xff0c 真的让人很头痛 在各种各样的vnc viewer手机中文版软件中 xff0c 要想找到那款让你使用方便的软件 xff0c 真的很不容易 xff
  • 第九章 APP项目测试(4) 测试工具

    接上面一篇 继续 xff08 7 xff09 kill process after error 参数说明 xff1a 用于指定当应用程序发生错误时 xff0c 是否停止运行 如果指定此参数 xff0c 当应用程序发生错误时 xff0c 应用