一、 为什么要区分?
第一,前端bug提交给后端,后端bug提交给前端,不仅给开发双方带来了时间浪费,在一定程度上也缩短了测试时间;
第二,为了避免出现一个bug双方踢皮球,影响项目测试进度,明确哪方的问题对症下药也减少了沟通成本、提高了测试效率;
第三,精准定位分析bug,一方面是测试工程师能力的体现,另一方面也利于测试工作经验的累积。
二、如何定位分析?
1)看页面:页面上的文字、样式、交互、兼容,这些都属于前端bug;1)没问题看2)
2)看接口:没有请求接口、请求接口的url错误,属于前端bug;2)没问题看3)
3)看传参:接口的传参不对属于前端bug;3)没问题看4)
4)看响应:接口返回的数据不对或者没有返回数据,属于后端的bug;
温馨提示
判断规则并不是全部,很多场景下需要理解前后端开发设计逻辑,可以协助理解项目、更快耿精准的定位分析bug。
1、页面上的文字错误不一定完全是前端错误,比如列表页的列表名称错误属于前端bug,但列表下的数据内容字段错误,要查看接口返回数据是否正确,大多为后端bug;
例1:接口入参processStatus字段未传值,导致查不到相关数据,属于前端bug
例2:列表页偶尔会出现查不到数据的场景,偶现bug测试多次后,对比前后传参响应,发现查不到的场景接口入参多传了detail[0],前端为空处理多传了参数,属于前端bug
2、接口报错不一定完全是后端的错误,比如前端接口某个传参字符串类型,而后端接口要求数组类型,属于前端bug;
而前端传参无问题情况下,查看后端返回数据,返回数据数量或者内容字段错误,属于后端bug;
再与数据库数据对比,如果数据库无数据或者数据库存储的数据不对,进一步分析是否是前后端某个业务逻辑出现错误;
例1:下载的文件中缺少数据,后端数据库也没有相关数据,具体分析后,发现产生数据时后端并未存储当天的数据,属于后端bug
例2:下载五万条数据,接口报超时,属于后端bug
三、借助什么工具?
1、大部分情况下,借助抓包工具就可以了,web端常用的是浏览器自带的F12-NetWork,app端常用的是Charles(既可以web端,也可以app端,app端需要在手机或其他设备上设置代理),另外app端也可以使用android studio(仅限android开发环境);
PS:浏览器-F12-NetWork
PS:Charles-手机设置代理-H5页抓取数据
2、如果是比较复杂的系统,比如两个及以上的系统对接,这种情况下单纯使用抓包工具不太容易判断,那么通常使用终端连接测试服务器,使用Linux命令查看日志,进一步判断是哪一个系统出的问题。
四、如何复现bug?
大多数bug比较容易复现,一般在提交bug时,把错误的传参、返回数据或订单信息一并提交,减少重复沟通、重复复现所浪费的时间;
而有一小部分bug比较难出现,基本都是偶然出现,可能刷新再次进入页面就没有了,可以多次测试模块所涉及到的场景(场景覆盖越多越容易复现),查看复现频率,如果bug出现频率比较高,仔细对比bug出现时页面数据、接口传参和响应与正常不复现时的数据、传参和响应做对比,进一步定位分析bug;
另外,可以更换系统、更换设备进行测试,如果出现的频率较低,不影响正常流程使用,询问产品人员是否无需关注。
五、案例分析
比如在小红书上收藏了一条笔记,但是收藏页面查不到这条笔记,如何分析是谁的bug?
这个场景有两个动作,第一个是收藏笔记,第二个是查看收藏页。
首先,需要测试点击收藏这个动作,查看调用的接口,判断前端调用的接口是不是正确,是不是正确的把这条笔记的字段完整的传给了后端,后端是否把这条数据正确的存储在数据库表里;
然后,测试收藏列表,查看列表接口,查看前端的传参是不是正确,后端有没有把符合条件的数据返回来。