找到bug的根源,问五次为什么
在學(xué)習(xí)《問(wèn)題分析與解決》時(shí)學(xué)到了一種找到問(wèn)題根源的方法——問(wèn)五次為什么。具體內(nèi)容是:當(dāng)遇到一個(gè)問(wèn)題,不要只看當(dāng)前答案,要繼續(xù)往下問(wèn),為什么,連問(wèn)五次,就能夠找到更深層次的問(wèn)題。
最近在復(fù)盤(pán)bug的時(shí)候,也使用了這種方法,屢試不爽。
案例
前端發(fā)布后,頁(yè)面按鈕點(diǎn)擊失效,用戶反饋問(wèn)題,前端回滾代碼后恢復(fù)。
問(wèn)題一、為什么按鈕點(diǎn)擊會(huì)失效?
因?yàn)榍岸舜a寫(xiě)出了一個(gè)bug,沒(méi)有對(duì)空對(duì)象進(jìn)行判空,導(dǎo)致頁(yè)面js拋出異常,按鈕失效。
一般到這里就結(jié)束了,把代碼加上對(duì)象判空,繼續(xù)發(fā)布就完成了。
但是大家集思廣益,問(wèn)五次為什么,看看是否有新的發(fā)現(xiàn)。
之后又問(wèn)了幾個(gè)為什么,果真有收獲。
問(wèn)題二、為什么是用戶反饋,而不是告警發(fā)現(xiàn)?
因?yàn)楫?dāng)時(shí)發(fā)現(xiàn)了告警,但是看日志沒(méi)有查出什么異常,就忽略了。
問(wèn)題三、為什么沒(méi)有查出日志,是沒(méi)寫(xiě)日志,還是寫(xiě)了沒(méi)查到?
有寫(xiě)日志,但是當(dāng)時(shí)查日志系統(tǒng)特別慢,平時(shí)要十多分鐘才能查出來(lái),那天一個(gè)小時(shí)都沒(méi)出來(lái)。
問(wèn)題四、為什么系統(tǒng)會(huì)查不出日志?
不知道。后來(lái)找維護(hù)系統(tǒng)的人查了下,發(fā)現(xiàn)硬盤(pán)有問(wèn)題,緊急更換了磁盤(pán)。
問(wèn)題五、為什么平時(shí)要十多分鐘才能查出來(lái)日志,這么慢?
因?yàn)椴樵內(nèi)罩緵](méi)有用主key查詢,日志量太多,導(dǎo)致查詢慢。改進(jìn):記錄日志時(shí)把key值寫(xiě)好,精簡(jiǎn)不需要的日志。
總結(jié)
經(jīng)過(guò)問(wèn)五個(gè)為什么,把一個(gè)看似簡(jiǎn)單的線上bug,挖出了更多可以修改的點(diǎn)。為以后及時(shí)發(fā)現(xiàn)問(wèn)題,少出事故,做了很大的貢獻(xiàn)。
如果只問(wèn)一個(gè)為什么,那么修改的只有表象問(wèn)題,把代碼判斷空加上就結(jié)束了。
問(wèn)了五個(gè)為什么之后,做了這幾件事:
特別是2,如果不找出來(lái),其他系統(tǒng)也會(huì)掉到這個(gè)坑里,也算是舉一反三。發(fā)現(xiàn)一個(gè)問(wèn)題,把關(guān)聯(lián)問(wèn)題,和根本問(wèn)題都解決了
很多時(shí)候,我們遇到的問(wèn)題都有更深層次的原因。一個(gè)問(wèn)題出現(xiàn),也都是多個(gè)問(wèn)題同時(shí)發(fā)生的結(jié)果。在大問(wèn)題發(fā)生之前,一定有很多次小問(wèn)題出現(xiàn)。問(wèn)5個(gè)為什么,就像進(jìn)行了5次深度和廣度的搜索,把問(wèn)題又向四周和更深的地方挖掘。
每次出問(wèn)題時(shí)都能多問(wèn)幾次為什么?才是從根本上消除問(wèn)題的一個(gè)好方法!
轉(zhuǎn)載于:https://www.cnblogs.com/owenandhisfriends/p/10322015.html
總結(jié)
以上是生活随笔為你收集整理的找到bug的根源,问五次为什么的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 查找-------(HashCode)哈
- 下一篇: 遗留问题,排雷会炸,不排也会炸!