一、截包工具
在移动应用测试上,截包是一个必备的技能。凡是跟网络请求有关的测试,基本上都需要使用到截包工具截包进行分析。比如第一期春哥专栏说到的下载劫持问题(),就是通过截包分析来确认的。 对PC软件比较了解的同学都知道,PC端有一个鼎鼎大名的截包软件叫Wireshark。那么在Android端是否也有这个软件呢?很遗憾,暂时没见到有人将这个软件移植到Android端。但是我们知道,Wireshark其实是封装了tcpdump来实现截包的。因为Android底层是linux,于是有人将linux上的tcpdump移植到了Android平台上()。这也是我们内部的测试工程师常用的截包工具之一。不过它是一个在adb shell命令行下才能使用的工具,所以并不适合普通用户使用。这里给大家介绍一个腾讯测试工具组开发的软件测试包——GT(),它底层集成了tcpdump,用户可以通过GUI操作来实现截包。 使用GT截包的方法很简单,打开程序,点击下边栏最右的“插件”-“抓包”打开截包界面。然后点击“开始”。因为需要ROOT权限才能使用tcpdump截包,所以此时会弹出权限申请,给予ROOT权限后就开始截包了。正常截包,可以看到下面Got的数字是会不断变大的。如果Got一直为0,则说明未获取到ROOT权限,或出现异常。开始正常截包后,home键将GT切到后台,打开被测程序,进行问题复现。当问题被复现后,回到GT,点击结束,则可生成pcap格式的网络日志包(截图演示如后)。这个包保存在/sdcard/GT/tcpdump/Capture目录下。给我们反馈一些网络劫持或白屏等与网络有关的问题,可以使用此方法,把网络日志包附上,方便我们分析。
如果大家想看一下这个网络日志包的内容,要怎样操作呢?可以把这个pcap文件拷贝到电脑上,下载并安装wireshark软件(),然后双击就可以打开这个pcap文件了。至于如何分析网络日志,不同的问题采用的分析方法和过滤规则不一样,由于篇幅有限,就不在这里展开说了。到网上搜索,有很多教程。二、电量监控软件 在我们内部,做电量测试,是有专业的电量测试仪的。但那家伙太贵了,要上万块钱。而且异常的耗电是跟场景密切相关,重点在于找到异常消耗的路径 ,而不在于仪器的价格。而在监测异常耗电场景方面,软件比仪器好使。以下这几款我用的电量检测应用和方法,部分是论坛友友推荐给我的,在此感谢一下,并分享给大家。 有些性能相关的问题,可能最终会在使用上表现出来。比如耗电问题,最终表现出来的现象可能是手机发烫严重和手机需要频繁充电。但有时,人的感觉是不准的,而且每个人的感觉都不一样。所以大家给我反馈“感觉新版本更耗电了”“使用一会就很烫”“UC耗的电比屏幕显示还多”等问题时,我们难以判断这到底是不是UC的bug,更难判断是不是新版UC的bug。如果大家在报告问题的同时,能附上耗电情况截图和使用场景(比如做了些什么操作,大概用了多长时间等),我们就能更快地判断和验证问题。方法1 查看系统耗电排行榜 这个应该是最简单的一个方法。但是不同的手机ROM,耗电详情显示的内容会有不同,算法也不完全一样。在我测试过的手机中,Nexus系列手机原生的Android系统的耗电显示应该是最为客观和详细的。一般来说,应用的高耗电主要体现在几个地方:1、CPU占用;2、写磁盘和网络连接;3、阻止系统休眠;4、GPS。所以出现异常耗电的时候,可以看一下耗电详情里哪个地方有异常。常见的异常有保持唤醒时间过长,后台占用CPU时间过长和GPS占用时间过长等。 方法2 使用LBE电池管理功能 LBE是一款安全软件,但它也带有电池管理模块。虽然它的数据来源于系统的batterystats.bin,但和系统的耗电排行榜相比,会多带一些额外的信息。比如之前有用户就使用LBE的电池监控发现某个版本的UC有一直占用着某个传感器不释放的问题。不过LBE只能看到是传感器耗电,还不能准确确定是哪个传感器耗电。 方法3 使用3C toolbox pro 3C toolbox pro在下载了电池管理模块,并给予了root权限后,具体有强大的电池管理功能,可以看到具体哪个进程、服务或传感器耗电。这给跟进问题带来了极大的便利。 方法4 使用BetterBatteryStats BetterBatteryStats是一个强大的第三方电池管理应用,可以看到开机后或拔掉电源后,手机电量使用的详细情况。例如查看Wakelocks分类,可以看出哪些应用在系统唤醒上消耗了最多电量。 三、内存测试 能够查看手机内存占用的应用有很多,但我们发现,即使是同一时间测试,不同的内存管理应用看到的同一个软件占用的内存都有很大的差别。为什么呢?因为Android应用大部分都是运行在最上层(应用层),它的数据都自于系统接口。而使用的系统接口不同,获取到的数据也不一样。比如内存,我们经常说的有独立内存和共享内存,两者区别很大。 我们平时在分析内存占用或内存泄露问题时,一般会在adb下使用一些指令来获取程序占用内存的情况。比如dump sysmeminfo或procrank都提供了详细的信息。不过这两个指令并不是每个手机都有提供。所以这里介绍top和ps这两指令给大家使用。top和ps是linux上常用的两个查看进程和内存信息的指令。因为Android是基本linux开发而来的,所以这两个指令在一般的Android系统上都得以保留。使用方法是: 1、安装Android SDK(); 2、将手机用USB线连接到电脑; 3、电脑运行上输入“cmd”然后回车,调出命令行操作界面; 4、输入“top”或“ps”就可以看到手机上所有存活的进程的内存、CPU的占用情况。(为了方便查看,我们可以在命令后加上管道再prep一下,比如“top |grep UC”就可以只看带有“UC”的进程。不过grep不是每个系统都有的) 四、其它小工具 其它常见的测试工具还有卡顿测试、流量测试等,在这些测试上面也有很多工具,但我们使用得比较少。比如卡顿测试,我们可以在代码里注入测试代码进行测试;流量测试,我们可以使用wireshark代替换。如果有好用的第三方工具,希望达人和大牛们能来分享一下! 除了有针对性的测试工具,我们在工作的过程中还会使用到各种各样的小工具。比如有友友会说上面的top和ps命令要连接到电脑才能使用,很麻烦。有没有方便的方法呢?当然也是有的,手机端也有一些命令行工具。我自己比较喜欢的有“超级终端”这个工具。在上面能够完成电脑CMD上的所有操作。另外,有时应用出问题了,想重新安装一下,正常来说需要“卸载-重新下载-重新安装”,很麻烦。其它在“超级终端”下,使用“pm clear”命令清除一下就好了(使用方法:pm clear 程序包名)。如下是重置(重置应用需要root权限,所以要先执行su,再执行pm clear): 我们平时测试工作过程中,使用过的小工具还有很多很多,但我一时又想不起哪些是对大家有用的,或者大家跟贴提问吧,大家再沟通沟通。不过最希望的还是大家一起跟贴分享。