原先是在後端小菜鳥學習記錄(4) 的Debug流程,但由於我覺得早期寫的後端學習筆記比較亂,畢竟當初剛進公司,也很霧煞煞亂糟糟,也為了針對工作的時數做統計,還有針對每天的學習做紀錄
所以無論是來自前輩的教導,還是自己領悟跟找尋到的知識/資料,都全部混在一起
起初是因為我寫了上傳資料於資料庫的py檔,在使用jmeter打入大量資料時會掉資料而不知所措,在對於還是菜鳥(雖然現在也差不多XD)的時期,出了錯誤,也不知道到底發生什麼
使用的環境是Docker , Nginx, … Flask
然後在使用docker建立整體連線後,打入大量資料產生掉資料的問題
前輩們用了很有條例的方式來引導我學習Debug的流程
帶著我一層一層去剖析在哪一層時會造成掉資料
# Debug 的流程
1. 重現問題的步驟 (reproducible)
2. 建立單純的測試環境 (例如:使用 docker-compose 來建立環境在本機上)
* mysql
* api
# 拆解問題
* 使用資料流拆解問題
* nginx (project.conf)
* uwsgi (app.ini)
* flask-app (app.py)
* /app (`@app.route('/app')`) 這個是路徑
* db operation (`insert_data()`) # 這個是Insert資料的函式
# 識別問題
> 出事就看 log,不懂就看文件
* 整合測試
* 單元測試
* 由 log 檢查問題 # 優先懷疑是自己程式寫錯 < 大神標記XD
* 文件的範圍
* 官方手冊
* Google 跟 Stackoverflow 的關鍵字查詢 # 估狗是第三步驟,在這之前若出錯應該是先找官方手冊
* source code (發生問題 log 的相對應的原始碼) # Github上或網路上有人分享的相關程式碼
* 供應商測試 (vendor test) # 就是python的package, 通常不太會是出錯主因
以上大概就是出Bug的處理流程
以往只要出事,我就估狗,然後把所有估狗到的作法全試一遍
這種方法是錯的,因為大部分我比較無意識的去抄Code
而沒有像去看官方文件,去真正查詢如何使用
這個部分是全部程式碼+環境都包好送QA測試時發生錯誤
所以,我自己要重新建立環境
然後試著讓問題再發生一次
接著再分解步驟去找出問題
除此之外,我認為學習Debug工具也很重要,我最近學會了使用Pycharm的Debug Tool來做Debug還有追蹤Code,我覺得很好用,也大大縮短自己Debug的時間
其實也不是推廣,但發生問題時,的卻令人煩惱
不過只要做好搭配流程+Debug工具的輔助,相信大家很快就能找出Bug,並解決他們囉!