安卓移动App已经从首先关心产品的需求是否能更好地满足用户需要,而容忍偶尔的崩溃和卡顿等质量因素,逐渐转变为质量和功能并重,不让用户因产品性能和体验方面的不佳,而选择类似的竞争产品。
很多产品顺应这种趋势,更为关心产品的质量。测试和技术认清这种趋势,从最初的功能测试是否达标,界面自动化测试、接口自动化测试是否通过,发展到当前的也重视各种专项测试。越大的公司,这种发展趋势越是明显,从一个或几个人从事某类测试,到由专门的团队并行完成不同类型测试;但对于小的公司,由于人员时间和能力限制,很多事情都要一件件的来,做好一项再做一项;甚至大部分小公司,还未能真正开始任何一项自动化方面的测试。
专项测试早已进入我们的视野,并且偶尔也会做些小功能的专项,随着我们软件越来越成熟和稳定,目前有必要,也有时间和精力来开展更为专业的专项测试。
最近了解腾讯的开源工具GT时,恰好发现腾讯的TMQ专项测试团队编写了一本专项测试的书。读完发现,该书无论对于专项性能的测试,还是问题定位,都提出了自己清晰的思路,感觉无论对测试,还是对开发,读一下该书都会有所收获。尤其对测试,读一遍应该是不够的,需要在读的时候,也进行测试和定位方面的尝试,才能把里面的经验用好。
GT软件可以从github中下载,使用该软件可以测试App的内存、CPU、时间片、流畅度、耗电量、网络流量等,并可以输出单项的趋势图及原始数据。GT工具的界面如下:
使用GT工具测试的某App的两次自动化用例运行的内存数据如下,从图中看,可能存在内存泄漏:
该书对于内存泄漏的分析,主要是在第一章进行的。该章从内存的主要组成索引,到主要的内存工具方法,如使用Android Studio/Memory Monitor观察Dalvik内存、dumpsys meminfo观察整体内存、smaps观察整体内存的详细组成、Eclipse Memory Analyzer详细分析Dalvik内存。然后介绍主要的内存测试经验,如MAT是探索Java堆并发现问题的好帮手,能发现常见的图片和大数组问题,不过测试内存碎片则不好用;要测试非Dalvik部分,需要了解Linux的进程和内容原理、内存共享机制、熟悉常用命令行命令;内存的最小单位通常是4KB,这个限制往往引起各种碎片问题;碎片不仅仅是Dalvik问题,也包含文件的mmap也可能产生碎片。有了这些测试及分析经验,该测试团队也提供了内存性能优化的方法和建议。
除内存外,其针对手机耗电进行的电量测试、针对流畅度而进行的FPS及改进的SM测试、针对上网流量进行的网络优化、针对减小安装包而进行的安装包瘦身实验都有自己的丰富经验。
该书的编写思路基本都是问题提出->测试->问题分析和定位->优化和监控的思路,并给出了实际的案例。最后的GT工具,可以提供大部分的测试,并且已经开源,测试和开发可以使用该工具进行测试,以及在此基础上进行自己需要的定制及进行手工性能测试和自动化测试性能。
所以,推荐购买并阅读该书。阅读仅仅是开始,根据自己公司的需要,在腾讯专项团队测试经验的基础上,使用并提高某些专项方面的测试及App性能改进才是根本。
附本书目录
序
前言
第1章 越用越卡为哪般—降低待机内存1
1.1新手入门1
1.2规范测试流程及常见等问题6
1.2.1测试流程7
1.2.2Dalvik Heap的常见问题8
1.2.3示例9
1.2.4新的问题10
1.3新问题的进一步挖掘12
1.3.1Dalvik Heap内部机制13
1.3.2问题所在15
1.3.3优化Dalvik内存碎片17
1.4进阶:内存原理19
1.4.1从物理内存到应用20
1.4.2smaps 22
1.4.3zygote共享内存机制25
1.4.4多进程应用25
1.5案例:优化dex相关内存26
1.5.1从class对象说起27
1.5.2一个类的内存消耗28
1.5.3dex mmap 29
1.5.4dex文件优化30
1.6本章小结33
第2章 手机发烫是为何—降低耗电量35
2.1电量测试方法36
2.1.1硬件测试37
2.1.2软件测试42
2.2电量优化方法55
2.2.1优化方法一:CPU时间片55
2.2.2优化方法二:wake lock 55
2.2.3优化方法三:传感器56
2.2.4优化方法四:云省电策略56
2.3本章小结56
第3章 怎样才能如丝般顺滑—流畅度评测57
3.1流畅度评测方法介绍57
3.2流畅度59
3.3真的?用SM就够了吗65
3.4流畅度优化案例69
3.4.1通过SM评估App的流畅度70
3.4.2从最简单的UI层优化入手71
3.4.3Lint扫描,发现代码中的流畅度性能问题79
3.4.4优化App的逻辑层84
3.4.5优化App的IO层88
3.4.6流畅度优化经验89
3.5本章小结91
第4章 坑爹的路线如何破—导航评测93
4.1路线规划评测93
4.1.1路测,人工评测,还是自动化94
4.1.2选择测试用例95
4.1.3寻找bad case的判断准则96
4.1.4判断路线是否相似97
4.1.5自动化评测方案—无路况版97
4.1.6自动化评测方案—路况版101
4.1.7特殊情况104
4.1.8展望106
4.2播报诱导评测106
4.2.1播报诱导常用测试方法:路测106
4.2.2室内评测是否能代替路测107
4.2.3耳听为虚,眼见为实109
4.2.4找到更多不好的用例110
4.2.5评测平台的建成113
4.2.6评测用例的优化113
4.2.7让评测更快,更好,更准116
4.3本章小结117
第5章 修一条时刻畅通的高速路—网络优化119
5.1上传速度和成功率的优化119
5.1.1任务背景及方案雏形120
5.1.2鱼翅的要点124
5.1.3探索过程中的经验与思考131
5.2流量优化135
5.2.1摸清现状136
5.2.2优化精简148
5.2.3持续监控153
5.2.4优化过程中的经验与思考153
5.3本章小结154
第6章 苗条才是美—应用安装包瘦身155
6.1瘦身的方向选择155
6.2案例:瘦成一道闪电156
6.2.1代码部分157
6.2.2资源部分168
6.2.3极限压缩zip 175
6.3本章小结181
第7章 工欲善其事必先利其器—打造趁手的测试工具GT 183
7.1初心184
7.1.1选择恰当的时机184
7.1.2需要解决的问题185
7.1.3决定工具的形态186
7.2在实践中发挥作用186
7.2.1CPU 186
7.2.2Jiffies 188
7.2.3电量189
7.2.4流畅度和FPS 191
7.2.5内存191
7.2.6流量192
7.3工具的获取193
7.4GT使用193
7.4.1GT在场测中194
7.4.2GT在自动化测试中203
7.5本章小结205