更新時間:2018年03月29日17時48分 來源:傳智播客 瀏覽次數(shù):
測試人員在每次版本迭代中,會對項目的整體質(zhì)量有一個把控,對于項目常見的問題,開發(fā)經(jīng)常犯的錯誤都會有所了解,為了避免或者減少這樣的錯誤或不規(guī)范的事情在發(fā)生,測試人員可以整理構(gòu)建屬于產(chǎn)品的bug預(yù)防體系,總結(jié)項目經(jīng)常出現(xiàn)bug的種類、位置、以及可以提出針對性的規(guī)避措施,提高產(chǎn)品質(zhì)量。
1、分辨率兼容性
l 產(chǎn)品的網(wǎng)頁通常保證在1024*768的分辨率下顯示正常,但是常常忽略
800*600分辨率下的顯示情況,還有其他特殊要求的分辨率
l 如果頁面設(shè)計明確只考慮1024*768的需求,則只在1024*768下驗證各個
產(chǎn)品頁面的顯示正確無誤
預(yù)防方法:
Ø 產(chǎn)品:需要明確產(chǎn)品需要兼容的常見屏幕分辨率
Ø 開發(fā):網(wǎng)頁頁面的設(shè)計需要針對多種屏幕分辨率制定設(shè)計規(guī)范,并依據(jù)設(shè)計規(guī)范進行開發(fā)
Ø 測試:在不同分辨率下驗證頁面顯示的兼容正確性
2、瀏覽器兼容性
目前市場上的主流瀏覽器如下:
a. IE 6.0-11
b. 360 瀏覽器
c. 獵豹瀏覽器
d. QQ 瀏覽器
e. Chrome 瀏覽器
f. FireFox 瀏覽器
通常情況下要保證IE6-11和360 瀏覽器下的兼容性,需要保證頁面不變型,
Js執(zhí)行均正確
預(yù)防方法:
Ø 產(chǎn)品:依據(jù)主流的瀏覽器市場占比,評估你需要兼容的瀏覽器
Ø 開發(fā):針對需要兼容的瀏覽器類型和版本,指定瀏覽器兼容設(shè)計開發(fā)規(guī)(CSS和Js 為主),并不斷總結(jié)兼容性的經(jīng)驗教訓(xùn)
Ø 測試:在產(chǎn)品要求兼容的瀏覽器類型和版本下,進行兼容性測試
3、Link 問題
所有鏈接是否按指示那樣確實鏈接到了該鏈接的頁面
l 所鏈接的頁面是否存在
l 保證Web應(yīng)用系統(tǒng)上沒有孤立的頁面,所謂孤立頁面是指沒有鏈接指向該頁面
l 鏈接的打開方式是否合理(在當前窗口中打開、打開新窗口)
l 有死鏈
預(yù)防方法:
Ø 產(chǎn)品:提供的需求中明確是否需要鏈接以及鏈接的位置以及鏈接的打
開方式
Ø 測試:死鏈測試可以采用工具自動進行
4、快捷鍵和焦點
Tab鍵和焦點的切換:在測試的頁面中使用Tab鍵可以在全頁面的所有元素進行焦點切換、并且要將相鄰元素的tab鍵切換順序做到關(guān)聯(lián)。
如:
a. 用戶打開登錄首頁,則焦點應(yīng)該默認顯示在用戶名輸入框中
b. 在用戶名輸入框輸入用戶名之后,按下tab 鍵后,焦點應(yīng)該切換到密碼輸入框中,而不是切換到其他元素上。
c. 輸入密碼后,按下tab鍵可將焦點切換到“保存密碼”的復(fù)選框或者登錄按鈕以上操作,均對偏好使用快捷鍵的用戶給于更友好的支持。
預(yù)防方法:
Ø 產(chǎn)品:考慮頁面的默認焦點設(shè)定位置,設(shè)定tab鍵在界面上切換焦點的順
Ø 開發(fā):依據(jù)產(chǎn)品人員的要求實現(xiàn)默認焦點位置,和tab 鍵的切換順序
Ø 測試:驗證默認焦點位置和tab切換的順序
5、前進、后退和刷新
IE 有一個特性:就是允許前進、后退到某一個頁面或在當前頁面刷新,在某些特殊業(yè)務(wù)場景的要求下,用戶進行前進、后退和刷新當前頁面的操作,會造成數(shù)據(jù)不完整、校驗失敗或者重復(fù)提交的情況。
預(yù)防方法:
Ø 產(chǎn)品:明確哪些敏感頁面不允許前進、后退和刷新,一般情況下充值和支付等相關(guān)的頁面或者其他數(shù)據(jù)提交頁面禁止后退和刷新后提交。
Ø 開發(fā):從技術(shù)層面考慮后退和前進操作是否會造成系統(tǒng)漏洞,讓用戶重復(fù)充值或者支付。如果用戶嘗試后退,則讓頁面強制失效或者禁止后退。
Ø 測試:和產(chǎn)品確認禁止后退的操作限制頁面,進行針對性測試
6、頁面提示語言、js 提示語言、程序提示語言
通常情況下,產(chǎn)品人員并不會將產(chǎn)品需求細化到某句話應(yīng)該如何提示用戶,所以不同的程序員會根據(jù)自己的語言特點來提示用戶,這就造成了不同程序員提示的語言風(fēng)格完全不一樣,造成產(chǎn)品友好度下降。
預(yù)防方法:
Ø 產(chǎn)品:產(chǎn)品人員和開發(fā)人員一起制定盡可能大而全的產(chǎn)品提示語言規(guī)范,并且作為規(guī)范說明提供給開發(fā)人員進行使用。
Ø 開發(fā):遵守語言說明規(guī)范,并且針對各種系統(tǒng)的要求不斷補充和規(guī)范提示
Ø 測試:測試過程中,驗證語言是否符合指定的語言規(guī)范
7、語言文字提示:
a. 全角字符和半角字符都要使用一個空格分開
b. 英文和數(shù)字之間要有空格分開
c. 漢字和英文、數(shù)字要有空格分開
d. 帶有漢字的話要使用全角字符
e. 語言中不要混用全角和半角標點
f. 在語言中,永遠不要用“你”這個字,要做一些操作步驟描述的時候,要多用“請”字
8、文字縮略和折行
輸入框提交很長的純英文字母或者數(shù)字(不帶任何全角字符和中文),并且不換行,則提交數(shù)據(jù)后,頁面可能被此相關(guān)字符拉伸的特別長。
預(yù)防方法:
Ø 開發(fā):提交公共處理字符的程序,解決上述問題,在所有輸入框中增加相關(guān)處理
Ø 測試:所有輸入框需要進行此輸入測試,保證頁面不會被用戶的惡意輸入拉長
9、圖片的顯示和鏈接
圖片是否增加鏈接通常會被開發(fā)人員忽略掉圖片的顯示位置通常會顯示不同像素大小和比例的圖,所以需要明確定義大圖片如何縮減成為小圖片的策略,以及小圖片如何拉伸顯示為大的圖片。
預(yù)防方法:
Ø 產(chǎn)品:提供的需求中明確圖片是否需要鏈接以及鏈接的url地址以及點擊后實在當前頁打開,還是彈出新頁面打開。明確用戶上傳圖片的顯示方法,采用等比縮放,還是原大小顯示,還是自適應(yīng)顯示
Ø 開發(fā):按照產(chǎn)品要求進行開發(fā),針對圖像的顯示開發(fā)統(tǒng)一顯示模塊
Ø 測試:點擊圖片鏈接,驗證圖片鏈接的正確性和打開方式是否符合產(chǎn)品設(shè)計要求。傳不同格式的圖片(長方形圖、正方形的圖、原型圖、超大圖和超小圖),驗證圖片顯示策略符合產(chǎn)品
10、重復(fù)提交
用戶提交數(shù)據(jù)頁面,用戶有可能連續(xù)多次點擊提交按鈕,造成數(shù)據(jù)的重復(fù)提交。
黑客或者不良用戶通過抓包可以獲取提交的url ,進行嘗試重復(fù)提交。
預(yù)防方法:
Ø 開發(fā):點擊“提交”后,將按鈕變?yōu)镈isable狀態(tài),禁止用戶再次點擊。針對每條提交的數(shù)據(jù)需要增加校驗參數(shù),方式不良用戶通過其他工具惡意提交。
Ø 測試:通過頁面驗證按鈕點擊后的狀態(tài),通過工具發(fā)送重復(fù)提交的請求,驗證系統(tǒng)是否可以處理重復(fù)提交的問題(金融系統(tǒng)需重點測試)
11、 輸入判斷問題
l 所有鍵盤輸入的特殊字符,均可以正常保存
l 需要特別處理英文單引號、英文雙引號等引起程序錯誤的問題
l 需要處理“<”、“/”和“”等容易保存出錯的字符
l 數(shù)字框只能輸入數(shù)字的內(nèi)容
l 日期框需要判斷日期是否合法
l 文本框需要判斷字段長是否限制了
l 對于空格的處理,如果系統(tǒng)想trim掉字符串最開頭和最后的空格,則需要整個兒系統(tǒng)都使用此策略,否則會造成數(shù)據(jù)傳遞不一致的問題
l 需要前臺頁面使用js來判斷輸入的合法性,同時后臺邏輯也要添加判斷輸入合
預(yù)防方法:
Ø 開發(fā):開發(fā)公共處理特殊字符的模塊,在系統(tǒng)中進行規(guī)范應(yīng)用
Ø 測試:對所有輸入字段,進行輸入判斷測試,超長、空、特殊字符、utf8字符等,并驗證其他頁面輸入有效性,驗證前臺和后臺均加有輸入判斷邏輯。
12、多個ie 同時訪問
l 用戶可能打開不同的IE使用相同的用戶登錄后進行操作,程序處理的時候要考慮到數(shù)據(jù)的一致性和同步問題
l 多個IE使用不同用戶,則cookie操作不會出現(xiàn)用戶信息混亂的問題
預(yù)防方法:
Ø 開發(fā):提前考慮到多個IE操作和多用戶操作的使用場景,在使用cookie本地信息時需要做好針對性的程序處理,依據(jù)以往出現(xiàn)的問題設(shè)計開發(fā)規(guī)范
Ø 測試:按照多瀏覽器和多用戶的使用情況,進行更多場景的測試
13、安全考慮
l 在URL中不要帶有明文的用戶信息寫代碼的時候,不要把密碼等敏感的用戶信息明文的顯示在url中
l 即使要傳遞密碼參數(shù)也不要使用pwd、passpord這樣的參數(shù)名稱來進行傳遞,防止被截獲
l 要在傳遞參數(shù)的操作中使用NoCache參數(shù),防止將url參數(shù)進行緩存
預(yù)防方法:
Ø 開發(fā):建立數(shù)據(jù)傳輸技術(shù)規(guī)范和參數(shù)命名規(guī)范標準,嚴格參照執(zhí)行,防止信息被攔截,造成應(yīng)用系統(tǒng)的信息泄露
Ø 測試:在緩存目錄驗證緩存信息是否有敏感信息,通過抓包方式驗證是否暴露了敏感信息
14、 直接URL 鏈接檢查
在Web系統(tǒng)中,匿名在地址欄直接輸入各個功能頁面的URL地址,檢查
系統(tǒng)是否處理了權(quán)限控制
預(yù)防方法:
Ø 開發(fā):代碼走查的方式確認所有頁面的具有權(quán)限驗證邏輯
Ø 測試:獲取所有系統(tǒng)url,在非登錄情況下進行遍歷截圖,或關(guān)鍵字判斷,驗證非登錄狀態(tài)下無法訪問具有訪問權(quán)限限定的
15、防止sql 注入和跨站攻擊
l 不要把數(shù)據(jù)庫或者程序的任何報錯信息顯示在頁面上。
l 數(shù)據(jù)庫中設(shè)計到操作權(quán)限的表名和字段名不要使用過于通俗易懂的命名,尤其是用戶和密碼之類的信息,禁止使用明文存儲密碼
l 頁面回顯的input text, input hidden中的文本內(nèi)容需過濾“<、>、”、’等字符(半角轉(zhuǎn)換為全角或者刪除掉),防止Java 的跨站攻擊
預(yù)防方法:
Ø 開發(fā):出錯的時候使用錯誤處理頁面,建立標準的過濾關(guān)鍵字程序,統(tǒng)一數(shù)據(jù)庫設(shè)計命名規(guī)范將敏感的表名做特殊命名處理,密碼使用Md5或其他加密方式保存
Ø 測試:驗證所有頁面不會暴露系統(tǒng)的任何出錯信息使用安全工具appscan 或其他工具掃描系統(tǒng)的sql注入漏洞和跨站攻擊漏洞
16、關(guān)于cookie
Cookie沒有設(shè)定過期時間IE不支持Cookie的時候沒有任何提示信息Cookie中的敏感信息沒有進行加密
預(yù)防方法:
Ø 開發(fā):明確cookie生存期,并對生成的cookie進行檢查,建立標準的檢查瀏覽器對cookie支持的程序函數(shù)
Ø 測試:檢查cookie的生存周期,以及是否存在敏感內(nèi)容
17、各種資源鏈接的釋放
有的時候,系統(tǒng)莫名訪問不了,有可能是數(shù)據(jù)庫連接沒有釋放壓力測試的時候,連接釋放如果效率不高,則有可能出現(xiàn)大量連接超時失敗內(nèi)存泄露,長時間工作內(nèi)存被占滿了。
預(yù)防方法:
Ø 開發(fā):系統(tǒng)資源的釋放過程,最好通過代碼review的方式來互相監(jiān)督
Ø 測試:進行穩(wěn)定性測試,驗證長時間工作情況下的資源是否可以釋放
關(guān)于keepalive的設(shè)置:
如果需要在一個連接同時獲取多個資源,則需要打開apache或者resin的Keepalive參數(shù)為On,來提高系統(tǒng)的處理能力,減少多次建立連接所消耗的資源。如果大量的處理只是一次性連接,則不要打開Keepalive設(shè)置。在實際工作中,需要將keepalive分別設(shè)置On或者Off來驗證哪個設(shè)置的性能更好。
18、系統(tǒng)上線的log 配置
上線以后,要關(guān)閉無用大量調(diào)試log信息不要打開過多的log
預(yù)防方法:
Ø 運維和開發(fā):系統(tǒng)管理員對所有打開log級別進行確認,并群發(fā)相關(guān)人確認
19、用戶易用性
用戶刪除某個數(shù)據(jù)前,要明確提示用戶是否要刪除,默認把焦點選擇為“否”。
預(yù)防方法:
Ø 開發(fā):按照上述要求進行焦點設(shè)定
Ø 測試:進行測試確認
20、 文檔
程序?qū)崿F(xiàn)和接口文檔描述不一致
預(yù)防方法:
Ø 開發(fā):團隊中專人定期對接口文檔進行審核和更新,保證文檔、需求變更和程序?qū)崿F(xiàn)保持一致
Ø 測試:僅參照文檔進行測試
21、多表操作
詳細設(shè)計文檔缺失,接口對多表進行操作時候,經(jīng)常會發(fā)生有些表的數(shù)據(jù)沒有被更新的情況
預(yù)防方法:
Ø 開發(fā):審核設(shè)計文檔是否覆蓋必要的邏輯,加強代碼審查
Ø 測試:通過查詢接口判斷所有插入接口的數(shù)據(jù)庫操作是否正確
測試人員通過在測試過程中不斷總結(jié)和積累,將相關(guān)總結(jié)經(jīng)驗給開發(fā)進行培訓(xùn),讓他們了解這些常見的問題,在自測時注意這些問題,提高送測產(chǎn)品的質(zhì)量。
本文版權(quán)歸傳智播客軟件測試學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客軟件測試培訓(xùn)學(xué)院
首發(fā):http://test.itcast.cn/