1. 程式人生 > >Web常見產品問題及預防

Web常見產品問題及預防

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

1. 解析度相容性
Ø  產品的網頁通常保證在1024*768的解析度下顯示正常,但是常常忽略
800*600解析度下的顯示情況,還有其他特殊要求的解析度
Ø  如果頁面設計明確只考慮1024*768的需求,則只在1024*768下驗證各個
產品頁面的顯示正確無誤
預防方法:
Ø  產品:需要明確產品需要相容的常見螢幕解析度
Ø  開發:網頁頁面的設計需要針對多種螢幕解析度制定設計規範,並依據設計規範進行開發
Ø  測試:在不同解析度下驗證頁面顯示的相容正確性
 
2. 瀏覽器相容性
目前市場上的主流瀏覽器如下:
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. 多表操作
詳細設計文件缺失,介面對多表進行操作時候,經常會發生有些表的資料沒有被更新的情況
預防方法:
Ø  開發:稽核設計文件是否覆蓋必要的邏輯,加強程式碼審查
Ø  測試:通過查詢介面判斷所有插入介面的資料庫操作是否正確

等等,這些我們完全可以在不斷測試過程中進行總結和積累,可以給開發進行培訓,讓他們瞭解這些常見的問題,在自測時注意這些問題,提高送測產品的質