教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

軟件測試必須了解知識點(diǎn):web產(chǎn)品常見BUG及預(yù)防

更新時(shí)間:2018年03月29日17時(shí)48分 來源:傳智播客 瀏覽次數(shù):

測試人員在每次版本迭代中,會對項(xiàng)目的整體質(zhì)量有一個(gè)把控,對于項(xiàng)目常見的問題,開發(fā)經(jīng)常犯的錯(cuò)誤都會有所了解,為了避免或者減少這樣的錯(cuò)誤或不規(guī)范的事情在發(fā)生,測試人員可以整理構(gòu)建屬于產(chǎn)品的bug預(yù)防體系,總結(jié)項(xiàng)目經(jīng)常出現(xiàn)bug的種類、位置、以及可以提出針對性的規(guī)避措施,提高產(chǎn)品質(zhì)量。

1、分辨率兼容性

l 產(chǎn)品的網(wǎng)頁通常保證在1024*768的分辨率下顯示正常,但是常常忽略

800*600分辨率下的顯示情況,還有其他特殊要求的分辨率

l 如果頁面設(shè)計(jì)明確只考慮1024*768的需求,則只在1024*768下驗(yàn)證各個(gè)

產(chǎn)品頁面的顯示正確無誤

預(yù)防方法:

Ø 產(chǎn)品:需要明確產(chǎn)品需要兼容的常見屏幕分辨率

Ø 開發(fā):網(wǎng)頁頁面的設(shè)計(jì)需要針對多種屏幕分辨率制定設(shè)計(jì)規(guī)范,并依據(jù)設(shè)計(jì)規(guī)范進(jìn)行開發(fā)

Ø 測試:在不同分辨率下驗(yàn)證頁面顯示的兼容正確性

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è)計(jì)開發(fā)規(guī)(CSS和Js 為主),并不斷總結(jié)兼容性的經(jīng)驗(yàn)教訓(xùn)

Ø 測試:在產(chǎn)品要求兼容的瀏覽器類型和版本下,進(jìn)行兼容性測試

3、Link 問題

所有鏈接是否按指示那樣確實(shí)鏈接到了該鏈接的頁面

l 所鏈接的頁面是否存在

l 保證Web應(yīng)用系統(tǒng)上沒有孤立的頁面,所謂孤立頁面是指沒有鏈接指向該頁面

l 鏈接的打開方式是否合理(在當(dāng)前窗口中打開、打開新窗口)

l 有死鏈

預(yù)防方法:

Ø 產(chǎn)品:提供的需求中明確是否需要鏈接以及鏈接的位置以及鏈接的打

開方式

Ø 測試:死鏈測試可以采用工具自動進(jìn)行

4、快捷鍵和焦點(diǎn)

Tab鍵和焦點(diǎn)的切換:在測試的頁面中使用Tab鍵可以在全頁面的所有元素進(jìn)行焦點(diǎn)切換、并且要將相鄰元素的tab鍵切換順序做到關(guān)聯(lián)。

如:

a. 用戶打開登錄首頁,則焦點(diǎn)應(yīng)該默認(rèn)顯示在用戶名輸入框中

b. 在用戶名輸入框輸入用戶名之后,按下tab 鍵后,焦點(diǎn)應(yīng)該切換到密碼輸入框中,而不是切換到其他元素上。

c. 輸入密碼后,按下tab鍵可將焦點(diǎn)切換到“保存密碼”的復(fù)選框或者登錄按鈕以上操作,均對偏好使用快捷鍵的用戶給于更友好的支持。

預(yù)防方法:

Ø 產(chǎn)品:考慮頁面的默認(rèn)焦點(diǎn)設(shè)定位置,設(shè)定tab鍵在界面上切換焦點(diǎn)的順

Ø 開發(fā):依據(jù)產(chǎn)品人員的要求實(shí)現(xiàn)默認(rèn)焦點(diǎn)位置,和tab 鍵的切換順序

Ø 測試:驗(yàn)證默認(rèn)焦點(diǎn)位置和tab切換的順序

5、前進(jìn)、后退和刷新

IE 有一個(gè)特性:就是允許前進(jìn)、后退到某一個(gè)頁面或在當(dāng)前頁面刷新,在某些特殊業(yè)務(wù)場景的要求下,用戶進(jìn)行前進(jìn)、后退和刷新當(dāng)前頁面的操作,會造成數(shù)據(jù)不完整、校驗(yàn)失敗或者重復(fù)提交的情況。

預(yù)防方法:

Ø 產(chǎn)品:明確哪些敏感頁面不允許前進(jìn)、后退和刷新,一般情況下充值和支付等相關(guān)的頁面或者其他數(shù)據(jù)提交頁面禁止后退和刷新后提交。

Ø 開發(fā):從技術(shù)層面考慮后退和前進(jìn)操作是否會造成系統(tǒng)漏洞,讓用戶重復(fù)充值或者支付。如果用戶嘗試后退,則讓頁面強(qiáng)制失效或者禁止后退。

Ø 測試:和產(chǎn)品確認(rèn)禁止后退的操作限制頁面,進(jìn)行針對性測試

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

通常情況下,產(chǎn)品人員并不會將產(chǎn)品需求細(xì)化到某句話應(yīng)該如何提示用戶,所以不同的程序員會根據(jù)自己的語言特點(diǎn)來提示用戶,這就造成了不同程序員提示的語言風(fēng)格完全不一樣,造成產(chǎn)品友好度下降。

預(yù)防方法:

Ø 產(chǎn)品:產(chǎn)品人員和開發(fā)人員一起制定盡可能大而全的產(chǎn)品提示語言規(guī)范,并且作為規(guī)范說明提供給開發(fā)人員進(jìn)行使用。

Ø 開發(fā):遵守語言說明規(guī)范,并且針對各種系統(tǒng)的要求不斷補(bǔ)充和規(guī)范提示

Ø 測試:測試過程中,驗(yàn)證語言是否符合指定的語言規(guī)范

7、語言文字提示:

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

b. 英文和數(shù)字之間要有空格分開

c. 漢字和英文、數(shù)字要有空格分開

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

e. 語言中不要混用全角和半角標(biāo)點(diǎn)

f. 在語言中,永遠(yuǎn)不要用“你”這個(gè)字,要做一些操作步驟描述的時(shí)候,要多用“請”字

8、文字縮略和折行

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

預(yù)防方法:

Ø 開發(fā):提交公共處理字符的程序,解決上述問題,在所有輸入框中增加相關(guān)處理

Ø 測試:所有輸入框需要進(jìn)行此輸入測試,保證頁面不會被用戶的惡意輸入拉長

9、圖片的顯示和鏈接

圖片是否增加鏈接通常會被開發(fā)人員忽略掉圖片的顯示位置通常會顯示不同像素大小和比例的圖,所以需要明確定義大圖片如何縮減成為小圖片的策略,以及小圖片如何拉伸顯示為大的圖片。

預(yù)防方法:

Ø 產(chǎn)品:提供的需求中明確圖片是否需要鏈接以及鏈接的url地址以及點(diǎn)擊后實(shí)在當(dāng)前頁打開,還是彈出新頁面打開。明確用戶上傳圖片的顯示方法,采用等比縮放,還是原大小顯示,還是自適應(yīng)顯示

Ø 開發(fā):按照產(chǎn)品要求進(jìn)行開發(fā),針對圖像的顯示開發(fā)統(tǒng)一顯示模塊

Ø 測試:點(diǎn)擊圖片鏈接,驗(yàn)證圖片鏈接的正確性和打開方式是否符合產(chǎn)品設(shè)計(jì)要求。傳不同格式的圖片(長方形圖、正方形的圖、原型圖、超大圖和超小圖),驗(yàn)證圖片顯示策略符合產(chǎn)品

10、重復(fù)提交

用戶提交數(shù)據(jù)頁面,用戶有可能連續(xù)多次點(diǎn)擊提交按鈕,造成數(shù)據(jù)的重復(fù)提交。

黑客或者不良用戶通過抓包可以獲取提交的url ,進(jìn)行嘗試重復(fù)提交。

預(yù)防方法:

Ø 開發(fā):點(diǎn)擊“提交”后,將按鈕變?yōu)镈isable狀態(tài),禁止用戶再次點(diǎn)擊。針對每條提交的數(shù)據(jù)需要增加校驗(yàn)參數(shù),方式不良用戶通過其他工具惡意提交。

Ø 測試:通過頁面驗(yàn)證按鈕點(diǎn)擊后的狀態(tài),通過工具發(fā)送重復(fù)提交的請求,驗(yàn)證系統(tǒng)是否可以處理重復(fù)提交的問題(金融系統(tǒng)需重點(diǎn)測試)

11、 輸入判斷問題

l 所有鍵盤輸入的特殊字符,均可以正常保存

l 需要特別處理英文單引號、英文雙引號等引起程序錯(cuò)誤的問題

l 需要處理“<”、“/”和“”等容易保存出錯(cuò)的字符

l 數(shù)字框只能輸入數(shù)字的內(nèi)容

l 日期框需要判斷日期是否合法

l 文本框需要判斷字段長是否限制了

l 對于空格的處理,如果系統(tǒng)想trim掉字符串最開頭和最后的空格,則需要整個(gè)兒系統(tǒng)都使用此策略,否則會造成數(shù)據(jù)傳遞不一致的問題

l 需要前臺頁面使用js來判斷輸入的合法性,同時(shí)后臺邏輯也要添加判斷輸入合

預(yù)防方法:

Ø 開發(fā):開發(fā)公共處理特殊字符的模塊,在系統(tǒng)中進(jìn)行規(guī)范應(yīng)用

Ø 測試:對所有輸入字段,進(jìn)行輸入判斷測試,超長、空、特殊字符、utf8字符等,并驗(yàn)證其他頁面輸入有效性,驗(yàn)證前臺和后臺均加有輸入判斷邏輯。

12、多個(gè)ie 同時(shí)訪問

l 用戶可能打開不同的IE使用相同的用戶登錄后進(jìn)行操作,程序處理的時(shí)候要考慮到數(shù)據(jù)的一致性和同步問題

l 多個(gè)IE使用不同用戶,則cookie操作不會出現(xiàn)用戶信息混亂的問題

預(yù)防方法:

Ø 開發(fā):提前考慮到多個(gè)IE操作和多用戶操作的使用場景,在使用cookie本地信息時(shí)需要做好針對性的程序處理,依據(jù)以往出現(xiàn)的問題設(shè)計(jì)開發(fā)規(guī)范

Ø 測試:按照多瀏覽器和多用戶的使用情況,進(jìn)行更多場景的測試

13、安全考慮

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

l 即使要傳遞密碼參數(shù)也不要使用pwd、passpord這樣的參數(shù)名稱來進(jìn)行傳遞,防止被截獲

l 要在傳遞參數(shù)的操作中使用NoCache參數(shù),防止將url參數(shù)進(jìn)行緩存

預(yù)防方法:

Ø 開發(fā):建立數(shù)據(jù)傳輸技術(shù)規(guī)范和參數(shù)命名規(guī)范標(biāo)準(zhǔn),嚴(yán)格參照執(zhí)行,防止信息被攔截,造成應(yīng)用系統(tǒng)的信息泄露

Ø 測試:在緩存目錄驗(yàn)證緩存信息是否有敏感信息,通過抓包方式驗(yàn)證是否暴露了敏感信息

14、 直接URL 鏈接檢查

在Web系統(tǒng)中,匿名在地址欄直接輸入各個(gè)功能頁面的URL地址,檢查

系統(tǒng)是否處理了權(quán)限控制

預(yù)防方法:

Ø 開發(fā):代碼走查的方式確認(rèn)所有頁面的具有權(quán)限驗(yàn)證邏輯

Ø 測試:獲取所有系統(tǒng)url,在非登錄情況下進(jìn)行遍歷截圖,或關(guān)鍵字判斷,驗(yàn)證非登錄狀態(tài)下無法訪問具有訪問權(quán)限限定的

15、防止sql 注入和跨站攻擊

l 不要把數(shù)據(jù)庫或者程序的任何報(bào)錯(cuò)信息顯示在頁面上。

l 數(shù)據(jù)庫中設(shè)計(jì)到操作權(quán)限的表名和字段名不要使用過于通俗易懂的命名,尤其是用戶和密碼之類的信息,禁止使用明文存儲密碼

l 頁面回顯的input text, input hidden中的文本內(nèi)容需過濾“<、>、”、’等字符(半角轉(zhuǎn)換為全角或者刪除掉),防止Java 的跨站攻擊

預(yù)防方法:

Ø 開發(fā):出錯(cuò)的時(shí)候使用錯(cuò)誤處理頁面,建立標(biāo)準(zhǔn)的過濾關(guān)鍵字程序,統(tǒng)一數(shù)據(jù)庫設(shè)計(jì)命名規(guī)范將敏感的表名做特殊命名處理,密碼使用Md5或其他加密方式保存

Ø 測試:驗(yàn)證所有頁面不會暴露系統(tǒng)的任何出錯(cuò)信息使用安全工具appscan 或其他工具掃描系統(tǒng)的sql注入漏洞和跨站攻擊漏洞

16、關(guān)于cookie

Cookie沒有設(shè)定過期時(shí)間IE不支持Cookie的時(shí)候沒有任何提示信息Cookie中的敏感信息沒有進(jìn)行加密

預(yù)防方法:

Ø 開發(fā):明確cookie生存期,并對生成的cookie進(jìn)行檢查,建立標(biāo)準(zhǔn)的檢查瀏覽器對cookie支持的程序函數(shù)

Ø 測試:檢查cookie的生存周期,以及是否存在敏感內(nèi)容

17、各種資源鏈接的釋放

有的時(shí)候,系統(tǒng)莫名訪問不了,有可能是數(shù)據(jù)庫連接沒有釋放壓力測試的時(shí)候,連接釋放如果效率不高,則有可能出現(xiàn)大量連接超時(shí)失敗內(nèi)存泄露,長時(shí)間工作內(nèi)存被占滿了。

預(yù)防方法:

Ø 開發(fā):系統(tǒng)資源的釋放過程,最好通過代碼review的方式來互相監(jiān)督

Ø 測試:進(jìn)行穩(wěn)定性測試,驗(yàn)證長時(shí)間工作情況下的資源是否可以釋放

關(guān)于keepalive的設(shè)置:

如果需要在一個(gè)連接同時(shí)獲取多個(gè)資源,則需要打開apache或者resin的Keepalive參數(shù)為On,來提高系統(tǒng)的處理能力,減少多次建立連接所消耗的資源。如果大量的處理只是一次性連接,則不要打開Keepalive設(shè)置。在實(shí)際工作中,需要將keepalive分別設(shè)置On或者Off來驗(yàn)證哪個(gè)設(shè)置的性能更好。

18、系統(tǒng)上線的log 配置

上線以后,要關(guān)閉無用大量調(diào)試log信息不要打開過多的log

預(yù)防方法:

Ø 運(yùn)維和開發(fā):系統(tǒng)管理員對所有打開log級別進(jìn)行確認(rèn),并群發(fā)相關(guān)人確認(rèn)

19、用戶易用性

用戶刪除某個(gè)數(shù)據(jù)前,要明確提示用戶是否要?jiǎng)h除,默認(rèn)把焦點(diǎn)選擇為“否”。

預(yù)防方法:

Ø 開發(fā):按照上述要求進(jìn)行焦點(diǎn)設(shè)定

Ø 測試:進(jìn)行測試確認(rèn)

20、 文檔

程序?qū)崿F(xiàn)和接口文檔描述不一致

預(yù)防方法:

Ø 開發(fā):團(tuán)隊(duì)中專人定期對接口文檔進(jìn)行審核和更新,保證文檔、需求變更和程序?qū)崿F(xiàn)保持一致

Ø 測試:僅參照文檔進(jìn)行測試

21、多表操作

詳細(xì)設(shè)計(jì)文檔缺失,接口對多表進(jìn)行操作時(shí)候,經(jīng)常會發(fā)生有些表的數(shù)據(jù)沒有被更新的情況

預(yù)防方法:

Ø 開發(fā):審核設(shè)計(jì)文檔是否覆蓋必要的邏輯,加強(qiáng)代碼審查

Ø 測試:通過查詢接口判斷所有插入接口的數(shù)據(jù)庫操作是否正確

測試人員通過在測試過程中不斷總結(jié)和積累,將相關(guān)總結(jié)經(jīng)驗(yàn)給開發(fā)進(jìn)行培訓(xùn),讓他們了解這些常見的問題,在自測時(shí)注意這些問題,提高送測產(chǎn)品的質(zhì)量。

本文版權(quán)歸傳智播客軟件測試學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
 
作者:傳智播客軟件測試培訓(xùn)學(xué)院
 
首發(fā):http://test.itcast.cn/

0 分享到:
和我們在線交談!