简介
日志是非常重要的,用于记录系统、软件操作事件的记录文件或文件集合,可分为事件日志和消息日志。具有处理历史数据、诊断问题的追踪以及理解系统、软件的活动等重要作用,在开发或者测试软系统过程中出现了问题,我们首先想到的就是她——logging。她可不像泰戈尔说的:“天空没有留下翅膀的痕迹,但我已经飞过”;Monkey这个小姑娘,她可是一个爱炫耀,爱显摆的人已经达到了人过留名、雁过留声的境界。只要我们按图索骥就一定可以定位到问题所在,然后分析问题,解决问题。好了逗大家一乐,下面开始进入今天的正题。
1.为什么要看Monkey日志管理
Monkey日志管理是Monkey测试中非常重要的一个环节,通过日志管理分析,可以获取当前测试对象在测试过程中是否会发生异常,以及发生的概率,同时还可以获取对应的错误信息,帮助开发定位和解决问题。这样你就不会只停留在一个点点点的点工上,对自己也是一个很好的提升。
2.Monkey Log分析:
当monkey测试时出现问题,此时我们需要分析定位问题,我们需要分析monkey日志
Monkey测试出现的异常的原因:
一般是两种原因导致的,一个是crash 程序崩溃,导致crash原因如下
a)、程序存在空指针
b)、cpu不足
c)、内存不足
另一种是ANR 程序无响应,导致anr无响应原因如下:
a)、线程阻塞
b)、cpu不足
c)、内存不足
查找分析原因:
1. 当monkey测试出现异常终止,请打开logcat日志搜索关键字‘anrin’,如果存在该关键字,说明app出现了ANR异常,我们需要把/data/anr目录下的trace.txt文件取下来。
2. 取下来trace.txt文件后,将出现问题的进程号对应的日志发给软件工程师定位,如果在logcat日志里没有搜索到’anrin’关键字,就搜索’nullpointer’异常关键字的上下日志,发给开发定位
3. 当出现ANR后,需要导出,步骤如下:
1. 输入adb shell
2. 输入cd /data/anr/
3. 输入ls
退出exit后,直接在cmd下输入
4. adb pull /data/anr/traces.txt d:\trace.txt
5. 在logcat将出现anr问题的进程号复制,然后在trace.txt文件里按ctrl+F 查找,粘贴进程号,查找对应的问题
2.1Monkey结果分类
Monkey运行log输出,按下列顺序输出
下面就是我贴出的详细LOG分析:(表情代替注释符号,以免跟日志搞混)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
|
3.快速从monkey.txt日志中定位问题
3.1测试结果初步判断
1.monkey执行时未加--ignore-crashes
--ignore-crashes
参数,就先浏览日志中Events injected: 值
,查看当前已执行的次数,就知道有无bug
2.程序无响应的问题:在日志中搜索 “ANR”
3.崩溃问题:在日志中搜索 “Exception” ,在这里顺便提一下常见的Java异常:
1 算术异常类:ArithmeticExecption 2 空指针异常类:NullPointerException 3 类型强制转换异常:ClassCastException 4 数组负下标异常:NegativeArrayException 5 数组下标越界异常:ArrayIndexOutOfBoundsException 6 违背安全原则异常:SecturityException 7 文件已结束异常:EOFException 8 文件未找到异常:FileNotFoundException 9 字符串转换为数字异常:NumberFormatException 10 操作数据库异常:SQLException 11 输入输出异常:IOException 12 违法访问错误:IllegalAccessError 13 内存不足错误:OutOfMemoryError 14 堆栈溢出错误:StackOverflowError 15.其他,请参考:https://www.cnblogs.com/cvst/p/5822373.html
3.2找出问题后的操作步骤:
1.找到是monkey里面的哪个地方出错
2.查看Monkey里面出错前的一些事件动作,并手动执行该动作
3.若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样。
4.日志导出
细心地小伙伴可能通过前边的一系列操作和查找日志定位问题,发现docs命令窗口在查看和操作的时候特别地不方便,那么Monkey有没有像Tomcat等其他工具那样有log日志文件,很不幸告诉小伙伴们答案是:NO!,但是好消息是:我们可以将日志导出到文件中。然后将文件导出到手机或者是电脑上。
4.1导出方法
导出到手机:
1 2 3 4 5 6 7 8 9 |
|
导出到电脑:
1 2 3 4 5 6 7 |
|
以上的导出方法,导出日志后,标准流和错误流的日志混合在一起,给我们定位和分析问题又带来麻烦了,因此需要将其分开导出保存。
标准流和错误流分开保存:
1 2 3 4 5 |
|
各个文件主要内容:
1 2 3 4 5 |
|
5.日志参数
1、-v 较少的日志信息
2、-v -v 较为丰富的日志信息
3、-v -v -v 最高级别的日志信息(推荐)
6.小结
初步分析方法:
(1)、找到是monkey里面的哪个地方出现错误
(2)、查看monkey里面出错前的一些事件动作,并手动执行该动作
(3)、若以上步骤还不能找到,可以使用之前执行monkey命令,再执行一遍,注意使用的seed值要一样
测试结果分析:
(1)、ANR问题(程序无响应):在日志中搜索“ANR"(application no response)
(2)、闪退问题:在日志中搜索"crash"
(3)、异常:搜索"exception"
(4)、强制退出:搜索"force closed"
好了,今天关于日志就到这里了!
【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!
生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!
只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!