可能你會說,“用戶登錄”這個測試對象也有點太簡單了吧,我只要找一個用戶,讓他在界面上輸入用戶名和密碼,然后點擊“確認(rèn)”按鈕,驗證一下是否登錄成功就可以了。的確,這構(gòu)成了一個最基本、最典型的測試用例,這也是終端用戶在使用系統(tǒng)時最典型的Happy Pass場景。
在分宜等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,成都全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設(shè),分宜網(wǎng)站建設(shè)費用合理。
但是作為測試工程師,你的目標(biāo)是要保證系統(tǒng)在各種應(yīng)用場景下的功能是符合設(shè)計要求的,所以你需要考慮的測試用例就需要更多、更全面。于是你需要根據(jù)“用戶登錄”功能的需求描述,結(jié)合以下5個知識點來設(shè)計一系列的測試用例。
知識點1: 等價類劃分法,是將所有可能的輸入數(shù)據(jù)劃分成若干個子集,在每個子集中,如果任意一個輸入數(shù)據(jù)對于揭露程序中潛在錯誤都具有同等效果,那么這樣的子集就構(gòu)成了一個等價類。后續(xù)只要從每個等價類中任意選取一個值進(jìn)行測試,就可以用少量具有代表性的測試輸入取得較好的測試覆蓋結(jié)果。
知識點2: 邊界值分析法,是選取輸入、輸出的邊界值進(jìn)行測試。因為通常大量的軟件錯誤是發(fā)生在輸入或輸出范圍的邊界上,所以需要對邊界值進(jìn)行重點測試,通常選取正好等于、剛剛大于或剛剛小于邊界的值作為測試數(shù)據(jù)。
知識點3: 顯式功能性需求(Functional requirement),指的是軟件本身需要實現(xiàn)的具體功能, 比如“正常用戶使用正確的用戶名和密碼可以成功登錄”、“非注冊用戶無法登錄”等,這都是屬于典型的顯式功能性需求描述。(測試用例1-20)
知識點4: 非功能性需求(Non-functional requirement)從軟件測試的維度來看,非功能性需求主要涉及安全性、性能以及兼容性三大方面。
知識點5: “窮盡測試” 是指包含了軟件輸入值和前提條件所有可能組合的測試方法,完成窮盡測試的系統(tǒng)里應(yīng)該不殘留任何未知的軟件缺陷。(不可能)
用戶登錄測試用例:
一、功能測試(Function test)
1、什么都不輸入,點擊提交按鈕,看提示信息。(非空檢查)
2、輸入正確的用戶名和密碼,點擊提交按鈕,驗證是否能正確登錄。(正常輸入)
3、輸入錯誤的用戶名或者密碼, 驗證登錄會失敗,并且提示相應(yīng)的錯誤信息。(錯誤校驗)
4、登錄成功后能否能否跳轉(zhuǎn)到正確的頁面(低)
5、用戶名和密碼,如果太短或者太長,應(yīng)該怎么處理(安全性,密碼太短時是否有提示)
6、用戶名和密碼,中有特殊字符(比如空格),和其他非英文的情況(是否做了過濾)
7、記住用戶名的功能
8、登陸失敗后,不能記錄密碼的功能
9、用戶名和密碼前后有空格的處理
10、密碼是否加密顯示(星號圓點等)
11、牽扯到驗證碼的,還要考慮文字是否扭曲過度導(dǎo)致辨認(rèn)難度大,考慮顏色(色盲使用者),刷新或換一個按鈕是否好用
12、登錄頁面中的注冊、忘記密碼,登出用另一帳號登陸等鏈接是否正確
13、輸入密碼的時候,大寫鍵盤開啟的時候要有提示信息
14、不同級別的用戶,比如管理員用戶和普通用戶,登錄系統(tǒng)后的權(quán)限是否正確
15、頁面默認(rèn)焦點是否定位在用戶名的輸入框中
16、快捷鍵 Tab 和 Enter 等,是否可以正常使用
二、界面測試(UI Test)
1、布局是否合理,2個testbox 和一個按鈕是否對齊
2、testbox和按鈕的長度,高度是否復(fù)合要求
3、界面的設(shè)計風(fēng)格是否與UI的設(shè)計風(fēng)格統(tǒng)一
4、界面中的文字簡潔易懂,沒有錯別字。
三、性能壓力測試(performance test)
1、單用戶登錄的響應(yīng)時間是否小于 3 秒;
2、單用戶登錄時,后臺請求數(shù)量是否過多;
3、高并發(fā)場景下用戶登錄的響應(yīng)時間是否小于 5 秒;
4、高并發(fā)場景下服務(wù)端的監(jiān)控指標(biāo)是否符合預(yù)期;
5、高集合點并發(fā)場景下,是否存在資源死鎖和不合理的資源等待;
6、長時間大量用戶連續(xù)登錄和登出,服務(wù)器端是否存在內(nèi)存泄漏。
四、安全性測試(Security test)
1、登錄成功后生成的Cookie,是否是httponly (否則容易被腳本盜取)
2、用戶名和密碼是否通過加密的方式,發(fā)送給Web服務(wù)器
3、用戶名和密碼的驗證,應(yīng)該是用服務(wù)器端驗證, 而不能單單是在客戶端用javascript驗證
4、用戶名和密碼的輸入框,應(yīng)該屏蔽SQL注入攻擊
5、用戶名和密碼的的輸入框,應(yīng)該禁止輸入腳本 (防止XSS攻擊)
6、錯誤登陸的次數(shù)限制(防止暴力破解)
7、考慮是否支持多用戶在同一機(jī)器上登錄;
8、考慮一用戶在多臺機(jī)器上登錄
五、可用性測試(Usability Test)
1、是否可以全用鍵盤操作,是否有快捷鍵
2、輸入用戶名,密碼后按回車,是否可以登陸
3、輸入框能否可以以Tab鍵切換
六、兼容性測試(Compatibility Test)
1、主流的瀏覽器下能否顯示正常已經(jīng)功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)
2、不同的平臺是否能正常工作,比如Windows, Mac
3、移動設(shè)備上是否正常工作,比如Iphone, Andriod
4、不同的分辨率
七、本地化測試 (Localization test)
不同語言環(huán)境下,頁面的顯示是否正確。
八、軟件輔助性測試 (Accessibility test)
1、軟件輔助功能測試是指測試軟件是否向殘疾用戶提供足夠的輔助功能
2、高對比度下能否顯示正常 (視力不好的人使用)
九、其它測試
1、連續(xù)輸入3次或以上錯誤密碼,用記是否被鎖一定時間(如:15分鐘)?時間內(nèi)不允許登錄,超出時間點是否可以繼續(xù)登錄?
2、用戶session過期后,重新登錄是否還能重新返回這前session過期的頁面?
3、用戶名和密碼輸入框是事支持鍵盤快捷鍵?如:撤銷、復(fù)制、粘貼等等
4、是否允許同名用戶同時登錄進(jìn)行操作?考慮web和app同時登錄
5、手機(jī)登錄時,是否先判斷網(wǎng)絡(luò)可用?
6、手機(jī)登錄時,是否先判斷app存在新版本?
7、是否有埋點接口
總結(jié)
首先,對于高質(zhì)量的軟件測試,用例設(shè)計不僅需要考慮明確的顯式功能性需求,還要涉及兼容性、安全性和性能等一系列的非功能性需求,這些非功能性需求對軟件系統(tǒng)的質(zhì)量有著舉足輕重的作用。
其次,優(yōu)秀的測試工程師必須具有寬廣的知識面,才能設(shè)計出有針對性、更易于發(fā)現(xiàn)問題的測試用例。
最后,軟件測試的用例設(shè)計是不可窮盡的,工程實踐中難免受制于時間成本和經(jīng)濟(jì)成本,所以優(yōu)秀的測試工程師需要兼顧缺陷風(fēng)險和研發(fā)成本之間的平衡。