1. 程式人生 > >【功能測試】bug的預防

【功能測試】bug的預防

一.解析度相容性: 產品的網頁通常保證在1024*768的解析度下顯示正常,但是常常忽略 800*600解析度下的顯示情況,還有其他特殊要求的解析度 如果頁面設計明確只考慮1024*768的需求,則只在1024*768下驗證各個 產品頁面的顯示正確無誤 預防方法:  產品:需要明確產品需要相容的常見螢幕解析度 開發:網頁頁面的設計需要針對多種螢幕解析度制定設計規範,並依據設計規範進行開發 測試:在不同解析度下驗證頁面顯示的相容正確性 二.瀏覽器相容性: 目前市場上的主流瀏覽器如下:  IE 6.0-11,360 瀏覽器,獵豹瀏覽器,QQ 瀏覽器,Chrome 瀏覽器,FireFox 瀏覽器 通常情況下要保證IE 6-11和360 瀏覽器下的相容性,需要保證頁面不變型,Js執行均正確 預防方法: 產品:依據主流的瀏覽器市場佔比,評估你需要相容的瀏覽器  開發:針對需要相容的瀏覽器型別和版本,指定瀏覽器相容設計開發規範(CSS和Js 為主),並不斷 總結相容性的經驗教訓 測試:在產品要求相容的瀏覽器型別和版本下,進行相容性測試 三.Link問題 所有連結是否按指示那樣確實連結到了該連結的頁面 所連結的頁面是否存在 保證Web應用系統上沒有孤立的頁面,所謂孤立頁面是指沒有連結指向該 頁面 連結的開啟方式是否合理(在當前視窗中開啟、開啟新視窗) 有死鏈 預防方法: 產品:提供的需求中明確是否需要連結以及連結的位置以及連結的開啟方式 測試:死鏈測試可以採用工具自動進行
檢測工具的連結如下: http://www.csdn.net/article/2013-12-13/2817805-online-tools-for- managing-broken-links 四.快捷鍵和焦點: Tab鍵和焦點的切換: 在測試的頁面中使用Tab鍵可以在全頁面的所有元素進行焦點切換、並且要將相鄰 元素的 tab鍵切換順序做到關聯。 例如: 1. 使用者開啟登入首頁,則焦點應該預設顯示在使用者名稱輸入框中 2. 在使用者名稱輸入框輸入使用者名稱之後,按下tab鍵後,焦點應該切換到密 碼輸入框中,而不是切換到其他元素上。 3. 輸入密碼後,按下tab鍵可以將焦點切換到“儲存密碼”的複選框或者 登入按鈕 以上操作,均對偏好使用快捷鍵的使用者給於更友好的支援 預防方法: 產品:考慮頁面的預設焦點設定位置,設定tab鍵在介面上切換焦點的順序 ➢ 開發:依據產品人員的要求實現預設焦點位置,和tab 鍵的切換順序 測試:驗證預設焦點位置和tab切換的順序
五.前進、後退和重新整理問題: IE 有一個特性:就是允許前進、後退到某一個頁面或在當前頁面重新整理,在某些特殊 業務場景的要求下,使用者進行前進、後退和重新整理當前頁面的操作,會造成資料不完 整、校驗失敗或者重複提交的情況。 預防方法: 產品:明確哪些敏感頁面不允許前進、後退和重新整理,一般情況下充值和支付等相 關的頁面或者其他資料提交頁面禁止後退和重新整理後提交。 開發:從技術層面考慮後退和前進操作是否會造成系統漏洞,讓使用者重複充值或 者支付。如果使用者嘗試後退,則讓頁面強制失效或者禁止後退。 測試:和產品確認禁止後退的操作限制頁面,進行鍼對性測試 六.頁面提示語言、Js提示語言,程式提示語言: 通常情況下,產品人員並不會將產品需求細化到某句話應該如何提示使用者,所以不同的程式設計師會根據自己的語言特點來提示使用者,這就造成了不同程式設計師提示的語言風格完全不一樣,造成產品友好度下降。 預防方法: 產品:產品人員和開發人員一起制定儘可能大而全的產品提示語言規範,並且 作為規範說明提供給開發人員進行使用。 開發:遵守語言說明規範,並且針對各種系統的要求不斷補充和規範提示語  測試:測試過程中,驗證語言是否符合指定的語言規範
語言文字提示(微軟的標準): 1. 全形字元和半形字元都要使用一個空格分開 2. 英文和數字之間要有空格分開 3. 漢字和英文、數字要有空格分開 4. 帶有漢字的話要使用全形字元 5. 語言中不要混用全形和半形標點 6. 在語言中,永遠不要用“你”這個字,要做一些操作步驟描述的 時候,要多用“請”字 七.文字縮略和折行: 輸入框提交很長的純英文字母或者數字(不帶任何全形字元和中文),並且不換行,則 提交資料後,頁面可能被此相關字元拉伸的特別長。 如果要將文字後面的一些文書處理為省略號的時候,需要注意不要將中文截成半個字元 預防方法: 開發:提交公共處理字元的程式,解決上述問題,在所有輸入框中增加相關處理 測試:所有輸入框需要進行此輸入測試,保證頁面不會被使用者的惡意輸入拉長 八.圖片的顯示和連結: 圖片是否增加連結通常會被開發人員忽略掉 圖片的顯示位置通常會顯示不同畫素大小和比例的圖,所以需要明確定義大圖片如何縮減成為小圖片的策略,以及小圖片如何拉伸顯示為大的圖片 預防方法: 產品:提供的需求中明確圖片是否需要連結以及連結的url地址以及點選 後實在當前頁開啟,還是彈出新頁面開啟。明確使用者上傳圖片的 顯示方法,採用等比縮放,還是原大小顯示,還是自適應顯示 開發: 按照產品要求進行開發,針對影象的顯示開發統一顯示模組 測試:點選圖片連結,驗證圖片連結的正確性和開啟方式是否符合產品設計要求。傳不同格式的圖片(長方形圖、正方形的圖、原型 圖、超大圖和超小圖),驗證圖片顯示策略符合產品設計要求 九.重複提交: 使用者提交資料頁面,使用者有可能連續多次點選提交按鈕,造成資料的重複提交。 黑客或者不良使用者通過抓包可以獲取提交的url ,進行嘗試重複提交。 預防方法: 開發:點選“提交”後,將按鈕變為Disable狀態,禁止使用者再次點選。針對每條提 交的資料需要增加校驗引數,方式不良使用者通過其他工具惡意提交。 測試:通過頁面驗證按鈕點選後的狀態,通過工具傳送重複提交的請求,驗證系統 是否可以處理重複提交的問題(金融系統需重點測試) 十.輸入判斷問題(1): 所有鍵盤輸入的特殊字元,均可以正常儲存 需要特別處理英文單引號、英文雙引號等引起程式錯誤的問題 需要處理“<”、“/”和“\”等容易儲存出錯的字元 數字框只能輸入數字的內容 日期框需要判斷日期是否合法 文字框需要判斷欄位長是否限制了 對於空格的處理,如果系統想trim掉字串最開頭和最後的空格,則需要整個 兒系統都使用此策略,否則會造成資料傳遞不一致的問題 需要前臺頁面使用js來判斷輸入的合法性,同時後臺邏輯也要新增判斷輸入合 法性的判斷。 預防方法: 開發:開發公共處理特殊字元的模組,在系統中進行規範應用 測試:對所有輸入欄位,進行輸入判斷測試,超長、空、特殊字元、utf8字 符等,並驗證其他頁面輸入有效性,驗證前臺和後臺均加有輸入判斷邏輯。 十一.多個IE同時訪問的情況: 使用者可能開啟不同的IE使用相同的使用者登入後進行操作,程式處理的時 候要考慮到資料的一致性和同步問題 多個IE使用不同使用者,則cookie操作不會出現使用者資訊混亂的問題 預防方法: 開發:提前考慮到多個IE操作和多使用者操作的使用場景,在使用cookie本地資訊時需要做好針對性的程式處理,依據以往出現的問題設計開發規範 測試:按照多瀏覽器和多使用者的使用情況,進行更多場景的測試 十二.安全考慮: 在URL中不要帶有明文的使用者資訊寫程式碼的時候,不要把密碼等敏感 的使用者資訊明文的顯示在url中  即使要傳遞密碼引數也不要使用pwd、passpord這樣的引數名稱來 進行傳遞,防止被截 要在傳遞引數的操作中使用NoCache引數,防止將url引數進行快取 預防方法:開發: 建立資料傳輸技術規範和引數命名規範標準,嚴格參照執行, 防止資訊被攔截,造成應用系統的資訊洩露 測試:在快取目錄驗證快取資訊是否有敏感資訊,通過抓包方式驗證 是否暴露了敏感資訊 十三.安全考慮: 直接URL連結檢查: 在Web系統中,匿名在位址列直接輸入各個功能頁面的URL地址,檢查 系統是否處理了許可權控制 預防方法: 開發:程式碼走查的方式確認所有頁面的具有許可權驗證邏輯  測試:獲取所有系統url,在非登入情況下進行遍歷截圖,或關鍵字判 斷,驗證非登入狀態下無法訪問具有訪問許可權限定的 十四.防止Sql注入和跨站攻擊: 不要把資料庫或者程式的任何報錯資訊顯示在頁面上。 資料庫中設計到操作許可權的表名和欄位名不要使用過於通俗易懂的命名,尤其是使用者和密碼之類的資訊,禁止使用明文儲存密碼 頁面回顯的input text, input hidden中的文字內容需過濾 “<、>、”、’等字元(半形轉換為全形或者刪除掉),防止 Javascript 的跨站攻擊 預防方法: 開發:出錯的時候使用錯誤處理頁面,建立標準的過濾關鍵字程式, 統一資料庫設計命名規範將敏感的表名做特殊命名處理,密碼使用 Md5或其他加密方式儲存 測試:驗證所有頁面不會暴露系統的任何出錯資訊使用安全工具 appscan 或其他工具掃描系統的sql注入漏洞和跨站攻擊漏洞 十五.關於Cookie: Cookie沒有設定過期時間 IE不支援Cookie的時候沒有任何提示資訊 Cookie中的敏感資訊沒有進行加密 預防方法: 開發:明確cookie生存期,並對生成的cookie進行檢查, 建立標準的檢查瀏覽器對cookie支援的程式函式 測試:檢查cookie的生存週期,以及是否存在敏感內容 請大家回答一下cookie 和 session 的區別,如果cookie功能關閉了,對 於session 是否有影響? 十六.各種資源連線的釋放: 有的時候,系統莫名訪問不了,有可能是資料庫連線沒有釋放 壓力測試的時候,連線釋放如果效率不高,則有可能出現大量連線超時失敗 記憶體洩露,長時間工作記憶體被佔滿了。 預防方法: 開發:系統資源的釋放過程,最好通過程式碼review的方式來互相監督 測試:進行穩定性測試,驗證長時間工作情況下的資源是否可以釋放 關於Keepalive的設定: 如果需要在一個連線同時獲取多個資源,則需要開啟apache或者resin的Keepalive 引數為On,來提高系統的處理能力,減少多次建立連線所消耗的資源。如果 大量的處理只是一次性連線,則不要開啟Keepalive設定。 在實際工作中,需要將keepalive分別設定On或者Off來驗證哪個設定的效能更好。 十七.系統上線的log配置: 上線以後,要關閉無用大量除錯log資訊 不要開啟過多的log 預防方法: 運維和開發:系統管理員對所有開啟log級別進行確認,並群發相關人確認 使用者易用性: 使用者刪除某個資料前,要明確提示使用者是否要刪除,預設把焦點選擇為 “否”。 預防方法: 開發:按照上述要求進行焦點設定  測試:進行測試確認 十八.文件: 程式實現和介面文件描述不一致 預防方法: 開發:團隊中專人定期對介面文件進行稽核和更新,保證文件、需求 變更和程式實現保持一致 測試:僅參照文件進行測試 多表操作: 詳細設計文件缺失,介面對多表進行操作時候,經常會發生有些表的資料沒有被更新的情況 預防方法: 開發:稽核設計文件是否覆蓋必要的邏輯,加強程式碼審查 測試:通過查詢介面判斷所有插入介面的資料庫操作是否正確 十九.引數的容錯處理: 介面沒有對引數進行必要的容錯,引數出現錯誤的時候,介面也沒有做相應的錯誤處理,文件也沒有描述容錯機制和返回程式碼 預防方法: 開發:明確每個介面對哪些情況進行必要的容錯,並寫到設計文件中,由Leader 進行文件稽核 測試:嚴格按照介面文件的容錯描述進行測試,並且可以結合引數型別和非法引數進行結合測試