如何定位前后端Bug?
Bug分析
- 1、如何分析Bug?
- 1)抓包接口定位分析
- 2)看系統(tǒng)日志
1、如何分析Bug?
1)抓包接口定位分析
web項(xiàng)目的話,一般工作中使用方式比較多的是使用瀏覽器自帶的F12抓包看接口請(qǐng)求。
如果是app客戶端之類的,一般采用fiddler等工具進(jìn)行抓包接口。
不管哪種方式,目的都是通過查看接口,去定位分析屬于前端問題還是后端問題。
比如你在淘寶上邊購(gòu)買了一件商品,并且成功支付,但是在我的訂單里面卻沒有記錄,你應(yīng)該如何去分析定位這個(gè)問題?
首先需要搞明白的是這個(gè)場(chǎng)景的數(shù)據(jù)流調(diào)用的邏輯關(guān)系,不過這個(gè)問題比較簡(jiǎn)單。
整體來說就是前端購(gòu)買商品,支付成功,會(huì)把這條數(shù)據(jù)的商品信息加支付信息都落入數(shù)據(jù)庫(kù)中。
然后點(diǎn)擊我的訂單,會(huì)調(diào)后端接口,后端從數(shù)據(jù)庫(kù)取相關(guān)信息,然后前端渲染展示商品和支付信息。
搞明白這個(gè)場(chǎng)景的數(shù)據(jù)流轉(zhuǎn)就很容易定位分析這個(gè)bug了,可以使用抓包工具抓包這個(gè)我的訂單調(diào)后端的接口。
如果抓不到這個(gè)接口,就是前端沒有發(fā)出請(qǐng)求,顯然是前端問題。
如果有請(qǐng)求并且響應(yīng)了,就查看這個(gè)接口響應(yīng)信息,如果返回報(bào)錯(cuò)了,則需要具體分析報(bào)錯(cuò)內(nèi)容。
這個(gè)時(shí)候既有可能是前端入?yún)鞯牟粚?duì),導(dǎo)致后端報(bào)錯(cuò)。也有可能是前端傳對(duì)了,后端處理錯(cuò)誤,需要具體分析是前端問題還是后端問題。
如果后端成功響應(yīng)了且返回信息跟接口文檔定義的一致,那么大概率是前端展示的問題,這個(gè)時(shí)候需要找前端同事。
以上,就是定位一個(gè)bug是屬于前端還是后端的分析思路。
2)看系統(tǒng)日志
既然可以抓包定位看接口返回了,為什么還需要查日志系統(tǒng)呢?
這是因?yàn)閷?duì)于一家公司來說,一般不止一個(gè)系統(tǒng)。很多公司都是根據(jù)業(yè)務(wù)不同劃分出不同的組,不同系統(tǒng)共同完成公司一個(gè)項(xiàng)目。
舉個(gè)例子,比如一家保險(xiǎn)公司,可能有系統(tǒng)是負(fù)責(zé)用戶下單的就是交易系統(tǒng),管理保單變更比如退保之類的就是保單系統(tǒng),負(fù)責(zé)收錢的就是財(cái)務(wù)系統(tǒng),負(fù)責(zé)賠錢的就是理賠系統(tǒng)……
每個(gè)系統(tǒng)就是一個(gè)組,一般二三十人不等。每個(gè)組有開發(fā),測(cè)試,產(chǎn)品,具體看公司了。
那么這些系統(tǒng)是怎么交互合作的呢?就是通過接口來交互,這也是接口測(cè)試比較復(fù)雜的地方,涉及到多個(gè)系統(tǒng)多個(gè)接口的邏輯調(diào)用。
理解完這個(gè),再說到為什么要查看日志的問題?
比如頁(yè)面調(diào)后端系統(tǒng)接口報(bào)錯(cuò)了,但是你知道整個(gè)流程能有多長(zhǎng)嗎?
頁(yè)面可能直接調(diào)用的是系統(tǒng)A接口,但是這時(shí)候系統(tǒng)A又調(diào)用了系統(tǒng)B,系統(tǒng)B又調(diào)用了系統(tǒng)C。頁(yè)面上看到的接口返回報(bào)錯(cuò)結(jié)果,本質(zhì)上可能是系統(tǒng)C接口報(bào)錯(cuò)返回的。
這個(gè)時(shí)候僅僅通過抓包就無能為力了,你需要去查看系統(tǒng)日志,去一層層去分析,究竟是哪個(gè)系統(tǒng)報(bào)錯(cuò)了,然后定位到問題。把報(bào)錯(cuò)信息和日志截圖丟給那個(gè)系統(tǒng)同事。
一般我發(fā)送錯(cuò)誤,協(xié)調(diào)處理時(shí)都會(huì)發(fā)下面幾樣?xùn)|西,調(diào)對(duì)方接口的url,入?yún)⑿畔?#xff0c;返回報(bào)錯(cuò)信息。
再簡(jiǎn)單描述下調(diào)用接口業(yè)務(wù)場(chǎng)景,如果對(duì)方很熟悉的話一看url就知道了,這時(shí)候就不用描述了。
再來說下系統(tǒng)日志是怎么一回事?
日志本質(zhì)上就是開發(fā)寫在項(xiàng)目中的代碼,報(bào)錯(cuò)會(huì)拋出異常信息,以及打印一些接口返回信息等等。
有的公司會(huì)有專門的日志查詢系統(tǒng),有的公司是通過xshell工具連接上linux系統(tǒng)再查找日志,這就看公司了。
因?yàn)楝F(xiàn)在公司系統(tǒng)一般是linux系統(tǒng),所以查詢?nèi)罩镜拿钭匀痪褪莑inux命令了。
我一般用的比較多的是grep,tail這兩個(gè)命令,前者是精確查找,后者是動(dòng)態(tài)查找,大家可以百度學(xué)習(xí)下這兩個(gè)命令。
說一下精確查找,就是根據(jù)開發(fā)代碼中打印的關(guān)鍵字信息去精確查找日志,一般是requestid,證件號(hào)或者訂單號(hào)之類的。
這個(gè)可以提測(cè)后問下開發(fā),查找日志的關(guān)鍵字是什么,日志文件名是什么,以及去哪個(gè)服務(wù)里面去查找。
因?yàn)楝F(xiàn)在一般是微服務(wù)架構(gòu),不同的服務(wù)處理不同的業(yè)務(wù),存儲(chǔ)不同的日志。不同公司可能不太一樣,但是方式大同小異。
總結(jié)
以上是生活随笔為你收集整理的如何定位前后端Bug?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言远征之基础篇
- 下一篇: ROS中的标准计量单位和坐标约定