如何快速定位、分析、解决非Crash的BUG

发表于:2018-1-15 13:27

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

 作者:落影loyinglin    来源:简书

  Bug描述:
  动画与正常有异,最明显是出现这个情况:
  上图的三角形区域应该是如下的区域:
  功能实现:
  猜测是用UIView的Block动画,或者CoreAnimation实现。
  Bug定位:
  Bug不限于普通app,在系统app也会出现这种异常,表现形式为:页面切换卡顿、动画执行异常。
  Debug调试开发中发现,动画的animationBlock和completionBlock的调用时序是正常的。以头像缩小的动画为例,以下是正常的动画时序:
  正常的动画时序
  从动画的异常表现上猜测,原因是动画延迟执行。
  尝试在completionBlock中改变背景颜色,可以看出动画还在执行时,背景颜色发生了变化;
  尝试在动画开始改变视图颜色,可以发现动画执行存在明显的延迟;
  可以确定:当发生这个错误之后,动画的执行实现会推迟,导致completionBlock调用的时候动画仍在执行,产生异常的现象。
  用下面的时序图来描述:在第10s提交一个0.2s的动画,动画执行完毕的时间是10.5s左右(正常应该是10.2s),动画延迟时间在0.2~0.4s区间。
  异常的动画时序
  通过KVO观察layer的frame和presentationLayer的frame,整个动画过程的调用也是正常。
  在模型树=>呈现树=>渲染树这条链路上,开发者通过代码层面上只能获取到前两个环境的数据,至此问题停止深入。
  只能把Bug总结为:iOS 11系统的手机在某些情况下会发生系统错误,导致整个手机的动画机制出现异常。
  Bug出现之后,无法通过代码修复(iOS系统错误),只能重启手机。
  Bug解决:
  提示用户重启手机(可暂时修复);
  向苹果提交Bug。
  小结:
  对于某些所有APP都存在的异常现象,归类为系统级Bug,可以在developer.apple.com的Bug Reporter提交Bug。
  猜测、定位到问题所在之后,可以尝试修复,但是此Bug不在此列,不建议花费过多精力。
  iOS 11 下拉刷新异常问题
  功能背景:
  在某些页面中,存在下拉刷新/上拉加载更多的功能。
  下拉刷新前
  Bug描述:
  iOS 11的手机,在下拉刷新之后,会一直处于“加载中”的状态。
  
下拉刷新后
  功能实现:
  通过KVO监听tableView的属性,并判断具体的操作,最终通过自定义的dragDelegate回调。
  Bug定位:
  通过模拟器复现,发现iOS 10的模拟器正常,iOS 11的模拟器存在此问题。
  在后台数据返回的接口处断点,确定数据返回是否正常,发现iOS 11的模拟器根本没有返回数据。
  据此回溯定位:后台数据没有返回=>客户端没发协议=>下拉刷新没有回调。
  再从UIScrollView的delegate回调入手,单步调试定位到问题:
  
iOS 11新增属性
  UITableView iOS 11新增了一个属性:dragDelegate,与开发者自定义的dragDelegate冲突!
  Bug解决:
  修改属性名,同时注意以后在给系统的类添加属性时,需要加上自己的方法名前缀,防止与系统冲突。
  小结:
  正向和逆向的链式分析方式是最常见的Bug定位方法;
  对于实在无法定位时,再使用二分注释的方法。
  总结
  iOS 11更新之后出现的问题比以往的版本更多,要求开发者需要投入更多的精力去适配,甚至会存在一些开发者无法修复的Bug。为了iPhone X全新的交互体验,iOS 11做了非常大的改动,之前的beta版本问题更多。
  善用Xcode的调试工作,勤看具体API的头文件,遇到问题仔细分析。
  无需对Bug产生厌恶和恐惧,但也不要沉浸在单步调试和盲目尝试的快感中。充分利用宝贵的时间,减少无用的步骤,觉察自己解决Bug过程中的不足,尽量从解决问题中习得新的知识和方法。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号