出现线上bug,测试人能做些什么?
测试奇谭,BUG不见。
大家好,我是谭叔。
一提到线上问题,很多测试小白要么”原则性“恐惧,要么憨憨如也,不知如何下手。
本篇文章,我再细化下这道常见的面试题,跟大家捋捋发生线上问题,作为测试人,该有的思路。
首先,直接给出万金油三步公式:
第一步,初步排查,快速恢复业务;
第二步,查找问题根本原因,彻底解决;
第三步,团队分享,避免出现类似问题。
这三步中的措辞,十分重要。特别是第一点——初步排查,快速恢复业务。
出现问题,不要一来就盲目定位,本着不找到根本原因不罢休的思想去处理突发问题,是不可取的。
线上有问题,最重要的是快速恢复业务。
你可以先检查CPU、内存、网络IO、磁盘IO等,看看有无明显的抖动。比如CPU过高,可以尝试重启。
接着查看调用情况,判定是依赖系统的问题,还是自身系统的问题。如果是依赖系统的问题,有降级方案的优先做降级处理,无降级方案的马上联系依赖系统负责人协同解决。
如果是自身系统问题,优先判断数据库类问题。若有慢查询,就先kill掉,重启数据库;若访问量不足,就先做扩容或者限流。再查查Full GC,如果Full GC过多,先重启服务,再通过DUMP内存找对象,修复并上线。
前面所述,都提到了重启服务——人人都说重启大法好,因为它是真的香。

有时候,重启是快速恢复业务的一种方式。但这种方式,治标不治本。
治本是在快速恢复业务之后,定位问题,去彻底解决它;去做总结分析,避免出现类似问题。
比如,刚刚提到,若是数据库慢查询,想要快速恢复业务,可以kill掉慢查询,重启数据库。此时,业务虽然恢复,但它是短暂的恢复,你还得继续定位。你定位到问题原因是新加的表索引不够,那你得马上加索引,并在事后开个会或者做个组内总结,聊聊库表设计的问题,聊聊上线方案的问题等等,避免再出现类似问题。
其实,在生产环境,引起大面积故障,导致系统不可用的问题一般有三大类:依赖系统故障、数据库故障、程序问题导致内存不足引发Full GC。
请牢记并背诵这三大类,绝对实用!!!
再细分点讲,数据库慢查、死锁、连接数不够,redis有大key,Full GC过多,线程DUMP,内存DUMP,MQ消费积压,都是常见的线上问题,也可以说,是绝大部分问题。
这些内容,每个都可以开一篇专题聊聊,故此文不再拓展。
在中大型公司,以上这些都是通用知识点。出现线上问题,体验并实操几次,自然而言就懂了。
作为测试,你可以不深入它们,但你一定得了解它们,或者说,你可以把他们作为你进阶提升的课程表,挨个去学习。
最后,愿天下测试人都不会遇到线上BUG。

出现线上bug,测试人能做些什么?的更多相关文章
- 线上bug的解决方案--带来的全新架构设计
缘由 本人从事游戏开发很多年一直都是游戏服务器端开发. 因为个人原因吧,一直在小型公司,或者叫创业型团队工作吧.这样的环境下不得不逼迫我需要什么都会,什么做. 但是自我感觉好像什么都不精通..... ...
- 关于线上bug
之所以想写下线上bug,因为发觉有些公司对线上bug的处理是比较严格甚至是很苛刻,涉及到的相关人可能会因此而背黑锅. 之所以会存在这样情况,因为公司各部门都有关联,特别是用户.老板的投诉,也给公司会造 ...
- 线上bug分析
昨天下午大神把组内几十号人召集在一起开Online bug分析大会,主要是针对近期线上事故从事故原因和解决方案两个维度来分析. 对金融软件来说,每一次的线上事故都有可能给公司带来重大的损失,少扣了用户 ...
- 微软官方网站线上兼容测试平台-Browser screenshots
前端开发时最不想做的就是在不同浏览器.平台和分辨率测试网页显示效果,通常这会浮现许多问题,尤其浏览器版本就可能让显示成效完全不同,也只好尽力维持让每一种设备都能正常浏览网页.修改到完全没有问题必须投入 ...
- 程序员如何描述清楚线上bug
案例 一个管理后台的bug,把操作记录中的操作员姓名,写成了该操作员的id.原因是修改了一个返回操作人姓名的函数,返回了操作人的id.但是还有其他地方也用这个函数,导致其他地方把姓名字段填写成了操作员 ...
- 记一次线上bug排查-quartz线程调度相关
记一次线上bug排查,与各位共同探讨. 概述:使用quartz做的定时任务,正式生产环境有个任务延迟了1小时之久才触发.在这一小时里各种排查找不出问题,直到延迟时间结束了,该任务才珊珊触发.原因主要就 ...
- 线上bug或故障界定及填写规范
[线上故障与线上Bug界定] 一.线上故障: 1. 故障参照公司规范稍做调整: a) 1级故障:资讯首页或主App首页无法打开:多条业务线同时不可用:超过15分钟: b) ...
- 记录一次线上bug
记录一次线上bug,总的来说就是弱网和重复点击.特殊值校验的问题. 测试场景一: 在3g网络或者使页面加载速度需要两秒左右的时候,输入学号,提交学生的缴费项目,提交完一个 学生的缴费后, ...
- 「日常开发」记一次因使用Date引起的线上BUG处理
生活中,我们需要掌控自己的时间,减少加班,提高效率:日常开发中,我们需要操作时间API,保证效率.安全.稳定.现在都2020年了,了解如何在JDK8及以后的版本中更好地操控时间就很有必要,尤其是一次线 ...
随机推荐
- GWAS初探
原理 GWAS 的主要方法学依据是归纳法中的共变法,是探究复杂因果关系最主要的科学思维和方法.所谓共变法,是通过考察被研究现象发生变化的若干场合中,确定是否只有一个情况发生相应变化,如果是,那么这个发 ...
- Oracle-where exists()、not exists() 、in()、not in()用法以及效率差异
0.exists() 用法: select * from T1 where exists(select 1 from T2 where T1.a=T2.a) 其中 "select 1 fro ...
- chown & chmod用法
chown & chmod 1. chown更改文件的属主&属组 NAME chown - 改变文件的属主和属组(change file owner and group) 用法 cho ...
- Yarn 公平调度器案例
目录 公平调度器案例 需求 配置多队列的公平调度器 1 修改yarn-site.xml文件,加入以下从参数 2 配置fair-scheduler.xml 3 分发配置文件重启yarn 4 测试提交任务 ...
- doy05循环语法学习笔记
doy05循环语法学习笔记 一.while循环语法: 1.基本用法示例 x = 1 while x <= 5: print(x) x += 1 2.死循环:永远不结束的循环 如:while Tr ...
- Learning Spark中文版--第三章--RDD编程(1)
本章介绍了Spark用于数据处理的核心抽象概念,具有弹性的分布式数据集(RDD).一个RDD仅仅是一个分布式的元素集合.在Spark中,所有工作都表示为创建新的RDDs.转换现有的RDD,或者调 ...
- 零基础学习java------day8------javabean编写规范,继承,static关键字,代码块,单例设计模式
0. 今日内容提要 1. javabean书写规范 javabean:一个普通的类,用来描述事物的类,里面不包含任何的业务逻辑,只是用来存储数据. 比如:Teacher,Student,Mobile. ...
- 零基础学习java------day1------计算机基础以及java的一些简单了解
一. java的简单了解 Java是一门面向对象编程语言,不仅吸收了C++的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态 ...
- 前端页面存放token
//本地缓存,记录token function set(type, value) { localStorage.setItem(type, value); } function get(type) { ...
- 剑指 Offer 10- I. 斐波那契数列
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N)).斐波那契数列的定义如下: F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N ...