| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 软件测试遇到bug怎么分析,看看字节5年老司机是怎么秀操作的... -> 正文阅读 |
|
[开发测试]软件测试遇到bug怎么分析,看看字节5年老司机是怎么秀操作的... |
为什么定位问题如此重要?
01、定位原因之前遇到问题时,先别急着去定位原因。 1、保存bug产生的记录: 首要做的是保存bug产生的记录,保证可以复现。 为什么要保存记录?因为如果以后不能复现,那就不能证明bug的存在。 2、排除低级问题: 然后是排除QA的低级问题,常见的低级问题:
3、排除数据问题(脏数据): 有时候会遇到服务端报500错误,查看日志后,报空指针,那么很有可能就是数据库中关联表的数据被人为删掉导致的。
02、定位问题的思路排查顺序:
1、用户环境层面 主要是指基础环境是否可以使用。比如:
检查完成后,可以转到第二步 2、用户展示层 用户在使用过程中,通过查看等操作发现的一些问题:
3、逻辑控制层 用户操作过程中,业务的处理逻辑有没有按照前期的设计实施。或者中间环节出现异常,比如缓存服务器(如redis)、消息中间件(如rabbitMQ)、数据存取中间件等。 4、服务层 服务层往往检查服务器的配置,如可能是tomcat配置、nginx配置、jdbc配置等的问题。测试人员最好能够了解下它们的各项配置。 5、数据库层 可能出现测试环境和正式环境数据库版本不同,前后端数据格式、长度限制不同。用户操作完成后,交易流程非常顺畅,这样也不代表整个交易没有问题,还需要测试人员检查数据库登记的表和字段是否正确
6、经验法则 有经验的测试人员对于有部分bug已经见过多次,能够很快找到根源,直奔主题,迅速报告或者解决bug 7、其他 常见的bug可能还有构建方面的原因
03、定位问题的方法1、常用的定位策略: 常用的定位策略分为三类:原始类(brute force)、回溯类(backtracking)、排除类(causeeliminations)
原始类定位方法是最常用也是最低效的方法,只有在万般无奈的情况下才使用它,主要思想是“通过计算机找错”。
回溯法能成功地用于程序的排错 方法是从出现bug征兆处开始,人工地沿控制流程往回追踪,直至发现出错的根源,不幸的是程序变大后,可能的回溯路线显著增加,以致人工进行完全回溯到望而不可及。
基于归纳和演绎原理,采用“分治”的概念。 首先确定所有与bug出现有关的所有数据,设想一个导致bug的原因,用这些数据证明或反驳它。或者一次列出所有可能的原因,通过测试一一排除。只要某次测试结果说明某种假设已呈现倪端,则立即精化数据,乘胜追击 2、查看状态码 4xx状态码:一般表示是客户端问题(当然也有可能是服务器端配置问题),比如:
5xx状态码:一般表示服务端出现问题。比如:
3、查看服务器日志 如果发生5xx问题,或者需要检查后端接口执行的sql是否正确,我们最常见的排查方法就是去看服务器日志,比如tomcat日志。开发人员一般会打出关键信息和报错信息,从而找到问题所在,所以,测试人员也要养成看日志的习惯。 4、检查配置 很多时候,bug不是代码的问题,而是tomcat配置、nginx配置、jdbc配置等的问题。在这个层面上,测试人员最好能够了解下它们的各项配置,在发现问题后可能就会想到这方面的问题。 5、查看需求文档 有时候,前端和服务端的交互都正确,但是从测试的角度看不合理。这个时候,我们应该翻翻需求文档。如果和需求文档不符,那么就要看下改什么比较合理,是改前端,还是改服务端,或者两者都要改。 这里有一个原则,就是前端尽可能少地去承担逻辑,只负责渲染展现。当然,不要以为需求文档就全部正确,它也可能会有错误,我们也应该去发现需求文档的bug,然后再去协调PM,敦促FE或者RD进行修改。 6、向开发寻求可测性支持 有时候,涉及到开发过程的一些测试,也需要开发提供可测性支持。 比如,要查看接口给另一个接口发的请求是否正确,可以让开发打印出完整的请求log,还有一些逻辑开关、修改页面数据条数等,都属于可测性支持的范畴。 04、bug定位常用工具Firefox——firebug、web developer、live http - headers、http fox IE插件——httpwatch 第三方工具——fiddler 慢速网模拟工具——firefox throttle 05、如何区分前端/后端bug为什么要区分前端/后端BUG?
前后端BUG各有什么样的特点? 1、利用抓包工具来进行分析 一般有httpwatch,firebug,fiddler,charles等抓包(数据包)工具。
2、定位前端的bug 前端的bug通常是功能、界面和兼容性等有关,涉及到jstl,jsp,js,css,html方面比较多。bug主要有两块:
3、定位后端的bug 后台涉及到servlet,jms,ejb,还有很多框架struts,hibernate,spring,ibatis等 bug 比较难改,但是好找,主要就是看控制台报错,然后定位错误行号。如果配置文件没有问题,那么一般的报错就是空指针,或者是数组下标越界。看附近变量,看方法的参数基本上都可以定位错误。 06、定位完问题后在发现问题或者定位到问题原因后,一定要进行一步,就是再次确认问题。所谓确认问题,就是弄清楚问题是否每次都发生,还是概率事件,或者是工具相关的问题:
|
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 22:43:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |