定位bug

软件测试阶段:单元测试,集成测试,系统测试,验收测试

测试人员参与的软件测试阶段一般来说只有集成测试和系统测试阶段。集成测试阶段主要测试的是接口;系统测试阶段主要是功能测试,兼容性测试等,涉及到定位bug的主要还是功能测试。

 

一、定位bug的原因

1、可以准确地知道,这个bug是前端的bug还是后端的bug

2、通过定位bug准确地分析bug造成的原因,可以减少开发的工作量,提高整个团队的工作效率

3、通过bug的深入了解,可以更加清楚软件的实现原理,方便于今后的提升

4、为之后成为测试开发,全栈做准备

二、什么时候需要去定位bug

当发现了bug之后才需要去定位bug

三、接口测试(后端bug)

明确一点,接口测试发现的bug100%全部都是后端的bug

首先做接口测试时一定要会看状态码,通过状态码来定位bug

1、200:接口200主要分为以下3种情况

①  查询数据类型的接口,返回的数据和数据库中的数据不匹配

  • 出现原因:SQL语句写错了
  • 提bug:提bug的时候可以把正确的SQL语句写出来告诉开发

②  操作功能型的接口,比如新增、修改、删除等,返回的结果不正确

  • 出现原因:代码的逻辑判断不正确
  • 场景再现:比如赞赞羊下架这个功能,明明操作是对的,但是系统一直提示任务不存在        
  • 提bug:我觉得应该是这个接口的逻辑判断没有写正确,请仔细检查

注意:下架功能不是删除,是修改,现在所有的软件公司,几乎都不会在代码里写delete语句(即使我们在页面上删除了什么东西,在数据库里看依然是存在的,通常大家都是把它和别的表关联起来,比如通过状态status=0为下架)——逻辑删除

delete语句是物理删除,它会把数据从数据库里删除

③  输入的数据不符合要求,但是操作成功了

  • 出现原因:开发没有做数据校验
  • 场景再现:明明需求上要求了昵称只能输入10个字,但是我输入15个字也能成功;又如:赞赞羊提交任务发表任务的时候,截止的时间可以选择以前的时间;再如:电话号码输123456都没问题
  • 提bug:请仔细检查输入数据的校验问题,请控制每一个字段的格式

2、40*

  • 出现原因:当出现了40*开头的代码,不是bug,是我们自己操作的问题

3、50*

  • 出现原因:当状态码为500,100%是bug,并且100%是开发的代码写的不正确,出现了运行错误,导致的
  • 查bug思路:去看日志,找到bug出现的原因,可以详细的定位到开发哪个文件哪行代码出错了

                        接口测试测得是后端,后端在Linux上运行,所以要去Linux上查日志(找到项目log文件夹下的debug.log文件)

  • 提bug:将错误日志截图出来,告诉开发是哪里的问题

一个开发写的代码经常报500错误的话,只能说明这个开发太菜了

四、功能测试(前后端都可能有bug)

明确一点,在系统测试阶段做功能测试的时候,发现的bug可能是前端的bug,也可能是后端的bug,首先做的第一件事就是去区分到底是前端得bug还是后端的bug,通过现在测试的功能是否使用接口来判断,如果和接口无关,百分百是前端的问题,和接口有关可能是前端的bug,也可能是后端的bug

1、判断一个功能是否和接口有关

通过抓包的方式来判断,去检查在操作的时候有没有发送请求(调用接口),如果没有调用接口,那么就和接口无关;如果有调用接口,那么就和接口有关(在fiddler或者网站开发者工具上看的很直白,没反应就是没调用,反之调用),例如:输入字数问题,在前端做数据校验,如果超出了字数,就不让它发送请求(不调用接口),直接在页面弹窗提示超过字数——和接口无关;字数满足条件才调用接口——和接口有关了。

抓包:对于网站来说,不需要用fiddler,直接打开网站的开发者工具,手机用fiddler抓包,小程序也可以通过fiddler抓包

面试题:你抓包是干什么,你为什么需要抓包?在做系统测试的功能测试阶段,通过抓包的方式,去检查在操作的时候有没有发送请求(调用接口),如果没有调用接口,那么就和接口无关,如果有调用接口,那么就和接口有关,和接口有关的时候,抓包可以帮组我们查看前端的传入数据,判断是否是前端的问题,或者是否是前端的问题导致了后端也出了问题,通过抓包可以帮我们定位bug提供一个思路。

2、和接口有关(前后端都可能有bug)

首先明确,可能是前端的bug,也可能是后端的bug,和接口有关的bug就需要借助状态码并抓包查看bug了。

①  200

假设前提是接口已经测试OK,那么是前端的问题,如果接口没做测试,那么请参考前面的接口测试状态码为200时候的场景定位bug

若此时接口测试已经测试完毕,出现bug可能是以下两种情况:

a、数据没有在正确的位置显示

  • 场景再现:数据错乱,没有对应到具体的位置,就比如说状态下边的停用按钮,接口是200,应该在状态下边显示的,结果它跑去了别的地方显示,没有按照正确的位置显示,又例如停用状态status=1,应该在也页面上显示停用按钮,结果按钮上显示的是状态1——SQL语句多加了一个引号

b、后端返回了数据,前端没有显示出来

  • 场景再现:明明只有两条数据,但是页码显示了有很多条,还有翻页操作,但是翻页又翻不了——后端页码返回时出错——SQL写错导致的——后端问题

②  40*(前端bug)

  • 出现原因:100%是前端的bug,前端操作接口错误,没有按要求去调用接口

                            我们做的是功能测试,这个时候我们没有接触接口,我们操作的是前端,是前端在调用接口,前端操作接口错误,没有按要求去调用接口

  • 场景再现:例如要求传的是json格式,然后前端在写代码的时候把花括号漏了半边;又如:要求传数字格式,结果传了个字符串格式
  • 查bug思路:抓包看
  • 提bug:提bug时指出是哪里的问题,比如报了400要告诉她,你这个参数用的不对,报405告诉他,你接口类型用错了,get用成post,post用成get

③  50*

首先明确100%是后端bug,当然也有可能是前端出了问题导致后端出了bug

  • 前错导致后错场景再现:例如前端没有对数据进行校验,传了一个很长的数据过去,后端接收这个数据的时候出错了,后端也没有对数据进行校验,最终两者导致出错了;又如:又如前端传了个json格式数据给后端,但是后端想要的是数组格式,结果后端就没办法取数据,导致后端报500错误
  • 查bug思路:抓包判断前端发的数据是否有问题,如果前端发送的数据是OK的,那么就是后端的问题;如果前端发送的数据有问题,后端报500,那么前端后端都有问题,后端500问题通过查看日志追踪bug

3、和接口无关(前端bug)

首先明确,功能测试中和接口无关的bug100%是前端的bug,主要分为以下3种情况

①  检查日志是否报错,如果报错是代码的问题

  • 如何查看日志:网站打开开发者工具,查看控制台console;APP在手机上打开开发者工具,使用adb logcat;小程序在设置中(三个点)启动开发调试工具查看log
  • 提bug:把错误的日志发出来,告诉开发是哪里的问题

②  可以输入不满足需求条件的数据,或者不可以输入满足需求条件的数据

  • 出现原因:前端的数据校验的问题
  • 提bug:请仔细检查输入数据的校验问题

③  其他的UI问题,也是前端的问题

 

 the end:思维导图

 

posted @ 2020-10-30 13:46  一个名  阅读(395)  评论(0编辑  收藏  举报