稳定性测试结果记录——腾讯iOS测试实践(3)

发表于:2017-10-20 16:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:丁如敏 王琳 等    来源:51Testing软件测试网原创

  2.4.3稳定性测试结果记录
  如前文所述的测试方式,我们需要考虑的是,哪些信息对我们有帮助,能不能把他们记录下来,帮助我们后续定位问题。如果不记录测试过程中的有效信息,那测试的效果也会大打折扣了,所以要做好这最后一步。
  我们通常需要两部分的记录,一个是当应用程序崩溃时系统本身生成的日志,我们叫CrashLog,另一个是测试执行过程中打印的其他有效日志。
  (1)CrashLog记录
  CrashLog是软件出现闪退时最重要凭证,也是我们跟进问题原因的关键,在执行完一次测试之后,可以将手机端产生的CrashLog同步到PC上,看到有两种文件,一种以.log结尾的,另一种以.Crash结尾。
  其中.log结果的文件是以LowMemory开头,是由于内存问题引起的闪退时生成的日志。它主要记录了程序闪退时,系统内存的分配情况。如图4-8所示。
  图4-2 内存闪退日志
  内存引起的闪退不是应用程序主动的闪退,而是系统自发的强制关闭某一个程序。一般来说,低内存引起的原因有两个。一个是某一个程序在使用过程中,占用的系统内存过大,但是没有定数,1G内存的iPhone,当程序占用的系统内存超过200M时被系统强制关闭都很正常;另一个是如果程序在短时间内申请内存过大,也是没有定数。但是可以肯定的是,内存泄漏越少,内存占用越少,被系统强制退出的概率就越小。
  对于内存引起的闪退,不能直接从日志入手解决,内存闪退的日志也没有提供任何有效的信息可以跟进问题。要解决或是优化,只能从优化每一个小模块的内存占用做起,避免内存泄漏,Xcode里集成的Instruments工具集里面有很多内存检查的工具,可以帮助在开发过程中优化内存情况。
  另外一种闪退时记录的文件是.crash文件,以进程名称开头。这个是我们要关注的重点。在iOS系统中,刚生成的日志如图4-9所示。
  图4-3未解析的.crash文件
  可以看到,有许多函数库对应了一堆的十六进制数据,这些不是可读的。我们需要有对应应用程序的二进制文件(.app文件)以及符号文件(.dSYM文件),这些是在编辑过程中会生成的。有了这些文件,可以直接用苹果提供的symbolicatecrash工具将这些16进制数据转成对应的函数和其执行的对应行,如下代码所示:
  symbolicatecrash crashreport.crash myApp.appmy App.app.dSYM>>result.log
  这样解析后能看到最终的结果,如图4-10所示。
  图4-4已解析的.crash文件
  第二列中记录的是函数库名称,其中我们最关注的当然是以自己的应用命名的那部分,它一般是引起问题的根本所在,第4列是记录的执行的接口的名称,最后一列“+ 数字”记录是接口的某一行。有了这些信息,我们就可以很方便得知道应用在闪退之前最后执行的函数了。
  (2)过程中的log
  很多时候,从最后的堆栈还是看不出问题所在,这时就需要通过记录一些其他的信息,来帮助我们定位问题。还是以浏览器为举例,如果根据堆栈不能定位到问题,那么就需要在闪退之前记录下浏览器当前的一些状态。比如当前打开了哪些页面,打开了多少个窗口,每个窗口对应哪个页面,占的内存是多少等等,这样对于定位问题有比较大的帮助。当然,需要记录什么信息,需要根据产品以及出现的问题来定,可能需要长时间的摸索才知道什么样的信息才是有效的。
  有了这些测试的记录,相信会对我们定位问题有比较大的帮助,同时,这些随机测试的结果也是可以积累并对一个软件的稳定性作出评价的。但稳定性的随机测试本身就是有很大的随机性,这是他的特点,所以需要很长时间的测试才能有一个相对有说服力的结论。
  2.5流量测试方法
  某一个应用的流量是指该应用发起网络请求时所产生的数据量大小。所以通常都是通过网络数据包采集和分析得知一个应用的流量消耗。同时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查找)。
  rvictl -s divice_ID
  步骤3:在终端输入如下命令,开始抓取手机端网络数据包。
  sudo tcpdump–i rvi0 –n –s 0 –w dump.pcap tcp
  解释一下上面重要参数的含义:
  -i rvi0: 选择需要抓取的接口为rvi0(远程虚拟接口)
  -s 0 :抓取全部数据包
  -w dump.pcap:设置保存的文件名称
  tcp: 只抓取tcp的网络包
  此时已经生成dump.pcap文件,可以通过wireshark进行查看。在终端中按control+C,则停止抓包,在停止之前,所有操作产生的网络数据都会被存储在dump.pcap文件中。
  步骤4:为避免每次抓包都要建立不同的虚拟网络端口,在抓包结束后,要删掉本次申请的RVI这个虚拟网卡。
  rvictl -x divice_ID
  步骤5:计算流量。
  (2)越狱机器抓取流量
  越狱机器上抓数据包可以在手机端完成,可以在PC端完成,也可以在Mac端完成,比较的灵活了。下面介绍一种在PC上抓包方式,其他的方式大同小异。
  需要准备的软件:
  1)pc端:同步助手类的软件,putty,wireshark
  2)iOS端:network-cmds,OpenSSH,tcpdump
  操作方法:
  步骤1:iPhone用数据线连接PC。
  步骤2:PC端打开同步助手,在高级功能中点击打开SSH隧道,开启之后会显示连接的账号和密码及连接的地址。如图4-12所示。
  图4-6开启SSH隧道
  步骤3:打开putty,在Host Name中输入上面的连接地址,点击open按钮。
  步骤4:在打开的窗口中输入用户名,回车,再输入密码。用户名和密码就是上面的截图所示(确保手机root密码没有改过,如有改过则密码是修改之后的密码),输入完成后就会进入操作程序。
  步骤5:输入命令抓包wifi下流量:
  tcpdump -w x.pcap -i en0 -s 680
  回车开始抓包(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所示。这样可以确定某一次操作所花费的流量。但是,由于抓某一个设备的数据包会将这个设备的所有网络请求都抓下来,所以为了保证数据的准确性,一般会把后台的所有其他进程都关闭。
  图4-7通过wireshark计算流量

本文选自《腾讯iOS测试实践》第四章,本站经机械工业出版社和作者的授权。
版权声明:51Testing软件测试网获机械工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。

相关链接

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号