等價類划分方法,是將所有可能的輸入數據划分成若干個子集,在每個子集中,如果任意一個輸入數據對於揭露程序中潛在錯誤都具有同等效果,那么這樣的子集就構成了一個等價類。后續只要從每個等價類中任意選取一個值進行測試,就可以用少量具有代表性的測試輸入取得較好的測試覆蓋結果。
邊界值分析方法,是選取輸入、輸出的邊界值進行測試。因為通常大量的軟件錯誤是發生在輸入或輸出范圍的邊界上,所以需要對邊界值進行重點測試,通常選取正好等於、剛剛大於或剛剛小於邊界的值作為測試數據。
顯式功能性需求(Functional requirement)的含義從字面上就可以很好地理解,指的是軟件本身需要實現的具體功能, 比如“正常用戶使用正確的用戶名和密碼可以成功登錄”、“非注冊用戶無法登錄”等,這都是屬於典型的顯式功能性需求描述。
非功能性需求(Non-functional requirement)呢?從軟件測試的維度來看,非功能性需求主要涉及安全性、性能以及兼容性三大方面。
‘用戶登錄’功能舉例:
針對“用戶登錄”功能,基於等價類划分和邊界值分析方法,部分測試用例:
- 功能測試用例包括:
- 輸入已注冊的用戶名和正確的密碼,驗證是否登錄成功;
- 輸入已注冊的用戶名和不正確的密碼,驗證是否登錄失敗,並且提示信息正確;
- 輸入未注冊的用戶名和任意密碼,驗證是否登錄失敗,並且提示信息正確;
- 用戶名和密碼兩者都為空,驗證是否登錄失敗,並且提示信息正確;
- 用戶名和密碼兩者之一為空,驗證是否登錄失敗,並且提示信息正確;
- 如果登錄功能啟用了驗證碼功能,在用戶名和密碼正確的前提下,輸入正確的驗證碼,驗證是否登錄成功;
- 如果登錄功能啟用了驗證碼功能,在用戶名和密碼正確的前提下,輸入錯誤的驗證碼,驗證是否登錄失敗,並且提示信息正確。
- 用戶名和密碼是否大小寫敏感;
- 頁面上的密碼框是否加密顯示;
- 后台系統創建的用戶第一次登錄成功時,是否提示修改密碼;
- 忘記用戶名和忘記密碼的功能是否可用;
- 前端頁面是否根據設計要求限制用戶名和密碼長度;
- 如果登錄功能需要驗證碼,點擊驗證碼圖片是否可以更換驗證碼,更換后的驗證碼是否可用;
- 刷新頁面是否會刷新驗證碼;如果驗證碼具有時效性,需要分別驗證時效內和時效外驗證碼的有效性;
- 用戶登錄成功但是會話超時后,繼續操作是否會重定向到用戶登錄界面;
- 不同級別的用戶,比如管理員用戶和普通用戶,登錄系統后的權限是否正確;
- 頁面默認焦點是否定位在用戶名的輸入框中;快捷鍵 Tab 和 Enter 等,是否可以正常使用。
- 安全性測試用例包括:
- 用戶密碼后台存儲是否加密;
- 用戶密碼在網絡傳輸過程中是否加密;
- 密碼是否具有有效期,密碼有效期到期后,是否提示需要修改密碼;
- 不登錄的情況下,在瀏覽器中直接輸入登錄后的 URL 地址,驗證是否會重新定向到用戶登錄界面;
- 密碼輸入框是否不支持復制和粘貼;密碼輸入框內輸入的密碼是否都可以在頁面源碼模式下被查看;
- 用戶名和密碼的輸入框中分別輸入典型的“SQL 注入攻擊”字符串,驗證系統的返回頁面;
- 用戶名和密碼的輸入框中分別輸入典型的“XSS 跨站腳本攻擊”字符串,驗證系統行為是否被篡改;
- 連續多次登錄失敗情況下,系統是否會阻止后續的嘗試以應對暴力破解;
- 同一用戶在同一終端的多種瀏覽器上登錄,驗證登錄功能的互斥性是否符合設計預期;
- 同一用戶先后在多台終端的瀏覽器上登錄,驗證登錄是否具有互斥性。
- 性能壓力測試用例包括:
- 單用戶登錄的響應時間是否小於 3 秒;
- 單用戶登錄時,后台請求數量是否過多;
- 高並發場景下用戶登錄的響應時間是否小於 5 秒;
- 高並發場景下服務端的監控指標是否符合預期;
- 高集合點並發場景下,是否存在資源死鎖和不合理的資源等待;
- 長時間大量用戶連續登錄和登出,服務器端是否存在內存泄漏。
- 兼容性測試用例包括:
- 不同瀏覽器下,驗證登錄頁面的顯示以及功能正確性;
- 相同瀏覽器的不同版本下,驗證登錄頁面的顯示以及功能正確性;
- 不同移動設備終端的不同瀏覽器下,驗證登錄頁面的顯示以及功能正確性;
- 不同分辨率的界面下,驗證登錄頁面的顯示以及功能正確性。
非功能性需求(Non-functional requirement)呢?從軟件測試的維度來看,非功能性需求主要涉及安全性、性能以及兼容性三大方面。
非功能性需求(Non-functional requirement)呢?從軟件測試的維度來看,非功能性需求主要涉及安全性、性能以及兼容性三大方面。
針對“用戶登錄”功能,基於等價類划分和邊界值分析方法,我們設計的測試用例包括:輸入已注冊的用戶名和正確的密碼,驗證是否登錄成功;輸入已注冊的用戶名和不正確的密碼,驗證是否登錄失敗,並且提示信息正確;輸入未注冊的用戶名和任意密碼,驗證是否登錄失敗,並且提示信息正確;用戶名和密碼兩者都為空,驗證是否登錄失敗,並且提示信息正確;用戶名和密碼兩者之一為空,驗證是否登錄失敗,並且提示信息正確;如果登錄功能啟用了驗證碼功能,在用戶名和密碼正確的前提下,輸入正確的驗證碼,驗證是否登錄成功;如果登錄功能啟用了驗證碼功能,在用戶名和密碼正確的前提下,輸入錯誤的驗證碼,驗證是否登錄失敗,並且提示信息正確。
等價類划分方法,是將所有可能的輸入數據划分成若干個子集,在每個子集中,如果任意一個輸入數據對於揭露程序中潛在錯誤都具有同等效果,那么這樣的子集就構成了一個等價類。后續只要從每個等價類中任意選取一個值進行測試,就可以用少量具有代表性的測試輸入取得較好的測試覆蓋結果。
等價類划分方法,是將所有可能的輸入數據划分成若干個子集,在每個子集中,如果任意一個輸入數據對於揭露程序中潛在錯誤都具有同等效果,那么這樣的子集就構成了一個等價類。后續只要從每個等價類中任意選取一個值進行測試,就可以用少量具有代表性的測試輸入取得較好的測試覆蓋結果。