宇宙中心接任务
上午10:05
五道口漫咖啡,Jarod摆弄着新淘来的Nexus5手机,时而饮一口桌上的焦糖拿铁,间或偷眼瞄一下邻桌的长腿妹子。
上午10:30
Allison如约而至,开始为Jarod介绍本次任务,并演示本次任务的目标:对
Android应用“探路者”进行性能评估。“探路者”是Allison所在公司的新研发的产品,既有给用户展示的动态界面,也会常驻
手机后台。其核心业务模式是将位置信息上报云端,结合云端数据进行复杂的计算后,将计算结果返回给手机。“除了CPU的消耗,还有流量的消耗和GPS模块的使用”,Jarod默默记下。
由于“探路者”是Allison本次创业的关键,不容有失,但创业公司资源紧张,团队中并没有专门的终端
测试专家,产品临近发布,心里不免惴惴,于是便有了这次与Jarod的合作。
Jarod现在是一名自由职业者,曾任职于世界知名IT企业的安全产品部门,有着丰富的软硬件测试经验和黑客经验,如今五子登科,便早早主动退休,过起了养鱼遛鸟的
生活。闲来无事,Jarod也会偶尔从熟人圈子接些私活,与人方便,也顺便瞒着夫人赚些零花钱,以维护经济自由。
上午11:15
Allison交接了委托任务后先行离去,Jarod先简单浏览了“探路者”的界面,把玩一番后,又开启了核心的“随行”功能,“随行”功能是持续型功能,要在运动中才能看出效果,不过静止的状态也是要保证正常处理的。虽然Allison说过“探路者”已经通过了
功能测试和用户体验,基本功能是没问题的,但Jarod作为一个资深的测试者,怀疑一切是职业的第一信条,质量如何,一定要亲身试过才知道。
上午11:30
Jarod判定“探路者”的基本功能正常,于是对“探路者”进行启动状态的基本性能评估。Jarod先将“探路者”退出,然后从测试工具GT中启动“探路者”,启动完成后回到GT界面查看,“探路者”的CPU占用在0%-2%波动,结合手机默认的调频策略判断比较正常,jiffes(CPU时间片)值累积在400多,内存PSS值稳定在36M,上行流量和下行流量都不到1K,无异常,数据存档。再启动电流监控观察,1分钟后平均电流是220mA,从数据变化曲线上看没有连续的峰值和规律性波动,待后面长时间测试时综合多项指标再分析吧。回到“探路者”界面,从GT的悬浮框中观察,CPU占用在0%-5%波动,PSS值和上下行流量也没有异常的增长,OK。
一人一机一GT
上午11:50
Jarod完成“探路者”的启动性能验证,把采集的数据存档备案后,开始场测(到产品的实际使用环境中测试)前的准备:清理了“探路者”的缓存,给手机充满电并固化了亮度等设置,规划好场测路线,顺便吃午饭。40分钟后,Jarod喝完最后一杯柠檬水,只带上Nexus5,便奔香山去了。作为独行的极客,Jarod追求极致简约:MBA,mini机箱,无线键鼠,网线自然是见不得的,所以当Jarod遇到“GT随身调”时,一种幸福感无可言状,因为GT可以独立完成手机的大部分性能指标的采集,以后场测时他不必再背着笔记本,不必再带着电流计了。Jarod出门前计算了一下,本次任务的实测和数据采集,1人1机1GT足矣,充电宝也不带了。
下午12:45
Jarod上了辆直达香山的311路,找了个座位坐下,先打开了GT的“月光宝盒”,再启动“探路者”并切换到 “随行”模式,接着使用GT对其进行性能监控,然后在GT的悬浮框中对CPU、PSS、流量值即时观察。行进中,PSS逐渐跃升到90M稳定下来,观察一会没有明显的内存泄露迹象,OK。但是“探路者”的CPU占用持续在25%~40%,这对主流的4核手机已经算是高消耗了。Jarod等了3分钟看到CPU没有下降的趋势,于是进入GT界面,发现这几分钟的平均电流达到660mA。Jarod心里一紧,对Nexus5的2100mAh的电池来说,持续运行在“随行”模式下的手机只能支撑3个小时,与“随行”的目标续航5小时有不小差距。
公交上忙碌的Jarod
Jarod立即观察流量,10分钟的下行流量有110K,在没抓包的情况看不出明显的疑点。Jarod思考了一下,对着“随行”界面上几个按钮试了试,其中有个点下去,屏幕上弹出“停止实时路况”的提示,再看平均电流,这回降到500mA。“先反馈上去,看看这块逻辑能有多大的优化空间吧”。Jarod想。“即使开启实时路况的耗电优化到550mA,续航时间能达到4小时,离目标还差1小时呢”。Jarod又开始盯着手机观察“嗯,画面的动画倒是挺顺滑的……咦?好像忽略了什么……会不会过于顺滑了?”这个想法闪念而出,Jarod立即切到GT的界面,激活FPS(帧率)的监测,回到“随行”界面观察。从GT的悬浮框中,Jarod看到FPS的数字变换着:59,60,60,58,60,59,59,59……“果然如此,Allison他们并没有给动画做帧率上的限制,所以Android系统会尽可能的刷新UI画面,达到上限60帧”。其实,从Jarod的经验看,“随行”功能并不需要这么高的帧率,即使把动画刷新降低到30帧,普通用户也不会感觉到有卡顿的。而降低帧率,最直接的好处就是减少耗电。
Jarod立即记下:“建议1:在不影响动画效果下降帧率。建议2:优化‘实时路况’的算法性能。”
Jarod又持续的对“随行”的性能数据进行了10分钟的采集,确认没有新的发现后,即保存了数据,进行第二个核心功能“潜行”的测试。“潜行”是“探路者”退到后台或手机灭屏后,“探路者”仍然以语音提示的方式对用户提供服务的模式。
下午13:25
Jarod开始“潜行”模式的测试,还是那些监测指标。顺利的“潜行”了10分钟后,Jarod看到没有明显异常,只是产生了140K的下行流量,比“随行”模式还要多一些,而上行流量也达到70K,。虽然流量一般会根据环境的复杂变化出现较大波动,不过Jarod谨慎起见,还是决定上山测试“潜行”的时候,用GT抓个包回去分析一下。
登顶香炉峰
下午13:55
Jarod到达香山,启动抓包后,开始测试爬山中的“潜行”。五月的香山风景迤逦,凉风习习,Jarod工作兼怡情,畅快之余,不免健步如飞,四刻钟后即抵达香炉峰。掏出手机,点亮屏幕一看,顿时傻眼,原来“探路者”不知何时已弃主crash于宝刹云间去了。“刚刚爬上香炉峰的时候,‘探路者’还语音提醒了啊……”,回想到这里,Jarod心中有所明悟。熟练的保存了抓包文件后,Jarod切换到GT的Logcat查看界面,立即把手机缓存的Logcat日志保存下来,然后开始回溯。所幸,在3分钟前的位置发现了“探路者”crash的踪迹。“有迹可循的crash都不会太难解决,又多了笔收获”,Jarod心中盘算。
下午15:10
Jarod看到Nexus5的电量已不足30%了,便关闭了早先在GT上打开的“月光宝盒”准备下山。其实“月光宝盒”是一个记录用户移动轨迹的功能,利用它,Jarod完整的记录了这次测试过程中的位置变化,后续若有回归测试,在Android手机模拟GPS的模式下回放录制好的移动轨迹,就不必再跑一趟香山了。
下午16:15
Jarod赶在大塞车之前回到家中,连上电脑分析抓包后,连同一天的测试数据一起整理了报告给Allison,Allison立即回复并预约了3天后进行回归测试,Jarod表示接受挑战。
下午16:30
算算时间孩子该放学,妻子也该串门回来,Jarod摇身一变回复了本职,开始准备一家3口的晚餐。