1. 程式人生 > >Web測試中定位bug方法

Web測試中定位bug方法

bug定位

在web測試過程中,經常會遇到頁面中內容或數據顯示錯誤,甚至不顯示,第一反應就是BUG,進一步了解這個BUG的問題出在那裏,是測試人員需要掌握的,可以簡單的使用瀏覽器自帶開發者工具、數據庫工具配合去排查。

bug定位常用工具

Firefox——firebug、web developer、live http headers、http fox

IE插件——httpwatch

第三方工具——fiddler

慢速網模擬工具——firefox throttle

前臺錯誤

前臺的bug通常是功能、界面和兼容性等有關,涉及到jstl,jsp,js,css,html方面比較多。bug主要有兩塊,第一就是JS寫的有問題,這個你可以按F12 打開控制臺,在

console中查看報錯信息,一般瀏覽器都會顯示報錯的jS ,對於出錯的js可以在Sources下查看對應報錯的資源文件,基本上都會找到錯誤原因的變量未定義,參數未定義等,JS錯誤都很好解決的。

第二個就是頁面中的bug了,現在做web項目基本上沒有做靜態頁面的都是動態了,所以你頁面中要麽使用了小腳本要麽使用了EL表達式來存值。頁面報錯的話 在控制臺是可以看到你錯誤行號和附近代碼的,你自己去找就行了。

圖片不顯示,谷歌瀏覽器右鍵點擊圖片,點擊【檢查】,(火狐瀏覽器右鍵點擊【使用firebug查看元素】)在打開的控制臺上找出圖片的屬性,輸入到瀏覽器的地址內,如果能打開圖片,那麽不顯示圖片的問題就是後臺的問題;如果瀏覽器內不能打開圖片,那麽就是前端的問題。

開發者工具的使用(chrom瀏覽器)

(1)打開開發者工具,在瀏覽器菜單欄選擇工具-開發者工具,快捷鍵是F12

(2)打開之後切換到Network頁簽,操作就可以看到請求響應

(3)再選擇響應的鏈接,切換到Preview頁簽,可以看到響應的結果數據;切換到Headers頁簽可以看到請求的地址,請求的方式,結果等信息

(4)Response結果中可以看到返回的數據字段、值

技術分享


技術分享


技術分享


可以根據響應的值判斷一些bug所在

(1)響應中沒有數據,則是後端數據沒有返回,前端展示為空,則為後端問題。例如:列表中新增一個數據,沒有顯示,通過請求中可以看到數據total為0,則是後端數據沒有返回。

(2)響應中有數據,但是前端顯示錯誤了,可以根據字段值判斷是否前端顯示中取錯了字段顯示,可以判斷是前端問題。例如:B端顯示內容錯誤了,把登錄用戶名顯示了登錄帳號,則可以在響應中看數據是否返回正確,返回正確而顯示錯誤,則有可能是前端綁定字段錯誤。

(3)響應中有數據,但是跟自己操作的結果不一致,可以根據數據庫查詢,如果數據庫中也沒有記錄,可能是代碼有問題,沒有記錄你的操作。例如:註冊了一個帳號,但是登錄時提示帳號或密碼錯誤,這就可以在數據庫表中查看是否有註冊的數據。

後臺錯誤

根據後臺日誌文件查找錯誤
後臺涉及到servlet,jms,ejb,還有很多框架,struts,hibernate,spring,ibatis等。bug 比較難改,但是好找。主要就是看控制臺報錯,然後定位錯誤行號。如果配置文件沒有問題,那麽一般的報錯就是空指針,或者是數組下標越界。看附近變量,看方法的參數基本上都可以定位錯誤了

重啟的一般情況:
(1)熱部署 (新增部分功能,或者修改部分bug) (2)發布新版本 (整個系統)(3)內存溢出,此時重啟服務器即可

由於項目中有線程程序,./shutdown腳本關閉tomcat程序,不能把啟動的線程全部關閉,造成服務器啟動線程未關閉的錯誤,所以
Linux系統中重啟Tomcat的一般步驟:(一般是先關閉進程,然後進行重啟 ,如果 /要刪除某個文件:rm 文件名,或者不為空的文件夾:rm -rf 文件夾名)
cd usr/local/ //測試服務器名稱/bin
ps -exf //看測試服務器下運行的項目的主進程(最前面的數字為PID進程號)
kill -9 PID //強制關閉某一項目的主進程
./startup.sh // ./**.sh 即執行重啟shell腳本文件 ,此時在測試服務器的bin下面,直接執行即可,其余的加上 chmod a+x shell腳本文件,也可用./執行
(小知識:
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)


如何查看日誌
一臺服務器可以部署多個應用
cd usr/local/測試服務器名稱/logs //查看先進入到服務器的logs目錄下
tail -f catalina.out //監視catalina.out 文件的尾部內容(默認10行)
日誌中常見的問題
獲取日誌文件中常遇到的問題:
(1)編碼問題:tomcat是新的,需要改編碼修改tomcat的server.xml文件<Connector port="8080"URIEncoding="UTF-8"/>
特別是windows下的項目重新部署到linux系統下,
(2)空指針:程序問題,一般沒有考慮到為空情況,或者主外鍵約束的數據為空,或者刪除關聯數據,導致為空
(3)長度過長,超過最大長度,測試環境修改數據庫字段長度後生產環境未修改,導致報錯!!
(4)非法數據
(5)內存溢出:重啟

一般的問題原因總結
程序:為空判斷,增刪改查,不同公眾號調用的接口也不一樣
數據初始化:數據庫表結構和數據初始化,權限配置,

故障無法重現時:
(1)看日誌,根據日誌定位原因,則在測試環境中按照日誌提示構造條件相同的測試案例測試,嘗試在測試環境中將問題重現。問開發
(2)測試環境和配置與實際的工程環境和配置有哪些差異等等。同時主動與開發負責人、工程實施人員以及有經驗的項目經理討論,分析可能導致的原因。

配置環境不一致導致
測試環境ok,生產環境新增時保存失敗,查看後臺日誌報長度溢出,數據庫內容字段要求和生產環境不一致

輔助工具:linux和SQL
linux
查看日誌
SQL用來篩選數據或直接進行數據修改狀態,多用於集成測試過程中前後流程相連接

jsp分不清前後臺的,因為這裏涉及到一個運行時刻的問題,它們的運行時刻是不同。用戶發出請求後,服務器解析用戶請求,轉至對應的jsp,這個時候可以說是整個jsp都是後臺程序。而Jsp做出響應後,把響應的內容返回給瀏覽器,這個時候瀏覽器就只看見html,css,javascript,這個時候所有的程序又都是前臺程序。

火狐瀏覽器的web控制臺

打開方式如下:菜單上點擊【工具】

技術分享

Web控制臺頁面顯示

技術分享


谷歌瀏覽器開發者工具

按F12打開,頁面顯示如下:

技術分享

Element標簽:該標簽使用來查看頁面的HTML標簽元素的,能夠也就是查看源碼,我們可以看到布局,可以看到用到的樣式,還有用到的鏈接等等。

console標簽:這個就是一個web控制臺,可以查看網頁運行後提示的消息,錯誤或者警告以及輸出內容等

sources標簽:這個是顯示資源文件的,可以查看運行的腳本,調試一般都是在Sources調試的

技術分享

1.該選擇框使用來選擇資源的,當網頁被加載的時候向服務器端請求出來的文件包括.html .ccs .js這樣的文件。
2.這個地方使用來調試js代碼的地方,這個非常重要,看到行號上面有藍色的標簽,這個標簽就是斷電,當我們需要調試程序的時候打一個斷電,然後通過3這個工具欄進行調試,那麽調試過程就不詳細解釋,也就是打一個斷電然後刷新頁面程序會調到你打斷點的地方,然後通過4來查看程序中變量的值什麽的。
3.中的標簽,第一個是停止狀態的按鈕就是表示程序是否停止(在debug時),後面的是程序繼續跳過方法,跳過下一個語句,調到上一個語句。

Network標簽:這個就是抓包常用的工具,可以看到網頁加載的腳本和資源的時間,還可以看到某些不能加載成功的資源

技術分享

那麽這個頁面就是用於抓包的頁面,我們需要分析頁面的請求,比如模擬登陸什麽的都需要去分析程序是怎麽在後臺執行的,接下來就,我們可以看到Headers(請求消息頭) Preview(預覽) Response(響應) Timing(請求時間)Cookie這些東西

最上面還有一個工具欄,有一個紅色的圓點靜止符號的按鈕,那麽這兩個按鈕,當為紅色按鈕的時候表示當前的請求不被清空(但是這裏的請求是不跳轉頁面的請求,當跳轉到新的頁面,那麽也會請求也會被清空),後面這個按鈕就是清空請求的。

下面還有一行工具欄,這個工具欄主要是用來選擇和過濾請求消息的。

再下面可以看到時間線,這個就是記錄一個請求開始到結束的時間。

註意:當你需要請求到另一個頁面的時候都不清空你的請求的時候需要勾選上Preserve log,同時讓紅色按鈕顯示紅色

TimeLiness標簽:這個就是請求時間


Web測試中定位bug方法