软件测试工程师的职责是发现BUG,此外,如何体现我的价值?那么咱们试想,只提出问题而不去解决,问题就永远得不到闭环。因此,一个资深的测试人员的基本功应该是这样的:深挖业务和功能需求,找出BUG,定位BUG,提出解决方案。这里咱们就来讲说,当咱们找到了BUG,应该把BUG提交给谁去解决,这属于BUG定位的问题。html
试想:前端
根据需求,用户头像应是圆形,但结果是方形,是谁的BUG?数据库
保存用户信息时,没法保存成功,也没有错误提示,最多是谁的BUG?后端
显然,工做过程当中,咱们不可能把这些BUG提交给同一我的去解决。咱们应该至少区分出是前端仍是后端BUG,就好像时下流行的词“垃圾分类”,通过BUG分类处理,整个团队的效率都会有所提升。浏览器
目前多数互联网项目都是先后端分离开发的,那么什么是前端?什么是后端?简言之,前端侧重于页面设计,后端侧重于服务开发。安全
好比要保存一个用户信息,前端把界面显示给用户,让用户按需填写,当用户点击“保存”按钮时,数据会经过网络被提交给后端服务,由后端服务处理是否须要进一步运算,而且把数据保存在哪个数据库的哪一张表里。服务器
目前多数项目都是多人协做开发的,若是不能明确这个BUG是谁形成的,容易提交给错误的开发人员,会大大下降BUG的解决效率。网络
另外,若是团队规模较大,或者由各地的项目组拼凑而成,势必会增长沟通成本,这更须要咱们在相似禅道或者Jira等项目管理软件中提交BUG时,先指明是谁的BUG,避免互相踢皮球的现象。前后端分离
因此,为了提升团队效率,测试人员尤为要作好BUG分类。工具
对于一个优秀的软件测试工程师来讲,区分BUG属于前端仍是后端是尤其重要的。
页面请求过程
弄清楚如何定位和分类BUG以前,须要了解一下页面请求的过程,以 http 请求为例,请求过程以下:
1.用户在前端页面操做,如点击某个功能
2.页面携带数据进行请求,访问具体功能接口
3.由后端服务执行该接口相应的业务逻辑,如涉及数据,再去请求并组装数据返回给前端
4.前端页面进行渲染和展现对应的页面和数据
先后端BUG各有什么样的特色?
• 前端BUG
界面相关
布局相关
兼容性相关
• 后端BUG
业务逻辑相关
性能相关
数据相关
安全性相关
这里提供了几个方法,能够给你们一个思路,让你们能在学习和工做中了解如何去区分BUG属于前端仍是后端。
1. 经验法
软件测试人员应不断精进本身的技能,负责的项目多了,天然对功能的实现过程有了解,也就明白如何分类BUG了。
例如:
网页上的某个图片的分辨率不对,若是咱们了解实现过程,能够想到通常状况下,是根据某个地址去服务器取图片的,数据库通常只保存地址,那么图片能正确显示,就说明后端的基本功能是知足需求的。若是具体图片分辨率有误,最可能的缘由是前端显示过程出了差错。
2. 日志查见解
当咱们发现一个BUG,并不肯定这个BUG属于前端仍是后端,能够查看后端服务的日志,复现BUG时,查看日志中有没有相关信息。基本能够认为,若是日志没有输出,极可能这个功能并无与后端交互,也就不存在后端的问题。反之,若是日志有输出,能够进一步查看有无错误日志信息,进一步分析。
3. 接口查见解
这种方法经常使用于查看是后端返回给前端的数据有误,仍是前端显示有误。
大多数浏览器都有自带的接口查看工具,如Chrome,FireFox等均可以经过F12开启抓包,在NetWork中能够看到当前页面发送的每一个http请求。
经过Chrome看到的接口状况以下
能够在Response中查看响应数据
咱们须要对比经过后端接口拿到的数据和前端显示的数据,来确认问题出在哪里。若是数据错了,页面显示是错的,也是正常的,先从后端入手去解决。若是数据对了,可是显示错了,就须要问问前端的开发人员了。
沟通很重要
咱们在定位BUG的过程当中,最不能忽略的一个问题是和开发人员的沟通,有时候忙活半天,不如一问一答。经验和技术的成长也都离不开合理高效的沟通。
经验和小结
出现样式的问题基本都是CSS的BUG
出现文本的问题基本上都是html的BUG
出现交互类的问题基本上都是Javascript的BUG
其余问题先沟通,再定位。