Bug預防體系

Web常見產品問題及預防程序員

 

測試人員在每次版本迭代中,會對項目的總體質量有一個把控,對於項目常見的問題,開發常常犯的錯誤都會有所瞭解,爲了不或者減小這樣的錯誤或不規範的事情在發生,測試人員能夠整理構建屬於產品的bug預防體系,總結項目常常出現bug的種類、位置、以及能夠提出針對性的規避措施,提升產品質量。sql

 

1. 分辨率兼容性

Ø  產品的網頁一般保證在1024*768的分辨率下顯示正常,可是經常忽略
800*600分辨率下的顯示狀況,還有其餘特殊要求的分辨率數據庫

Ø  若是頁面設計明確只考慮1024*768的需求,則只在1024*768下驗證各個
產品頁面的顯示正確無誤apache

預防方法:瀏覽器

Ø  產品:須要明確產品須要兼容的常見屏幕分辨率緩存

Ø  開發:網頁頁面的設計須要針對多種屏幕分辨率制定設計規範,並依據設計規範進行開發安全

Ø  測試:在不一樣分辨率下驗證頁面顯示的兼容正確性cookie

 

2. 瀏覽器兼容性

目前市場上的主流瀏覽器以下:app

a. IE 6.0-11運維

b. 360 瀏覽器

c. 獵豹瀏覽器

d. QQ 瀏覽器

e. Chrome 瀏覽器

f. FireFox 瀏覽器

一般狀況下要保證IE6-11和360 瀏覽器下的兼容性,須要保證頁面不變型,
Js執行均正確

預防方法:

Ø  產品:依據主流的瀏覽器市場佔比,評估你須要兼容的瀏覽器

Ø  開發:針對須要兼容的瀏覽器類型和版本,指定瀏覽器兼容設計開發規( CSS和Js 爲主),並不斷總結兼容性的經驗教訓

Ø  測試:在產品要求兼容的瀏覽器類型和版本下,進行兼容性測試

 

3. Link問題

全部連接是否按指示那樣確實連接到了該連接的頁面

Ø  所連接的頁面是否存在

Ø  保證Web應用系統上沒有孤立的頁面,所謂孤立頁面是指沒有連接指向該頁面

Ø  連接的打開方式是否合理(在當前窗口中打開、打開新窗口)

Ø  有死鏈

預防方法:

Ø  產品:提供的需求中明確是否須要連接以及連接的位置以及連接的打
開方式

Ø  測試:死鏈測試能夠採用工具自動進行

 

4. 快捷鍵和焦點

Tab鍵和焦點的切換:在測試的頁面中使用Tab鍵能夠在全頁面的全部元素進行焦點切換、而且要將相鄰元素的 tab鍵切換順序作到關聯。

如:

a. 用戶打開登陸首頁,則焦點應該默認顯示在用戶名輸入框中

b. 在用戶名輸入框輸入用戶名以後,按下tab 鍵後,焦點應該切換到密碼輸入框中,而不是切換到其餘元素上。

c. 輸入密碼後,按下tab鍵可將焦點切換到「保存密碼」的複選框或者登陸按鈕以上操做,均對偏好使用快捷鍵的用戶給於更友好的支持。

預防方法:

Ø  產品:考慮頁面的默認焦點設定位置,設定tab鍵在界面上切換焦點的順序

Ø  開發:依據產品人員的要求實現默認焦點位置,和tab 鍵的切換順序

Ø  測試:驗證默認焦點位置和tab切換的順序

 

5. 前進、後退和刷新

IE 有一個特性:就是容許前進、後退到某一個頁面或在當前頁面刷新,在某些特殊業務場景的要求下,用戶進行前進、後退和刷新當前頁面的操做,會形成數據不完整、校驗失敗或者重複提交的狀況。

預防方法:

Ø  產品:明確哪些敏感頁面不容許前進、後退和刷新,通常狀況下充值和支付等相關的頁面或者其餘數據提交頁面禁止後退和刷新後提交。

Ø  開發:從技術層面考慮後退和前進操做是否會形成系統漏洞,讓用戶重複充值或者支付。若是用戶嘗試後退,則讓頁面強制失效或者禁止後退。

Ø  測試:和產品確認禁止後退的操做限制頁面,進行鍼對性測試

 

6. 頁面提示語言、js提示語言、程序提示語言

一般狀況下,產品人員並不會將產品需求細化到某句話應該如何提示用戶,因此不一樣的程序員會根據本身的語言特色來提示用戶,這就形成了不一樣程序員提示的語言風格徹底不同,形成產品友好度降低。

預防方法:

Ø  產品:產品人員和開發人員一塊兒制定儘量大而全的產品提示語言規範,而且做爲規範說明提供給開發人員進行使用。

Ø  開發:遵照語言說明規範,而且針對各類系統的要求不斷補充和規範提示

Ø  測試:測試過程當中,驗證語言是否符合指定的語言規範

語言文字提示:

a. 全角字符和半角字符都要使用一個空格分開

b. 英文和數字之間要有空格分開

c. 漢字和英文、數字要有空格分開

d. 帶有漢字的話要使用全角字符

e. 語言中不要混用全角和半角標點

f. 在語言中,永遠不要用「你」這個字,要作一些操做步驟描述的時候,要多用「請」字

 

7. 文字縮略和折行

輸入框提交很長的純英文字母或者數字(不帶任何全角字符和中文),而且不換行,則提交數據後,頁面可能被此相關字符拉伸的特別長。

預防方法:

Ø  開發:提交公共處理字符的程序,解決上述問題,在全部輸入框中增長相關處理

Ø  測試:全部輸入框須要進行此輸入測試,保證頁面不會被用戶的惡意輸入拉長

 

8. 圖片的顯示和連接

圖片是否增長連接一般會被開發人員忽略掉圖片的顯示位置一般會顯示不一樣像素大小和比例的圖,因此須要明肯定義大圖片如何縮減成爲小圖片的策略,以及小圖片如何拉伸顯示爲大的圖片。

預防方法:

Ø  產品:提供的需求中明確圖片是否須要連接以及連接的url地址以及點擊後實在當前頁打開,仍是彈出新頁面打開。明確用戶上傳圖片的顯示方法,採用等比縮放,仍是原大小顯示,仍是自適應顯示

Ø  開發: 按照產品要求進行開發,針對圖像的顯示開發統一顯示模塊

Ø  測試:點擊圖片連接,驗證圖片連接的正確性和打開方式是否符合產品設計要求。傳不一樣格式的圖片(長方形圖、正方形的圖、原型圖、超大圖和超小圖),驗證圖片顯示策略符合產品

 

9. 重複提交

用戶提交數據頁面,用戶有可能連續屢次點擊提交按鈕,形成數據的重複提交。

黑客或者不良用戶經過抓包能夠獲取提交的url ,進行嘗試重複提交。

預防方法:

Ø  開發:點擊「提交」後,將按鈕變爲Disable狀態,禁止用戶再次點擊。針對每條提交的數據須要增長校驗參數,方式不良用戶經過其餘工具惡意提交。

Ø  測試:經過頁面驗證按鈕點擊後的狀態,經過工具發送重複提交的請求,驗證系統是否能夠處理重複提交的問題(金融系統需重點測試)

 

10. 輸入判斷問題

Ø  全部鍵盤輸入的特殊字符,都可以正常保存

Ø  須要特別處理英文單引號、英文雙引號等引發程序錯誤的問題

Ø  須要處理「 <」、「 /」和「 \」等容易保存出錯的字符

Ø  數字框只能輸入數字的內容

Ø  日期框須要判斷日期是否合法

Ø  文本框須要判斷字段長是否限制了

Ø  對於空格的處理,若是系統想trim掉字符串最開頭和最後的空格,則須要整個兒系統都使用此策略,不然會形成數據傳遞不一致的問題

Ø  須要前臺頁面使用js來判斷輸入的合法性,同時後臺邏輯也要添加判斷輸入合

預防方法:

Ø  開發:開發公共處理特殊字符的模塊,在系統中進行規範應用

Ø  測試:對全部輸入字段,進行輸入判斷測試,超長、空、特殊字符、 utf8字符等,並驗證其餘頁面輸入有效性,驗證前臺和後臺均加有輸入判斷邏輯。

 

11. 多個ie同時訪問

Ø  用戶可能打開不一樣的IE使用相同的用戶登陸後進行操做,程序處理的時候要考慮到數據的一致性和同步問題

Ø  多個IE使用不一樣用戶,則cookie操做不會出現用戶信息混亂的問題

預防方法:

Ø  開發:提早考慮到多個IE操做和多用戶操做的使用場景,在使用cookie本地信息時須要作好針對性的程序處理,依據以往出現的問題設計開發規範

Ø  測試:按照多瀏覽器和多用戶的使用狀況,進行更多場景的測試

 

12. 安全考慮

Ø  在URL中不要帶有明文的用戶信息寫代碼的時候,不要把密碼等敏感的用戶信息明文的顯示在url中

Ø   即便要傳遞密碼參數也不要使用pwd、 passpord這樣的參數名稱來進行傳遞,防止被截獲

Ø  要在傳遞參數的操做中使用NoCache參數,防止將url參數進行緩存

預防方法:

Ø  開發: 創建數據傳輸技術規範和參數命名規範標準,嚴格參照執行,防止信息被攔截,形成應用系統的信息泄露

Ø  測試:在緩存目錄驗證緩存信息是否有敏感信息,經過抓包方式驗證是否暴露了敏感信息

 

13. 直接URL連接檢查

在Web系統中,匿名在地址欄直接輸入各個功能頁面的URL地址,檢查
系統是否處理了權限控制 

預防方法:

Ø  開發:代碼走查的方式確認全部頁面的具備權限驗證邏輯

Ø  測試:獲取全部系統url,在非登陸狀況下進行遍歷截圖,或關鍵字判斷,驗證非登陸狀態下沒法訪問具備訪問權限限定的

 

14. 防止sql注入和跨站攻擊

Ø  不要把數據庫或者程序的任何報錯信息顯示在頁面上。

Ø  數據庫中設計到操做權限的表名和字段名不要使用過於通俗易懂的命名,尤爲是用戶和密碼之類的信息,禁止使用明文存儲密碼

Ø  頁面回顯的input text, input hidden中的文本內容需過濾 「 <、 >、 」、’等字符(半角轉換爲全角或者刪除掉),防止 Javascript 的跨站攻擊

預防方法:

Ø  開發:出錯的時候使用錯誤處理頁面,創建標準的過濾關鍵字程序,統一數據庫設計命名規範將敏感的表名作特殊命名處理,密碼使用Md5或其餘加密方式保存

Ø  測試:驗證全部頁面不會暴露系統的任何出錯信息使用安全工具appscan 或其餘工具掃描系統的sql注入漏洞和跨站攻擊漏洞

 

15. 關於cookie

Cookie沒有設定過時時間IE不支持Cookie的時候沒有任何提示信息Cookie中的敏感信息沒有進行加密

預防方法:

Ø  開發:明確cookie生存期,並對生成的cookie進行檢查,創建標準的檢查瀏覽器對cookie支持的程序函數

Ø  測試:檢查cookie的生存週期,以及是否存在敏感內容

 

16. 各類資源連接的釋放

有的時候,系統莫名訪問不了,有多是數據庫鏈接沒有釋放壓力測試的時候,鏈接釋放若是效率不高,則有可能出現大量鏈接超時失敗內存泄露,長時間工做內存被佔滿了。

預防方法:

Ø  開發:系統資源的釋放過程,最好經過代碼review的方式來互相監督

Ø  測試:進行穩定性測試,驗證長時間工做狀況下的資源是否能夠釋放

關於keepalive的設置:

若是須要在一個鏈接同時獲取多個資源,則須要打開apache或者resin的Keepalive參數爲On,來提升系統的處理能力,減小屢次創建鏈接所消耗的資源。若是大量的處理只是一次性鏈接,則不要打開Keepalive設置。在實際工做中,須要將keepalive分別設置On或者Off來驗證哪一個設置的性能更好。

 

17. 系統上線的log配置

上線之後,要關閉無用大量調試log信息不要打開過多的log

預防方法:

運維和開發:系統管理員對全部打開log級別進行確認,並羣發相關人確認

 

18. 用戶易用性

用戶刪除某個數據前,要明確提示用戶是否要刪除,默認把焦點選擇爲「否」。

預防方法:

Ø  開發:按照上述要求進行焦點設定

Ø  測試:進行測試確認

 

19. 文檔

程序實現和接口文檔描述不一致

預防方法:

Ø  開發:團隊中專人按期對接口文檔進行審覈和更新,保證文檔、需求變動和程序實現保持一致

Ø  測試:僅參照文檔進行測試

 

20. 多表操做

詳細設計文檔缺失,接口對多表進行操做時候,常常會發生有些表的數據沒有被更新的狀況

預防方法:

Ø  開發:審覈設計文檔是否覆蓋必要的邏輯,增強代碼審查

Ø  測試:經過查詢接口判斷全部插入接口的數據庫操做是否正確

相關文章
相關標籤/搜索