【背景】
日常查看小组成员的日报的时候发现有如下一段文字:XX组件中发现多处主线程读收文件,与开发XXX沟通后,开发表示这是由于新组件替换导致线程管理出错,已经在跟进修复中,无需再提Bug单了。
【背景的扩展】
然后我把这段话在IM里发出来问我们的组员,碰到这个情况下会出现什么后果。大家如是回答
L: 无需提单,这很严重的
X: 那就问他要链接看看吧,而且是在跟进中, 跟进中 和 没跟进 都属于 未解决,除非已经在最新checkin中修复了
J: 如果类似的事情没有提单,开发说不需要提单,这时和开发解释一下我们需要mark一下,开发也是可以理解的。不用不好意思和开发说。
M:发现的问题是一定要提单,如果提单重复了,可以把重复单合并,但是如果最后没有单,那就很尴尬了。。。
C:他说在跟进 我怎么知道是不是在忽悠我呢 什么时候解决
K:不提单,感觉开发也不会立刻重视该问题,快速修改问题的驱动力也会不足。。。
【自己开了下脑洞】
今年4月份的时候,本人的脚因为感染发炎。看过几个医生,用了好多种药才好。因为亲身经历了这个事,才发现病例对病人太重要。
事情是这样的,当本人发现脚发炎的时候,去看了医生,用了3天药以后,不知道是因为鞋子不透气还是药的问题,脚肿得跟个熊掌似的。当时心里是崩溃的,就赶紧去了医院,刚好门诊下班了,就去看急诊。结果急诊的医生看了看我的脚,收了我的挂号单,就让我自己去买个典酒来涂。 没有任何文本样式的诊断被记录下来。就这样我就回去自己涂典酒了,涂了一天以后,脚背血肉模糊了。再去看医生(这里看的是门诊),医生才说这个是因为第一次来看的时候,开的那个药膏过敏。
这个事
对于病人的我来说,因为看急诊那次草草了事,没有引起重视,导致本来一个很简单的事恶化了,前前后后耽误了我一个月的时间。
对于急症科的医生来说,因为他没有任何的记录,如果我要去追究,也和他没有关系(这到是一个不错的免责的办法)。但是对于他自己的技能的精进,真心没有任何好处。
对于这个医院来说,总体给人的感觉是,起码我不会推荐朋友去这个医院看病了。
【回来说说测试】
记得2015年年初的时候,有这么一个案例:有用户反馈所在相册有大量的图片的情况下,手Q打开图片选择器好卡,反到微信很快。
我们开始了竞品测试第一轮:
测试环境:iOS 8.1.2:iPhone 5c � 手Q和微信均为2015年年初的Appstore版本
测试方法: 通过hook,计算从点击图片选择按钮到 图片选择器页面viewDidAppear函数执行完成(也就是相册图片加载完成)的时间,(设置微信默认进入相机胶卷相册页面)
测试图片说明:测试图片均为手工导入的照片,大小在1M以内,平均大小300K左右,分别测试了1000张,3000张,和5000张的情况
测试结果:
首次加载耗时(首次加载是指每次测试前都杀进程重启)
第一轮竞品测试结果提交团队后,初步的诊断结果是: iOS8 有新的相册的接口,手Q未使用,故推测是此原因导致手Q打开相册的速度比微信慢。接下来开发同学排了个技术优化需求,手Q调用iOS8新接口。
是这样么?这里有两个疑点解释不了
一:如果是相册调用的接口的问题,那也就是说iOS7上手Q与微信打开速度应该是持平的
二:首次打开的速度有这么个差距,那非首次呢?
带着上面两个问题,我们开始了第二轮竞品测试,测试数据如下:
iOS7系统上,手Q的相册打开速度比微信快4倍
iOS8,非首次打开耗时,手Q比微信快。
第二轮竞品测试结果提交团队后,诊断结果是:手Q做了缓存,加载相册整体比微信快,而且图片越多越明显. 那也就是说iOS8的新相册访问接口对首次打开的速度有较大提升?与此同时,我们的竞品测试报告转给微信团队后,他们立即做了优化。我们得知后
做了第三轮的竞品测试,测试数据如下:
iOS6的iPhone4s上首次加载,微信耗时优化到了0.54秒(还记得之前微信在iOS7,IPhone5C上的首次打开耗时是16秒么?)手Q耗时是微信的4.8倍
所以觉得这应该不是iOS新老接口的问题,应该有别的原因。
通过hook 相关函数发现
一:微信只扫描37张,就展示图片选择器的界面(viewDidAppear),之后等用户向下滑动看更多的照片,才继续扫描;所以微信才能达到0.5秒加载相册选择页。而手Q是扫描完所有图片才展示,所以加载比微信慢;
二:当照片为5000张的时候,手Q调用某个函数用来查询资源类型次数达到7000+多次,超过照片张数
最后,敲定优化方案(优化手Q的展示逻辑,,去掉枚举相册相片过程中,对相片资源的属性频繁的访问和设置,更合理的缓存,资源的枚举过程从主线抽离到子线程,优化reload时机,去掉冗余的逻辑与一些无意义的reload操作)
最终的优化效果
案例讲完了,来个总结吧,如果当时我们出的第一轮数据给到项目组后,开发认为是手Q的接口调用没有与时俱进。再加一句,已经在跟进修复中,无需再提Bug单,我改个接口就好了。那这里的结果是什么?
网友评论