你想入門軟體測試?先從“使用者登入”測試用例開始!

博為峰網校發表於2019-04-26

可能你會說,“使用者登入”這個測試物件也有點太簡單了吧,我只要找一個使用者,讓他在介面上輸入使用者名稱和密碼,然後點選“確認”按鈕,驗證一下是否登入成功就可以了。的確,這構成了一個最基本、最典型的測試用例,這也是終端使用者在使用系統時最典型的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、是否有埋點介面

總結

首先,對於高質量的軟體測試,用例設計不僅需要考慮明確的顯式功能性需求,還要涉及相容性、安全性和效能等一系列的非功能性需求,這些非功能性需求對軟體系統的質量有著舉足輕重的作用。

其次,優秀的測試工程師必須具有寬廣的知識面,才能設計出有針對性、更易於發現問題的測試用例。

最後,軟體測試的用例設計是不可窮盡的,工程實踐中難免受制於時間成本和經濟成本,所以優秀的測試工程師需要兼顧缺陷風險和研發成本之間的平衡。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2642683/,如需轉載,請註明出處,否則將追究法律責任。

相關文章