可能你會(huì)說(shuō),"用戶登錄"這個(gè)測(cè)試對(duì)象也有點(diǎn)太簡(jiǎn)單了吧,我只要找一個(gè)用戶,讓他在界面上輸入用戶名和密碼,然后點(diǎn)擊"確認(rèn)"按鈕,驗(yàn)證一下是否登錄成功就可以了。的確,這構(gòu)成了一個(gè)最基本、最典型的測(cè)試用例,這也是終端用戶在使用系統(tǒng)時(shí)最典型的HAppy Pass場(chǎng)景。
但是作為測(cè)試工程師,你的目標(biāo)是要保證系統(tǒng)在各種應(yīng)用場(chǎng)景下的功能是符合設(shè)計(jì)要求的,所以你需要考慮的測(cè)試用例就需要更多、更全面。于是你需要根據(jù)"用戶登錄"功能的需求描述,結(jié)合以下5個(gè)知識(shí)點(diǎn)來(lái)設(shè)計(jì)一系列的測(cè)試用例。
知識(shí)點(diǎn)1:等價(jià)類劃分法,是將所有可能的輸入數(shù)據(jù)劃分成若干個(gè)子集,在每個(gè)子集中,如果任意一個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中潛在錯(cuò)誤都具有同等效果,那么這樣的子集就構(gòu)成了一個(gè)等價(jià)類。后續(xù)只要從每個(gè)等價(jià)類中任意選取一個(gè)值進(jìn)行測(cè)試,就可以用少量具有代表性的測(cè)試輸入取得較好的測(cè)試覆蓋結(jié)果。
知識(shí)點(diǎn)2:邊界值分析法,是選取輸入、輸出的邊界值進(jìn)行測(cè)試。因?yàn)橥ǔ4罅康能浖e(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,所以需要對(duì)邊界值進(jìn)行重點(diǎn)測(cè)試,通常選取正好等于、剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)據(jù)。
知識(shí)點(diǎn)3:顯式功能性需求(Functional requirement),指的是軟件本身需要實(shí)現(xiàn)的具體功能, 比如"正常用戶使用正確的用戶名和密碼可以成功登錄"、"非注冊(cè)用戶無(wú)法登錄"等,這都是屬于典型的顯式功能性需求描述。(測(cè)試用例1-20)
知識(shí)點(diǎn)4:非功能性需求(Non-functional requirement)從軟件測(cè)試的維度來(lái)看,非功能性需求主要涉及安全性、性能以及兼容性三大方面。知識(shí)點(diǎn)5:"窮盡測(cè)試" 是指包含了軟件輸入值和前提條件所有可能組合的測(cè)試方法,完成窮盡測(cè)試的系統(tǒng)里應(yīng)該不殘留任何未知的軟件缺陷。(不可能)
用戶登錄測(cè)試用例:
一、功能測(cè)試(Function test)
1、什么都不輸入,點(diǎn)擊提交按鈕,看提示信息。(非空檢查)
2、輸入正確的用戶名和密碼,點(diǎn)擊提交按鈕,驗(yàn)證是否能正確登錄。(正常輸入)
3、輸入錯(cuò)誤的用戶名或者密碼, 驗(yàn)證登錄會(huì)失敗,并且提示相應(yīng)的錯(cuò)誤信息。(錯(cuò)誤校驗(yàn))
4、登錄成功后能否能否跳轉(zhuǎn)到正確的頁(yè)面(低)
5、用戶名和密碼,如果太短或者太長(zhǎng),應(yīng)該怎么處理(安全性,密碼太短時(shí)是否有提示)
6、用戶名和密碼,中有特殊字符(比如空格),和其他非英文的情況(是否做了過濾)
7、記住用戶名的功能
8、登陸失敗后,不能記錄密碼的功能
9、用戶名和密碼前后有空格的處理
10、密碼是否加密顯示(星號(hào)圓點(diǎn)等)
11、牽扯到驗(yàn)證碼的,還要考慮文字是否扭曲過度導(dǎo)致辨認(rèn)難度大,考慮顏色(色盲使用者),刷新或換一個(gè)按鈕是否好用
12、登錄頁(yè)面中的注冊(cè)、忘記密碼,登出用另一帳號(hào)登陸等鏈接是否正確
13、輸入密碼的時(shí)候,大寫鍵盤開啟的時(shí)候要有提示信息
14、不同級(jí)別的用戶,比如管理員用戶和普通用戶,登錄系統(tǒng)后的權(quán)限是否正確
15、頁(yè)面默認(rèn)焦點(diǎn)是否定位在用戶名的輸入框中
16、快捷鍵 Tab 和 Enter 等,是否可以正常使用
二、界面測(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ī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)存泄漏。
四、安全性測(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)
不同語(yǔ)言環(huán)境下,頁(yè)面的顯示是否正確。
八、軟件輔助性測(cè)試 (Accessibility test)
1、軟件輔助功能測(cè)試是指測(cè)試軟件是否向殘疾用戶提供足夠的輔助功能
2、高對(duì)比度下能否顯示正常 (視力不好的人使用)
九、其它測(cè)試
1、連續(xù)輸入3次或以上錯(cuò)誤密碼,用記是否被鎖一定時(shí)間(如:15分鐘)?時(shí)間內(nèi)不允許登錄,超出時(shí)間點(diǎn)是否可以繼續(xù)登錄?
2、用戶session過期后,重新登錄是否還能重新返回這前session過期的頁(yè)面?
3、用戶名和密碼輸入框是事支持鍵盤快捷鍵?如:撤銷、復(fù)制、粘貼等等
4、是否允許同名用戶同時(shí)登錄進(jìn)行操作?考慮web和app同時(shí)登錄
5、手機(jī)登錄時(shí),是否先判斷網(wǎng)絡(luò)可用?
6、手機(jī)登錄時(shí),是否先判斷app存在新版本?
7、是否有埋點(diǎn)接口
總結(jié)
首先,對(duì)于高質(zhì)量的軟件測(cè)試,用例設(shè)計(jì)不僅需要考慮明確的顯式功能性需求,還要涉及兼容性、安全性和性能等一系列的非功能性需求,這些非功能性需求對(duì)軟件系統(tǒng)的質(zhì)量有著舉足輕重的作用。
其次,優(yōu)秀的測(cè)試工程師必須具有寬廣的知識(shí)面,才能設(shè)計(jì)出有針對(duì)性、更易于發(fā)現(xiàn)問題的測(cè)試用例。
最后,軟件測(cè)試的用例設(shè)計(jì)是不可窮盡的,工程實(shí)踐中難免受制于時(shí)間成本和經(jīng)濟(jì)成本,所以優(yōu)秀的測(cè)試工程師需要兼顧缺陷風(fēng)險(xiǎn)和研發(fā)成本之間的平衡。






