测试工程师之bug定位

转载自:https://blog.csdn.net/zhusongziye/article/details/78106449

身为测试工程师,总有一道绕不过去的坎就是定位bug,这其实是非常花费时间的。


也许有很多人不以为然,觉得无非就是发现bug后提交bug管理系统,描述操作步骤,预期结果和实际结果哪里不一致,然后继续测试。并不是说这样做的不对,只是说这样做的不够好,看似节约了测试时间,实则对于项目的进度没有起到应有的推动作用。


接着我就来具体分析一下吧:

  1. 如果是一个多人开发的系统,不能明确定位到这个bug是谁造成的,容易提交给错误的开发人员,于是bug会像皮球一样被开发踢来踢去,耽误开发解决bug的时间。

  2. 即便提交给对的开发,开发也未必能查到bug产生的原因和代码有问题的地方,因此不一定能修复bug,往往修改了自己认为可能有问题的地方,然后测试发现还有问题,继续发回给开发,开发继续查,来来回回耽误解决bug的时间。

  3. 再退一步来说,如果开发水平很高,没有1和2的问题,对于测试来说也很容易提交重复的bug,因为可能很多bug都是由于一个地方引起的,只是表现出问题不一样,但本质却是一样的,这样也是耽误了测试时间。


当然能遇到的远远不止以上3种情况,所以对于测试来说仅仅提交bug是不够的,无论对于测试自身的提高积累,还是对于项目进度推进都是非常重要的。


那么问题来了,要怎么样才能定位bug呢?虽然说一言难尽,还是想提供一些个人的思路和方法。


当bug出现时,一般来说分大致3种情况,

  1. 数据库层面的:可能少某个字段,或者字段值为空等等,这些可能在设计数据库时就埋下了错误的种子,导致程序调用数据库错误的数据产生bug,这一类问题不算普遍,但也是最容易忽视的一种情况,有时候从数据库入手定位bug说不定还能发现数据库的设计缺陷呢。

  2. 网络层面的:通常这种都是网络情况较差的时候产生的,比如手机的移动网络信号不好,又或是公司网络不稳定,导致js/css未加载完全或者请求超时等等,这种问题其实非程序bug造成的,可以不用提交bug,也不用让开发毫无头绪的去查代码的问题。当然如果可以的话也可以当优化建议提给开发,让他优化代码,比如压缩js/css,增加超时时间,超时后的重试机制。

  3. 代码层面的:普遍的bug基本都是代码有问题造成的,排除掉1和2剩下后就可以确定是程序bug了。对于了解网络架构的人来说,其实程序也分前端和后端的,一般对于界面显示有问题直接可以判断是前端的问题,比如系统兼容性,浏览器兼容性。

    而对于数据或者逻辑上的问题,则需要通过抓包工具来进行分析 :

    1)请求未返回数据,可能是client请求数据错误,可能是server端处理错误。

    2)请求返回错误的数据,那就是server端处理错误。

    3)请求返回正确的数据,那就是前端处理server端返回数据有错误


定位bug就像这样抽丝剥茧一层层排除,从而把最后剩下的可能性给找出来,说难其实也不难,但需要有足够的逻辑思维能力来推断,也需要足够的耐心去寻找bug的根源。


有些人觉得,定位修复BUG是开发做的事情。测试去干不是浪费时间吗?不要觉得这是浪费时间,把精力花在有用的点上总比花在和开发无意义的拉扯上好。而且定位出问题所在不但可以对开发更有说服力,也方便开发解决问题,开发能解决问题对于测试来说也能减少重复的没效果的验证过程。


身为测试工程师,总有一道绕不过去的坎就是定位bug,这其实是非常花费时间的。


也许有很多人不以为然,觉得无非就是发现bug后提交bug管理系统,描述操作步骤,预期结果和实际结果哪里不一致,然后继续测试。并不是说这样做的不对,只是说这样做的不够好,看似节约了测试时间,实则对于项目的进度没有起到应有的推动作用。


接着我就来具体分析一下吧:

  1. 如果是一个多人开发的系统,不能明确定位到这个bug是谁造成的,容易提交给错误的开发人员,于是bug会像皮球一样被开发踢来踢去,耽误开发解决bug的时间。

  2. 即便提交给对的开发,开发也未必能查到bug产生的原因和代码有问题的地方,因此不一定能修复bug,往往修改了自己认为可能有问题的地方,然后测试发现还有问题,继续发回给开发,开发继续查,来来回回耽误解决bug的时间。

  3. 再退一步来说,如果开发水平很高,没有1和2的问题,对于测试来说也很容易提交重复的bug,因为可能很多bug都是由于一个地方引起的,只是表现出问题不一样,但本质却是一样的,这样也是耽误了测试时间。


当然能遇到的远远不止以上3种情况,所以对于测试来说仅仅提交bug是不够的,无论对于测试自身的提高积累,还是对于项目进度推进都是非常重要的。


那么问题来了,要怎么样才能定位bug呢?虽然说一言难尽,还是想提供一些个人的思路和方法。


当bug出现时,一般来说分大致3种情况,

  1. 数据库层面的:可能少某个字段,或者字段值为空等等,这些可能在设计数据库时就埋下了错误的种子,导致程序调用数据库错误的数据产生bug,这一类问题不算普遍,但也是最容易忽视的一种情况,有时候从数据库入手定位bug说不定还能发现数据库的设计缺陷呢。

  2. 网络层面的:通常这种都是网络情况较差的时候产生的,比如手机的移动网络信号不好,又或是公司网络不稳定,导致js/css未加载完全或者请求超时等等,这种问题其实非程序bug造成的,可以不用提交bug,也不用让开发毫无头绪的去查代码的问题。当然如果可以的话也可以当优化建议提给开发,让他优化代码,比如压缩js/css,增加超时时间,超时后的重试机制。

  3. 代码层面的:普遍的bug基本都是代码有问题造成的,排除掉1和2剩下后就可以确定是程序bug了。对于了解网络架构的人来说,其实程序也分前端和后端的,一般对于界面显示有问题直接可以判断是前端的问题,比如系统兼容性,浏览器兼容性。

    而对于数据或者逻辑上的问题,则需要通过抓包工具来进行分析 :

    1)请求未返回数据,可能是client请求数据错误,可能是server端处理错误。

    2)请求返回错误的数据,那就是server端处理错误。

    3)请求返回正确的数据,那就是前端处理server端返回数据有错误


定位bug就像这样抽丝剥茧一层层排除,从而把最后剩下的可能性给找出来,说难其实也不难,但需要有足够的逻辑思维能力来推断,也需要足够的耐心去寻找bug的根源。


有些人觉得,定位修复BUG是开发做的事情。测试去干不是浪费时间吗?不要觉得这是浪费时间,把精力花在有用的点上总比花在和开发无意义的拉扯上好。而且定位出问题所在不但可以对开发更有说服力,也方便开发解决问题,开发能解决问题对于测试来说也能减少重复的没效果的验证过程。


猜你喜欢

转载自blog.csdn.net/loner_fang/article/details/80671021