如何定位web前後臺的BUG



一、對系統整體的瞭解

Server端:jsp+Servlet+json

數據庫sql、MySQL、oracle等

前臺: 涉及到 jstl,jsp,js,css,htm等方面

後臺:servlet,jms,ejb, 還有很多框架,struts,hibernate,spring,ibatis

Jsp:分不清前後臺的,因爲這裏涉及到一個運行時刻的問題,它們的運行時刻是不同。

         用戶發出請求後,服務器解析用戶請求,轉至對應的jsp,這個時候可以說是整個jsp都是後臺程序。

         而Jsp做出響應後,把響應的內容返回給瀏覽器,這個時候瀏覽器就只看見html,css,javascript,這個時候所有的程序又都是前臺程序。

 

二、前後臺bug定位

1. 前臺的bug通常是功能、界面和兼容性等有關;後臺的bug與性能和安全性有關。

前臺bug定位:按F12在控制檯中查看報錯信息,對於出錯的js可以在Sources下查看對應報錯的資源文件,寫入缺陷管理工具提交給開發即可(或者使用一些抓包工具,抓取請求相應過程中的資源文件)

前臺bug注意以下三個方面:

1)網站前臺權限控制:沒有權限的用戶不能直接輸入url的方式來進行訪問,必須進行登錄。以後涉及到權限的測試,一定不能漏掉url的方式也需要驗證一下。而在單個頁面進行W3C測試時則需要去掉該權限控制。

2)網站前臺的title,對於這個也很容易忽視。進入到不同的功能頁面,title顯示應該是有,並且要和你進入的頁面一致。title就是在瀏覽器最左上角看到的那些文字

3)http和https的注意點:

https是一種安全鏈接,需要證書,所以在系統中客戶會要求某些關鍵的地方希望加上這種安全連接,那麼此時你需要注意的是:對於不需要的安全鏈接的地方千萬也要去重點測試,有些開發會很容易忽略這一點。

要打開HTTPS開頭的網站,前提是該網站安裝了SSL證書,只有安裝了SSL證書的網站,並且開啓了443端口,你纔可以通過HTTPS加密協議無訪問;如果沒有則不能訪問。

比如在某個網站http協議後面加個s去訪問,看能否訪問成功,能成功,會顯示綠色安全小鎖,否則就不能訪問。列舉幾個安裝了ssl證書,需要使用https訪問的網站:1號店、天貓、支付寶、百度、工信部網站等等

 

2.後臺bug定位:根據後臺日誌文件

系統使用secureCRT進行日誌獲取,或者服務器控制方面的操作(關閉和重啓)

重啓的一般情況:

       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)

 

3.如何查看日誌?

一臺服務器可以部署多個應用:

  cd usr/local/測試服務器名稱/logs               //查看先進入到服務器的logs目錄下

  tail -f catalina.out                         //監視catalina.out 文件的尾部內容(默認10行)

 

4.日誌中常見的問題

獲取日誌文件中常遇到的問題:

  1)編碼問題:tomcat是新的,需要改編碼 修改tomcat的server.xml文件<Connector port="8080" URIEncoding="UTF-8"/>

  特別是windows下的項目重新部署到linux系統下,

  2)空指針:程序問題,一般沒有考慮到爲空情況,或者主外鍵約束的數據爲空,或者刪除關聯數據,導致爲空

  3)長度過長,超過最大長度,測試環境修改數據庫字段長度後生產環境未修改,導致報錯!!

  4)非法數據:

    5)內存溢出:重啓

 

5.一般的問題原因總結:

  程序:爲空判斷,增刪改查,不同公衆號調用的接口也不一樣

  數據初始化:數據庫表結構和數據初始化,權限配置,

  特別注意生產環境上的用戶數據修改,此時用戶在使用,很重要!!!

  故障無法重現時:

  1)看日誌,根據日誌定位原因,則在測試環境中按照日誌提示構造條件相同的測試案例測試,嘗試在測試環境中將問題重現。

  2)測試環境和配置與實際的工程環境和配置有哪些差異等等。同時主動與開發負責人、工程實施人員以及有經驗的項目經理討論,分析可能導致的原因。

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

 

6.輔助工具:linux和SQL

 linux查看日誌

 SQL用來篩選數據或直接進行數據修改狀態,多用於集成測試過程中前後流程相連接

 

三.瀏覽器兼容性和網頁規範標準測試

  瀏覽器兼容性測試(偏主流瀏覽器,如谷歌,火狐,IE8以上):

  https://dev.windows.com/en-us/microsoft-edge/tools/staticscan/

  W3C網頁驗證:(判斷網頁書寫是否符合規範,記住此處必須去掉權限控制,單個單元頁面url需要跟參數)

  https://validator.w3.org/

  W3C手機端頁面檢測(如手機微信菜單下的頁面):

  https://validator.w3.org/mobile-alpha/

 

互聯網測試與傳統測試的區別

1.最大的不同:互聯網產品需要自己部署和運營,用戶使用瘦客戶端(瀏覽器,app或一個需要安裝的client),核心的數據和業務邏輯在互聯網公司的機房,在IDC,在雲端。

  如:我們做的系統用戶只需一個瀏覽器,服務器用的阿里雲,部署和運營只需要一個運維人員即可。

 考慮現網(生產環境)存在下面兩個問題:

  (1)如何發佈功能到現網

  互聯網測試完一般可直接發佈,測試周期短,有時候需要進行灰度發佈,先讓部分用戶用起來,發佈完做生產驗證。

  (2)如何保證測試環境和生產環境同步

  測試環境比較難搞,拿我們做的懶企鵝來說,牽扯的系統平臺比較多,用到很多微信平臺的接口,這個很難自己搭建或者用mock。

    另外保證測試環境和到生產環境都是好的,需要代碼和數據庫,以及環境配置都要保持一致,這需要相應的機制和工具來驗證和同步。

 

2.互聯網產品節奏很快

  有的軟件公司,基本是進行二次開發,週期長,每次都需要經過下面幾個完整的測試流程:

  客戶提出需求--BA和客戶溝通,確定出需求和解決方案--測試人員根據需求說明書和解決方案編寫測試用例---進行概要評審--進行詳細設計評審--開始測試--迴歸測試--生產驗證。

  現在的互聯網產品測試基本爲:

  產品經理確定好測試需求--開發人員寫詳設-(此階段可以進行設計bug檢查)--開發人員開發--測試人員測試,上線

  來不及測試設計,來不及自動化,短時間內如何保證測試的覆蓋率和質量?--(探索式測試應勢而生)

 

3.更多的人蔘與到測試中

  互聯網公司有專門的測試團隊的比較少,一般開發和測試比例: 7:1,如何保證質量?

  1)開發人員的自測

  開發人員進行單元測試測試用例的通過率,同一個版本拉代碼的次數

  2)產品或運營人員的體驗

  在這裏基本我就相當於用戶,進行產品體驗,或者根據免費試用者反饋的意見進行優化

  3)發佈之前的評審

  注意環境,配置,數據方面的問題

 

4.有一些是免測試的

  並不是所有發佈到生產環境的東西都需要在測試環境檢驗,如:圖片樣式改動,小bug修復,但是哪些免測是個複雜的問題

 

5.海量用戶帶來的挑戰

  1)性能方面

   如何做輕量級的性能測試

  2)瀏覽器的兼容性

  現在的系統大多基於主流的火狐,谷歌,IE8以上,放棄瀏覽器兼容就等於放棄一部分客戶。

 

6.測試工具和技術方面

  傳統的企業花錢購買商業軟件,如QTP,loadrunner,或者自己開發的項目管理工具

  大部分的互聯網公司使用開源或自主研發的,如 selenium,appium,robotium,monkeyrunner,jmeter

  相同點:

  1.都需要非常熟悉產品和業務

  2.都需要了解產品的技術(深度測試方面性能分析,內存泄露,web服務器,cache,代理)

  3.具體的測試技術

  4.測試設計的方法

   5.測試人員的技術體系:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章