面試一個題目登錄功能,而且不同系統代碼設計方式都有所差異,所以就這個登錄功能而言就要測試四次,看似一個簡單的登錄功能其中設計的測試點也是相當複雜
一.瞭解平臺
首先你需要了解平臺設計結構,是前後端分離還是不分離。
瞭解這個主要是涉及到用戶登錄緩存數據的一個存儲。這就需要了解session,cookie,Token之間的區別。
目前我們的二個平臺,有一個平臺是做的前後端分離,因爲前後端分離是無狀態的,就沒有session,必須有權限認證,有可能是Token,也有可能是其它(Oauth/Bearer Token等),這裏我們的系統用的是Token(令牌)認證。
而未做前後端分離的平臺,是將登錄信息臨時存儲在cookie中,明白了這些那在測試過程就需要對這一部分的鑑權做測試。
Cookie數據存放在客戶的瀏覽器中.
Session數據存放在服務器中。
Token用戶身份的驗證方式。
二.分析登錄模塊的測試點
一般來說登錄模塊的功能點都比較簡單。大致分爲用戶名、密碼、忘記密碼、記住用戶名以及按鈕。
除了分析功能點之外,我們還需要考慮以下幾個點:
1.權限認證
這個主要是指cookie、Token失效,操作菜單產生什麼樣的結果。
2.橫向越權
指AB二個用戶擁有相同的權限,然後A用戶嘗試訪問B用戶的資源。
另外還有一個是縱向越權,是低級別用戶的權限去訪問高級別用戶的資源。
三.設計測試用例
設計功能點的測試用例
我們的系統不做記住用戶和忘記密碼的功能,所以針對這二個功能未設計測試點。
1、功能測試
0. 什麼都不輸入,點擊提交按鈕,看提示信息。
1.輸入正確的用戶名和密碼,點擊提交按鈕,驗證是否能正確登錄。
2.輸入錯誤的用戶名或者密碼, 驗證登錄會失敗,並且提示相應的錯誤信息。
3.登錄成功後能否能否跳轉到正確的頁面
4.用戶名和密碼,如果太短或者太長,應該怎麼處理
5.用戶名和密碼中有特殊字符(比如空格),和其他非英文的情況
6.記住用戶名的功能
7.登陸失敗後,不能記錄密碼的功能
8.用戶名和密碼前後有空格的處理
9.密碼是否加密顯示(星號圓點等)
10.牽扯到驗證碼的,還要考慮文字是否扭曲過度導致辨認難度大,考慮顏色(色盲使用者),刷新或換一個按鈕是否好用
11.登錄頁面中的註冊、忘記密碼,登出用另一帳號登陸等鏈接是否正確
12.輸入密碼的時候,大寫鍵盤開啓的時候要有提示信息
2.安全測試
1.登錄成功後生成的Cookie,是否是httponly (否則容易被腳本盜取)
2.用戶名和密碼是否通過加密的方式,發送給Web服務器
3.用戶名和密碼的驗證,應該是用服務器端驗證, 而不能單單是在客戶端用javascript驗證
4.用戶名和密碼的輸入框,應該屏蔽SQL 注入攻擊
5.用戶名和密碼的的輸入框,應該禁止輸入腳本 (防止XSS攻擊)
6.錯誤登陸的次數限制(防止暴力破解)
7. 考慮是否支持多用戶在同一機器上登錄;
8. 考慮一用戶在多臺機器上登錄
3.界面測試
在測試過程中,我們不僅要關注功能點是否按照需求已經實現了,同時我們還需要關注界面和用戶體現性,需要進行界面和體現方面的測試。
在測試界面中,主要測試以下內容:
1.佈局是否合理,2個testbox 和一個按鈕是否對齊
2.testbox和按鈕的長度,高度是否符合要求
3. 界面的設計風格是否與UI的設計風格統一
4. 界面中的文字簡潔易懂,沒有錯別字。
5.提示用戶名、密碼輸入框是否有默認提示內容;
輸入錯誤的用戶名或密碼是否給出了正確的提示,提示的文字、大小、顏色是否按需求描述(如果需求中沒有明確指出, 那可以借鑑其它網站相同功能的提示風格);
用戶名和密碼是否是必填的,如果是必填的,是否用紅色星號表示(通用規則);
輸入爲空時,給出的提示是否正確。
密碼顯示:密碼是否是密文顯示,如果需求中規定了可支持明文顯示,顯示有相應的控件。
4. 可用性測試
1. 是否可以全用鍵盤操作,是否有快捷鍵
2. 輸入用戶名,密碼後按回車,是否可以登陸
3. 輸入框能否可以以Tab鍵切換
5.兼容性測試
1.主流的瀏覽器下能否顯示正常已經功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)
2.不同的平臺是否能正常工作,比如Windows, Mac
3.移動設備上是否正常工作,比如Iphone, Andriod
4.不同的分辨率
6.性能測試
1.打開登錄頁面,需要幾秒
2.輸入正確的用戶名和密碼後,登錄成功跳轉到新頁面,不超過5秒
3.併發測試,壓力測試