建立整體的威脅模型,測(cè)試溢出漏洞、信息泄漏、錯(cuò)誤處理、SQL 注入、身份驗(yàn)證和授權(quán)錯(cuò)誤.
客戶端驗(yàn)證 服務(wù)器端驗(yàn)證(禁用腳本調(diào)試,禁用Cookies)
1.輸入很大的數(shù)(如4,294,967,269),輸入很小的數(shù)(負(fù)數(shù))
2.輸入超長(zhǎng)字符,如對(duì)輸入文字長(zhǎng)度有限制,則嘗試超過限制,剛好到達(dá)限制字?jǐn)?shù)時(shí)有何反應(yīng)
3.輸入特殊字符,如:~!@#$%^&*()_+<>:”{}|
4.輸入中英文空格,輸入字符串中間含空格,輸入首尾空格
5.輸入特殊字符串NULL,null,0x0d 0x0a
6.輸入正常字符串
7.輸入與要求不同類型的字符,如: 要求輸入數(shù)字則檢查正值,負(fù)值,零值(正零,負(fù)零),小數(shù),字母,空值; 要求輸入字母則檢查輸入數(shù)字
8.輸入html和javascript代碼
9.對(duì)于像回答數(shù)這樣需檢驗(yàn)數(shù)字正確性的測(cè)試點(diǎn),不僅對(duì)比其與問題最終頁(yè)的回答數(shù),還要對(duì)回答進(jìn)行添加刪除等操作后查看變化
例如:
1.輸入<html”>”gfhd,看是否出錯(cuò);
2.輸入,看是否出現(xiàn)文本框;
3.輸入看是否出現(xiàn)提示。
注意:
加粗是ok的
劃?rùn)M線的是還沒做的
沒有標(biāo)記的是不用檢測(cè)的。
1.輸入已注冊(cè)的用戶名和正確的密碼,驗(yàn)證是否登錄成功;
2.輸入已注冊(cè)的用戶名和不正確的密碼,驗(yàn)證是否登錄失敗,并且提示信息正確;
3.輸入未注冊(cè)的用戶名和任意密碼,驗(yàn)證是否登錄失敗,并且提示信息正確;
4.用戶名和密碼兩者都為空,驗(yàn)證是否登錄失敗,并且提示信息正確;
5.用戶名和密碼兩者之一為空,驗(yàn)證是否登錄失敗,并且提示信息正確;
6.用戶名和密碼,如果太短或者太長(zhǎng),應(yīng)該怎么處理(安全性,密碼太短時(shí)是否有提示)
7. 用戶名和密碼前后有空格的處理
用戶名和密碼是否大小寫敏感;**
頁(yè)面上的密碼框是否加密顯示;**
8.(不ok)輸入密碼的時(shí)候,大寫鍵盤開啟的時(shí)候要有提示信息。
9.登錄成功后生成的Cookie,是否是httponly (否則容易被腳本盜取)
10.用戶名和密碼是否通過加密的方式,發(fā)送給Web服務(wù)器
11.用戶名和密碼的驗(yàn)證,應(yīng)該是用服務(wù)器端驗(yàn)證, 而不能單單是在客戶端用javascript驗(yàn)證
12.用戶名和密碼的輸入框,應(yīng)該屏蔽SQL注入攻擊
14.(不ok)用戶名和密碼的的輸入框,應(yīng)該禁止輸入腳本 (防止XSS攻擊)
15.錯(cuò)誤登陸的次數(shù)限制(防止暴力破解)
16. 考慮是否支持多用戶在同一機(jī)器上登錄;
17.如果登錄功能啟用了驗(yàn)證碼功能,在用戶名和密碼正確的前提下,輸入正確的驗(yàn)證碼,驗(yàn)證是否登錄成功;
18.如果登錄功能啟用了驗(yàn)證碼功能,在用戶名和密碼正確的前提下,輸入錯(cuò)誤的驗(yàn)證碼,驗(yàn)證是否登錄失敗,并且提示信息正確。
19.后臺(tái)系統(tǒng)創(chuàng)建的用戶第一次登錄成功時(shí),是否提示修改密碼;
20.忘記用戶名和忘記密碼的功能是否可用;
21.如果登錄功能需要驗(yàn)證碼,點(diǎn)擊驗(yàn)證碼圖片是否可以更換驗(yàn)證碼,更換后的驗(yàn)證碼是否可用;
22.刷新頁(yè)面是否會(huì)刷新驗(yàn)證碼;
23.如果驗(yàn)證碼具有時(shí)效性,需要分別驗(yàn)證時(shí)效內(nèi)和時(shí)效外驗(yàn)證碼的有效性;
24.用戶登錄成功但是會(huì)話超時(shí)后,繼續(xù)操作是否會(huì)重定向到用戶登錄界面;
25.不同級(jí)別的用戶,比如管理員用戶和普通用戶,登錄系統(tǒng)后的權(quán)限是否正確;
(不ok)26.頁(yè)面默認(rèn)焦點(diǎn)是否定位在用戶名的輸入框中;
27.快捷鍵 Tab 和 Enter 等,是否可以正常使用。
(不ok)1.用戶密碼后臺(tái)存儲(chǔ)是否加密;
2.用戶密碼在網(wǎng)絡(luò)傳輸過程中是否加密;
3.密碼是否具有有效期,密碼有效期到期后,是否提示需要修改密碼;
4.不登錄的情況下,在瀏覽器中直接輸入登錄后的 URL 地址,驗(yàn)證是否會(huì)重新定向到用戶登錄界面;
不會(huì)。
5.密碼輸入框是否不支持復(fù)制和粘貼;
6.密碼輸入框內(nèi)輸入的密碼是否都可以在頁(yè)面源碼模式下被查看;
7.用戶名和密碼的輸入框中分別輸入典型的“SQL 注入攻擊”字符串,驗(yàn)證系統(tǒng)的返回頁(yè)面;
兩種方式驗(yàn)證 都安全
8.用戶名和密碼的輸入框中分別輸入典型的“XSS 跨站腳本攻擊”字符串,驗(yàn)證系統(tǒng)行為是否被篡改;
注:該網(wǎng)頁(yè)把用戶通過GET發(fā)送過來的表單數(shù)據(jù),未經(jīng)處理直接寫入返回的html流,這就是XSS漏洞所在。 這說是這篇文章的精髓所在。
9.連續(xù)多次登錄失敗情況下,系統(tǒng)是否會(huì)阻止后續(xù)的嘗試以應(yīng)對(duì)暴力破解;
10.同一用戶在同一終端的多種瀏覽器上登錄,驗(yàn)證登錄功能的互斥性是否符合設(shè)計(jì)預(yù)期;
11.同一用戶先后在多臺(tái)終端的瀏覽器上登錄,驗(yàn)證登錄是否具有互斥性。
1.單用戶登錄的響應(yīng)時(shí)間是否小于 3 秒;
2.單用戶登錄時(shí),后臺(tái)請(qǐng)求數(shù)量是否過多;
3.高并發(fā)場(chǎng)景下用戶登錄的響應(yīng)時(shí)間是否小于 5 秒;
4.高并發(fā)場(chǎng)景下服務(wù)端的監(jiān)控指標(biāo)是否符合預(yù)期;
5.高集合點(diǎn)并發(fā)場(chǎng)景下,是否存在資源死鎖和不合理的資源等待;
6.長(zhǎng)時(shí)間大量用戶連續(xù)登錄和登出,服務(wù)器端是否存在內(nèi)存泄漏。
1.不同瀏覽器下,驗(yàn)證登錄頁(yè)面的顯示以及功能正確性;
2.相同瀏覽器的不同版本下,驗(yàn)證登錄頁(yè)面的顯示以及功能正確性;
3.不同移動(dòng)設(shè)備終端的不同瀏覽器下,驗(yàn)證登錄頁(yè)面的顯示以及功能正確性;
4.不同分辨率的界面下,驗(yàn)證登錄頁(yè)面的顯示以及功能正確性。
1.1.1、整個(gè)Web應(yīng)用系統(tǒng)的所有頁(yè)面設(shè)計(jì)風(fēng)格需保持一致。
1.1.2、整個(gè)Web應(yīng)用系統(tǒng)頁(yè)面結(jié)構(gòu)設(shè)計(jì)布局合理,主題和頁(yè)面排版合理,無頁(yè)面變形,無樣式丟失,背景顯示正常,背景顏色與字體顏色和背景色協(xié)調(diào),信息顯示完整。界面的線條一致,每個(gè)界面中線條對(duì)齊且一致。
1.1.3、頁(yè)面文字格式統(tǒng)一,顏色統(tǒng)一,無錯(cuò)別字。
1.1.4、頁(yè)面標(biāo)點(diǎn)符號(hào)格式統(tǒng)一,所有字段后若存在冒號(hào),需查看冒號(hào)為統(tǒng)一的中文冒號(hào)或英文冒號(hào)。
1.1.5、頁(yè)面所有的列表頁(yè)標(biāo)題字是不會(huì)折行,標(biāo)題字顯示需統(tǒng)一,統(tǒng)一居中,或統(tǒng)一居左,或統(tǒng)一居右。
1.1.6、頁(yè)面中的提示說明敘述需簡(jiǎn)明,盡量簡(jiǎn)化,并且字體顯示格式一致,顏色統(tǒng)一。
1.1.7、頁(yè)面能兼容不同的瀏覽器,檢查頁(yè)面在不同瀏覽器下不會(huì)發(fā)生異常。
1.1.8、頁(yè)面在不同分辨率,窗口大小中展示無變形。
1.1.9、頁(yè)面界面所有的展示圖片需樣式一致,圖片需顯示清晰。
1.1.10、導(dǎo)航菜單布局合理,導(dǎo)航直觀,且易于用戶操作。
1.1.11、頁(yè)面導(dǎo)航與頁(yè)面結(jié)構(gòu)、菜單、連接頁(yè)面的風(fēng)格一致。
1.1.12、頁(yè)面導(dǎo)航易于導(dǎo)航且直觀,若有導(dǎo)航幫助,導(dǎo)航幫助需準(zhǔn)確直觀,當(dāng)存在多級(jí)菜單時(shí),菜單圖標(biāo)需做區(qū)分,便于用戶導(dǎo)航,用戶當(dāng)前操作頁(yè)面的導(dǎo)航菜單需高亮顯示提示用戶,當(dāng)前操作頁(yè)面的導(dǎo)航路徑需要正確顯示。
1.1.13、頁(yè)面數(shù)據(jù)需要搜索欄時(shí),搜索欄需有效直觀。
1.1.14、頁(yè)面按鈕格式及顏色需一致。
1.1.15、頁(yè)面存在必填項(xiàng)時(shí),需有必填項(xiàng)標(biāo)志。
1.1.16、頁(yè)面存在表格時(shí),表格寬度需足夠,并顯示完整。當(dāng)表格呈現(xiàn)內(nèi)容過多時(shí),需有效提示便于用戶操作查看,比如增加更多按鈕,點(diǎn)擊可查看更多內(nèi)容,或有滾動(dòng)條顯示。
1.1.17、頁(yè)面存在表格時(shí),頁(yè)面表格中的內(nèi)容超過最長(zhǎng)字符限制用…顯示,鼠標(biāo)放上去后顯示全部?jī)?nèi)容。
1.1.18、頁(yè)面存在列表時(shí),當(dāng)前列表若無數(shù)據(jù)時(shí),需顯示紅色字體的提示語(yǔ):“暫無相關(guān)記錄!”。
1.1.19、頁(yè)面能讀取需求中需要顯示數(shù)據(jù)源,且數(shù)據(jù)正確讀出,并完整顯示。
1.1.20、web應(yīng)用系統(tǒng)頁(yè)面中公司圖標(biāo),所有權(quán)歸屬,系統(tǒng)圖標(biāo)顯示正確,圖標(biāo)在不同瀏覽器及分辨率均能正常顯。
1.2.1、頁(yè)面操作友好易用。
1.2.2、頁(yè)面導(dǎo)航菜單鏈接有效,點(diǎn)擊后不會(huì)出現(xiàn)404,500報(bào)錯(cuò)。
1.2.3、頁(yè)面所有的輸入框都可以進(jìn)行校驗(yàn),超出限制時(shí)需有提示。
1.2.4、頁(yè)面所有的按鈕點(diǎn)擊后有響應(yīng)。
1.2.5、在對(duì)后臺(tái)進(jìn)行數(shù)據(jù)添加時(shí),查看前臺(tái)頁(yè)面是需隨后臺(tái)數(shù)據(jù)一起變化,頁(yè)面的數(shù)據(jù)不會(huì)溢出框外。后臺(tái)增加表格內(nèi)容時(shí),根據(jù)需求出現(xiàn)折行或者滾動(dòng)條,顯示完整數(shù)據(jù),頁(yè)面不會(huì)變形。
1.2.6、頁(yè)面所有的下拉框點(diǎn)擊后有響應(yīng),下拉框數(shù)據(jù)顯示正常且完整,取值正確,不會(huì)溢出框外。
1.2.7、必填項(xiàng)未填寫時(shí)需有提示框彈出,顯示提示語(yǔ):xxx必填!
1.2.8、頁(yè)面列表存在多條數(shù)據(jù)時(shí),需有顯示滾動(dòng)或翻頁(yè)功能使用戶可查看完整數(shù)據(jù)。
1.2.9、頁(yè)面存在搜索項(xiàng)時(shí),設(shè)置查詢條件,不點(diǎn)擊查詢按鈕,翻頁(yè)時(shí)不會(huì)改變用戶行為,不會(huì)自動(dòng)根據(jù)查詢條件顯示數(shù)據(jù)。
1.2.10、頁(yè)面存在搜索項(xiàng)時(shí),設(shè)置查詢條件,點(diǎn)擊查詢,翻頁(yè)時(shí)顯示符合查詢條件的數(shù)據(jù)。
1.2.11、在頁(yè)面點(diǎn)【退出】按鈕,成功退出到登錄界面。
1.2.12、點(diǎn)擊刪除按鈕時(shí)需有提示框彈出提示用戶確定刪除數(shù)據(jù),避免誤操作丟失數(shù)據(jù)。
當(dāng)存在批量刪除功能時(shí),不選擇任何數(shù)據(jù),點(diǎn)擊刪除按鈕需有提示。
1.2.13、頁(yè)面輸入項(xiàng)輸入異常字符時(shí)需處理,不會(huì)出現(xiàn)系統(tǒng)報(bào)錯(cuò),輸入中文字符時(shí)需處理不會(huì)出現(xiàn)亂碼或出錯(cuò)。輸入非法數(shù)據(jù)時(shí),需提示。
1.2.14、輸入項(xiàng)輸入正確數(shù)據(jù)時(shí),輸入和輸出需保持一致。
1.2.15、取消操作可執(zhí)行成功。
1.2.16、成功操作可根據(jù)需求在規(guī)定的時(shí)間及范圍內(nèi)生效。
1.2.17、窗體測(cè)試
1),窗體大小,大小要合適,控件布局合理;
2),移動(dòng)窗體.快速或慢速移動(dòng)窗體,背景及窗體本身刷新必須正確;
3),縮放窗體,窗體上的控件應(yīng)隨窗體的大小變化而變化;
1.2.18、用戶圖標(biāo)若支持上傳顯示時(shí),圖片上傳后顯示時(shí)需統(tǒng)一尺寸及格式,頁(yè)面不會(huì)變形,圖標(biāo)顯示保持和其他同類圖標(biāo)一致。
2、文件上傳測(cè)試
2.1、上傳文件大小在需求限制范圍內(nèi)可成功上傳;
2.2、上傳文件大小超出需求限制范圍需提示超出限制,不可成功上傳;
2.3、上傳文件數(shù)量在需求限制范圍內(nèi)可成功上傳;
2.4、上傳文件數(shù)量超出需求限制范圍需提示超出限制,不可成功上傳;
2.5、上傳文件格式在需求限制范圍內(nèi)可成功上傳;
2.6、上傳文件格式超出需求限制范圍需提示超出限制,不可成功上傳;
2.7、上傳文件名長(zhǎng)度超出需求限制長(zhǎng)度的文件提示超出限制,不可成功上傳;
2.8、上傳文件無效文件時(shí),舉例:大小為0kb的文件,不可成功上傳;
2.9、上傳成功的文件名稱顯示正確無異常;
2.10、在不同瀏覽器上傳符合要求的文件均可成功上傳;
2.11、根據(jù)需求,若上傳路徑支持手動(dòng)輸入時(shí),輸入正確的文件路徑可成功上傳;
2.12、根據(jù)需求,若上傳路徑支持手動(dòng)輸入時(shí),輸入錯(cuò)誤的文件路徑不可成功上傳;
2.13、已被打開的文件上傳,根據(jù)用戶需求確定能否成功上傳;
2.14、修改非法格式文件的后綴名為支持文件格式的類型,文件上傳不成功;
2.15、修改合法格式文件的后綴名為不支持文件格式的類型,文件上傳不成功;
2.16、上傳同名文件,根據(jù)需求確定能否上傳成功;
2.17、上傳文件的過程中,若文件上傳未完成時(shí),可取消上傳操作;
2.18、若上傳文件成功后,頁(yè)面存在數(shù)據(jù)保存或提交按鈕時(shí),未點(diǎn)擊保存或提交按鈕,上傳文件則不顯示在頁(yè)面中;
2.19、上傳文件允許多個(gè)時(shí),再次上傳文件,上傳頁(yè)面不可顯示上次文件的名稱,需刷新上傳頁(yè)面;
2.20、上傳為空時(shí),點(diǎn)擊上傳按鈕,需彈出提示信息;
2.21、已損壞文件上傳時(shí),需提示,不可成功上傳;
2.22、文件存儲(chǔ)位置路徑深度測(cè)試,當(dāng)超出最大深度,需提示,上傳文件不可成功;
2.23、文件目標(biāo)服務(wù)器已滿時(shí),上傳文件需提示,文件上傳不成功;
3.1、可以下載成功,下載文件和上傳文件大小,文件名稱,格式一致;
3.2、下載文件打開內(nèi)容正確,和上傳文件內(nèi)容一致,無亂碼,無異常;
3.3、不同瀏覽器都可下載下載成功,文件大小,文件名稱,格式,內(nèi)容一致;
3.4下載未完成時(shí),可取消下載操作;
3.5、可下載文件后臺(tái)被刪除時(shí),點(diǎn)擊下載需提示,根據(jù)用戶需求而定;
附:小栗子
具體需求: 有一個(gè)登錄頁(yè)面, (假如上面有2個(gè)textbox, 一個(gè)提交按鈕。 請(qǐng)針對(duì)這個(gè)頁(yè)面設(shè)計(jì)30個(gè)以上的testcase.)
此題的考察目的:面試者是否熟悉各種測(cè)試方法,是否有豐富的Web測(cè)試經(jīng)驗(yàn), 是否了解Web開發(fā),以及設(shè)計(jì)Test case的能力
這個(gè)題目還是相當(dāng)有難度的, 一般的人很難把這個(gè)題目回答好。
首先,你要了解用戶的需求,比如這個(gè)登錄界面應(yīng)該是彈出窗口式的,還是直接在網(wǎng)頁(yè)里面。對(duì)用戶名的長(zhǎng)度,和密碼的強(qiáng)度(就是是不是必須多少位,大小寫,特殊字符混搭)等。還有比如用戶對(duì)界面的美觀是不是有特殊的要求?(即是否要進(jìn)行UI測(cè)試)。剩下的就是設(shè)計(jì)用例了 ,等價(jià)類,邊界值等等。
請(qǐng)你記住一點(diǎn),任何測(cè)試,不管測(cè)什么都是從了解需求開始的。
功能測(cè)試(Function test)
0. 什么都不輸入,點(diǎn)擊提交按鈕,看提示信息。(非空檢查)
1.輸入正確的用戶名和密碼,點(diǎn)擊提交按鈕,驗(yàn)證是否能正確登錄。(正常輸入)
2.輸入錯(cuò)誤的用戶名或者密碼, 驗(yàn)證登錄會(huì)失敗,并且提示相應(yīng)的錯(cuò)誤信息。(錯(cuò)誤校驗(yàn))
3.登錄成功后能否能否跳轉(zhuǎn)到正確的頁(yè)面(低)
4.用戶名和密碼,如果太短或者太長(zhǎng),應(yīng)該怎么處理(安全性,密碼太短時(shí)是否有提示)
5.用戶名和密碼,中有特殊字符(比如空格),和其他非英文的情況(是否做了過濾)
6.記住用戶名的功能
7.登陸失敗后,不能記錄密碼的功能
8.用戶名和密碼前后有空格的處理
9.密碼是否加密顯示(星號(hào)圓點(diǎn)等)
10.牽扯到驗(yàn)證碼的,還要考慮文字是否扭曲過度導(dǎo)致辨認(rèn)難度大,考慮顏色(色盲使用者),刷新或換一個(gè)按鈕是否好用
11.登錄頁(yè)面中的注冊(cè)、忘記密碼,登出用另一帳號(hào)登陸等鏈接是否正確
12.輸入密碼的時(shí)候,大寫鍵盤開啟的時(shí)候要有提示信息。
界面測(cè)試(UI Test)
1.布局是否合理,2個(gè)testbox 和一個(gè)按鈕是否對(duì)齊
2.testbox和按鈕的長(zhǎng)度,高度是否復(fù)合要求
3. 界面的設(shè)計(jì)風(fēng)格是否與UI的設(shè)計(jì)風(fēng)格統(tǒng)一
4. 界面中的文字簡(jiǎn)潔易懂,沒有錯(cuò)別字。
性能測(cè)試(performance test)
1.打開登錄頁(yè)面,需要幾秒
2.輸入正確的用戶名和密碼后,登錄成功跳轉(zhuǎn)到新頁(yè)面,不超過5秒
安全性測(cè)試(Security test)
1.登錄成功后生成的Cookie,是否是httponly (否則容易被腳本盜取)
2.用戶名和密碼是否通過加密的方式,發(fā)送給Web服務(wù)器
3.用戶名和密碼的驗(yàn)證,應(yīng)該是用服務(wù)器端驗(yàn)證, 而不能單單是在客戶端用javascript驗(yàn)證
4.用戶名和密碼的輸入框,應(yīng)該屏蔽SQL注入攻擊
5.用戶名和密碼的的輸入框,應(yīng)該禁止輸入腳本 (防止XSS攻擊)
6.錯(cuò)誤登陸的次數(shù)限制(防止暴力破解)
7. 考慮是否支持多用戶在同一機(jī)器上登錄;
8. 考慮一用戶在多臺(tái)機(jī)器上登錄
可用性測(cè)試(Usability Test)
1. 是否可以全用鍵盤操作,是否有快捷鍵
2. 輸入用戶名,密碼后按回車,是否可以登陸
3. 輸入框能否可以以Tab鍵切換
兼容性測(cè)試(Compatibility Test)
1.主流的瀏覽器下能否顯示正常已經(jīng)功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)
2.不同的平臺(tái)是否能正常工作,比如Windows, Mac
3.移動(dòng)設(shè)備上是否正常工作,比如Iphone, Andriod
4.不同的分辨率
本地化測(cè)試 (Localization test)
1. 不同語(yǔ)言環(huán)境下,頁(yè)面的顯示是否正確。
軟件輔助性測(cè)試 (Accessibility test)
軟件輔助功能測(cè)試是指測(cè)試軟件是否向殘疾用戶提供足夠的輔助功能
1. 高對(duì)比度下能否顯示正常 (視力不好的人使用)