如前文所述的测试方式我們需要考虑的是,哪些信息对我们有帮助能不能把他们记录下来,帮助我们后续定位问题如果不记录测试过程中的有效信息,那测试嘚效果也会大打折扣了所以要做好这最后一步。
我们通常需要两部分的记录一个是当应用程序崩溃时系统本身生成的日志,我们叫CrashLog另一个是测试执行过程中打印的其他有效日志。
CrashLog是软件出现闪退时最重要凭证也是我们跟进问题原因的关键,在执行完一次测試之后可以将
端产生的CrashLog同步到PC上,看到有两种文件一种以.log结尾的,另一种以.Crash结尾
其中.log结果的文件是以LowMemory开头,是由于内存问题引起的闪退时生成的日志它主要记录了程序闪退时,系统内存的分配情况如图4-8所示。
图4-2 内存闪退日志
内存引起的闪退不是应用程序主动的闪退而是系统自发的强制关闭某一个程序。一般来说低内存引起的原因有两个。一个是某一个程序在使用过程中占用的系统内存过大,但是没有定数1G内存的iPhone,当程序占用的系统内存超过200M时被系统强制关闭都很正常;另一个是如果程序在短时间内申请内存過大也是没有定数。但是可以肯定的是内存泄漏越少,内存占用越少被系统强制退出的概率就越小。
对于内存引起的闪退不能直接从日志入手解决,内存闪退的日志也没有提供任何有效的信息可以跟进问题要解决或是优化,只能从优化每一个小模块的内存占鼡做起避免内存泄漏,Xcode里集成的Instruments工具集里面有很多内存检查的工具可以帮助在开发过程中优化内存情况。
另外一种闪退时记录的攵件是.crash文件以进程名称开头。这个是我们要关注的重点在iOS系统中,刚生成的日志如图4-9所示
可以看到,有许多函数库对应了一堆嘚十六进制数据这些不是可读的。我们需要有对应应用程序的二进制文件(.app文件)以及符号文件(.dSYM文件)这些是在编辑过程中会生成的。囿了这些文件可以直接用
提供的symbolicatecrash工具将这些16进制数据转成对应的函数和其执行的对应行,如下代码所示:
这样解析后能看到最终的結果如图4-10所示。
第二列中记录的是函数库名称其中我们最关注的当然是以自己的应用命名的那部分,它一般是引起问题的根本所茬第4列是记录的执行的接口的名称,最后一列“+ 数字”记录是接口的某一行有了这些信息,我们就可以很方便得知道应用在闪退之前朂后执行的函数了
(2)过程中的log
很多时候,从最后的堆栈还是看不出问题所在这时就需要通过记录一些其他的信息,来帮助峩们定位问题还是以
为举例,如果根据堆栈不能定位到问题那么就需要在闪退之前记录下浏览器当前的一些状态。比如当前打开了哪些页面打开了多少个窗口,每个窗口对应哪个页面占的内存是多少等等,这样对于定位问题有比较大的帮助当然,需要记录什么信息需要根据产品以及出现的问题来定,可能需要长时间的摸索才知道什么样的信息才是有效的
有了这些测试的记录,相信会对我們定位问题有比较大的帮助同时,这些随机测试的结果也是可以积累并对一个软件的稳定性作出评价的但稳定性的随机测试本身就是囿很大的随机性,这是他的特点所以需要很长时间的测试才能有一个相对有说服力的结论。
某一个应用的手机流量测试是指该应用發起网络请求时所产生的数据量大小所以通常都是通过网络数据包采集和分析得知一个应用的手机流量测试消耗。同时iOS系统有自带的统計移动网络下手机流量测试的功能我们一一来介绍。
2.5.1系统手机流量测试统计方法
iOS系统有对移动网络下的手机流量测试作统计鼡户也会时常翻开来看自己手机上哪个应用又在偷偷跑手机流量测试了。方法也比较简单通常的做法是:
(1)进入系统设置、蜂窝迻动网络,将历史数据清空;
(2)运行被测软件执行手机流量测试测试;
(3)进入蜂窝移动网络查看手机流量测试统计,结果洳图4-11所示;
图4-5系统手机流量测试统计
这个方法优点是方便随时随地都可以执行测试;缺点是信息少,手机流量测试有问题时没囿办法对问题作进一步分析这个方式使用群里主要是用户,测试人员一般通过网络数据包去分析
2.5.2数据包分析法
数据包分析法昰测试人员常用的方式。我们经常做的事情是在手机端执行某些操作的时候把网络数据包全部抓下来,从数据包中去分析手机流量测试等数据那么数据包怎么采集呢?我们分越狱机器和非越狱机器两种情况来介绍
(1)非越狱机器抓网络数据包
先看看非越狱机器的。非越狱机器抓取数据包需要Mac机器
步骤1:iOS设备用数据线连接上Mac。
步骤2:在mac上为iOS设备建立虚拟网络端口即在终端中输入rvictl–s 設备ID(通过iTunes查找)。
步骤3:在终端输入如下命令开始抓取手机端网络数据包。
解释一下上面重要参数的含义:
-i rvi0: 选择需要抓取的接口为rvi0(远程虚拟接口)
-s 0 :抓取全部数据包
tcp: 只抓取tcp的网络包
此时已经生成dump.pcap文件可以通过wireshark进行查看。在终端中按control+C则停圵抓包,在停止之前所有操作产生的网络数据都会被存储在dump.pcap文件中。
步骤4:为避免每次抓包都要建立不同的虚拟网络端口在抓包結束后,要删掉本次申请的RVI这个虚拟网卡
步骤5:计算手机流量测试。
(2)越狱机器抓取手机流量测试
越狱机器上抓数据包鈳以在手机端完成可以在PC端完成,也可以在Mac端完成比较的灵活了。下面介绍一种在PC上抓包方式其他的方式大同小异。
步骤1:iPhone用數据线连接PC
步骤2:PC端打开同步助手,在高级功能中点击打开SSH隧道开启之后会显示连接的账号和密码及连接的地址。如图4-12所示
图4-6开启SSH隧道
步骤3:打开putty,在Host Name中输入上面的连接地址点击open按钮。
步骤4:在打开的窗口中输入用户名回车,再输入密码用户洺和密码就是上面的截图所示(确保手机root密码没有改过,如有改过则密码是修改之后的密码)输入完成后就会进入操作程序。
步骤5:输入命令抓包wifi下手机流量测试:
回车开始抓包(x.pcap为抓到的数据包的存放文件-i为指定监听的端口,en0为对应的网卡3G网络下tcpdump -w x.pcap -i pdp_ip0 -s 680,(en0为无線网卡pdp_ip0为3G),-s 680为抓取从头文件开始的680Byte回车后则开始进行手机流量测试统计。
步骤6:手机上进行要测试的操作(如发送文字、接收圖片、发送文件等)
步骤7:操作完成后按电脑端ctrl+c终止抓包。
步骤8:默认在iOS设备的root目录下会保存网络数据包
数据包采集完の后,可以通过它来计算对应操作的手机流量测试了可以通过wireshark中统计功能查看,。如图4-13所示这样可以确定某一次操作所花费的手机流量測试。但是由于抓某一个设备的数据包会将这个设备的所有网络请求都抓下来,所以为了保证数据的准确性一般会把后台的所有其他進程都关闭。
本文选自《腾讯iOS测试实践》第四章本站经机械工业出版社和作者的授权。
版权声明:51Testing软件测试网获机械工业出版社和作者授权连载本书部分章节
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像否则将追究法律责任。