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