在知乎看到這篇文章不錯,為了加強記憶敲了一遍。已將鏈接放在標題中。
前台錯誤
前台的bug通常是功能、界面和兼容性等相關,涉及到jstl,jsp,js,css,html方面比較多。
bug主要有兩塊,一是js寫的有問題,可通過F12在console中查看報錯信息,一般瀏覽器都會顯示報錯的js,對於出錯的js可以在Sources下查看報錯的資源文件,基本上都會找到錯誤原因的變量未定義,參數未定義等,js錯誤都是很好解決的。
第二個頁面中的bug,現在web項目基本上沒有做靜態頁面的都是動態了,所以頁面中要么使用了小腳本要么使用了EL表達式來存值。頁面報錯在控制台可以看到錯誤行號和附近代碼。
圖片不顯示。在瀏覽器輸入地址,如果能打開圖片就是后台問題,如果打不開就是前台問題。
可以根據響應的值判斷一些bug所在:
(1)響應中沒有數據,則是后端數據沒有返回,前端展示為空,則為后端問題。例如,
新增一個數據,沒有顯示,通過請求中可以看到數據total為0,則是后端數據沒有返回。
(2)響應中有數據,但是前端顯示錯誤了,可以根據字段值判斷是否前端顯示中取錯了字段顯示,可以判斷是前端綁定字段錯誤問題。
(3)響應中有數據,但是跟自己操作的結果不一致,可以根據數據庫查詢,如果數據庫也沒有記錄,可能是代碼有問題,沒有記錄操作。
后台錯誤
根據后台日志文件查找錯誤
后台涉及servlet,jms,ejb,還有很多框架,struts,hibernate,spring,ibatis等。bug比較難改,但是好找。主要就是看控制台報錯,然后定位錯誤行號。如果配置文件沒有問題,那么一般報錯就是空指針,或者數組下標越界。看附近的變量,看方法的參數基本上可以定位錯誤。
重啟的一般情況:
(1)熱部署(新增部分功能,或者修改部分bug)
(2)發布新版本(整個系統)
(3)內存溢出,此時重啟服務即可
由於項目中有線程程序,./shutdowm腳本關閉Tomcat程序,不能把啟動的線程全部關閉,造成服務器啟動線程未關閉的錯誤。Linux中重啟Tomcat的一般步驟(一般是先關閉進程,然后進行重啟,如果要刪除某個文件 rm 文件名,或者不為空的文件夾 rm -rf 文件夾名稱)
cd usr/local/ //測試服務器名稱/bin
ps -exf //看測試服務器下運行的項目的主進程(最前面的數字為PID進程號)
kill -9 PID //強制關閉某一項目的主進程
ps aux和ps -ef命令區別
ps aux 是用BSD的格式來顯示 java這個進程
顯示的項目有:USER,PID,%CPU,%MEM,VSZ,RSS,TTY,STAT,START,TIME,COMMAND
ps -ef 是用標准的格式顯示java這個進程
顯示的項目有:UID,PID,PPID,C,STIME,TTY,TIME,CMD)
如何查看日志
(1)編碼問題:tomcat是新的,需要改編碼修改tomcat的server.xml文件<Connector port="8080"URIEncoding="UTF-8"/>,特別是windows下的項目重新部署到linux系統下。
(2)空指針:程序問題,一般沒有考慮到為空的情況,或者主外鍵約束的數據為空,或者刪除關聯數據,導致為空。
(3)長度過長:超過最大長度,測試環境修改數據庫字段長度后生產環境未修改,導致報錯。
(4)非法數據
(5)內存溢出:重啟
一般的問題原因總結
程序:為空判斷,增刪改查
數據初始化:數據庫表結構和數據初始化,權限配置
故障無法重現時:
(1)看日志,根據日志定原因,則在測試環境中按照日志提示構造條件相同的測試案例測試,嘗試在測試環境中將問題重現。問開發。
(2)測試環境和配置與實際的工程環境和配置有哪些差異等。同時主動與開發負責人、工程實施人員以及有經驗的項目經理討論,分析可能導致的原因。
輔助工具:Linux和sql
linux 查看日志
QL用來篩選數據或直接進行數據修改狀態,多用於集成測試過程中前后流程相連接
作者:王嘉
鏈接:https://zhuanlan.zhihu.com/p/31145844
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
