驗證登錄流程判斷邏輯
前端
賬戶名、密碼、驗證碼是否為空?
密碼是否符合規則(特殊字符、大小寫、數字、長度……)
服務端
驗證碼是否正確(對應時間戳是否過期)
賬戶是否存在(未注冊、已注銷)
密碼是否正確(記錄連續輸入錯誤次數,超過5次,賬號鎖定4小時。或提升驗證等級,采取賬號+密碼+驗證碼+短信驗證)
返回session、token
(1)web 從 FileManager 服務獲取驗證碼
(2)FileManager 根據web上傳的時間戳(長度為19位數字串,精確到秒),生成驗證碼圖片,並記錄時間戳對應的驗證碼
(3)web獲取用戶輸入的賬號,密碼(md5加密),驗證碼信息發送到login svr(今后application svr 可能還會帶上用戶使用瀏覽器類型等用戶環境信息)
(4)login svr通過時間戳獲取驗證碼字符串
(5)login svr根據web獲取的用戶信息動態計算確定用戶的認證等級,如果為默認認證方式,驗證賬號、密碼、驗證碼是否正確,如果正確返回驗證成功以及相應的session ID;login svr還要在redis 中記錄當前用戶session對應的信息,供鑒權服務使用
(6)如果login svr 動態計算的用戶認證級別高於默認級別,則login svr 返回對應的認證級別,web需要根據返回的結果提升認證級別,比如OTP認證等等
(7)login svr 記錄用戶登入日志(包括但不限於ip,mac地址等)
一、基本功能測試點:
1、輸入正確的用戶名和密碼登錄成功
2、輸入錯誤的用戶名密碼登錄失敗
3、用戶名正確密碼錯誤,是否提示輸入密碼錯誤
4、用戶名錯誤,密碼正常,是否提示輸入用戶名錯誤
5、用戶名和密碼都錯誤,是否有相應提示
6、用戶名密碼為空時,是否有相應提示
7、如果用戶未注冊,提示請先注冊,然后進行登錄
8、已經注銷的用戶登錄失敗,提示信息是否友好
9、密碼框是否加密顯示
10、用戶名 是否支持中文、特殊字符
11、用戶名是否有長度限制
12、用戶名是否支持中文,特殊字符
13、密碼是否有長度限制
14、密碼是否區分大小寫
15、密碼為一些簡單常用字符串時,是否提示修改?如:123456
16、密碼存儲方式是否加密
17、登錄功能是否需要輸入驗證碼?
(1)驗證碼有效時間
(2)驗證碼輸入錯誤,登錄失敗,提示信息是否友好
(3)輸入過期的驗證碼是否能登錄成功
(4)驗證碼是否容易識別
(5)驗證碼換一張功能是否可用,點擊驗證碼圖片是否可以更換驗證碼,是否可以登錄
18、用戶體系:比如系統分普通用戶、高級用戶、不同用戶登錄系統后的權限不同。
19、如果使用第三方賬號(QQ、微信、微博賬號)登錄,那么第三方賬號與本系統的賬號體系對應關系如何保存?首次登錄是否需要授權等。
二、頁面測試:
1、登錄頁面顯示是否正常?文字和圖片是否正常顯示,相應的提示信息是否正確,按鈕的設置和排列是否正常,頁面是否簡潔美觀等。
2、頁面默認焦點是否定位在用戶名的輸入框中
3、首次登錄時相應的輸入框是否為空?或者如果有默認文案,當點擊輸入框時默認文案是否消失?
4、相應的按鈕如登錄、重置等,是否可用;頁面的前進、后退、刷新按鈕是否可用?
5、快捷鍵Tab,Esc,Enter等,是否可以使用
6、兼容性測試:不同的瀏覽器,不同操作系統,不同分辨率下界面是否正常
三、安全測試
1、不登錄:瀏覽器中直接輸入登錄后的地址,看是否可以直接進入
2、登陸成功后生成的Cookie,是否是httponly(否則容易被腳本盜取)
3、用戶名和密碼是否通過加密的方式,發送給web服務器
4、用戶名和密碼的驗證,應該是用服務器端驗證,不能單單在客戶端用javascript驗證
5、用戶名和密碼的輸入框,應該屏蔽SQL注入攻擊
6、用戶名和密碼的輸入框,應該禁止輸入腳本(防止XSS攻擊)
7、錯誤登錄的次數限制(防止暴力破解)
8、考慮是否支持多用戶在同一機器上登錄
9、考慮一用戶在多台機器上登錄
四、性能測試:
1、單用戶登錄系統的響應時間是否符合“3-5-8”原則
2、用戶數在臨界點時並發登錄是否還能符合“3-5-8”原則
3、壓力:大量並發用戶登錄,系統的響應時間是多少?系統會出現宕機、內存泄漏、cpu飽和、無法登錄的情況?
4、穩定性:系統能否處理並發用戶數在臨界點以內連續登錄N個小時的場景?
五、其他測試:
1、連續輸入3次或或以上錯誤密碼,頁面是否被鎖一定時間(如:15分鍾),鎖定時間內不允許登錄,超出時間點是否可以繼續登錄。
2、用戶session過期后,重新登錄是否還能重新返回之前session過期的頁面?
3、用戶名和密碼輸入框是否支持鍵盤快捷鍵?如:撤銷、復制、粘貼等等
4、是否允許同名用戶同時登錄進行操作?考慮web和app同時登錄
5、手機登錄時,是否先判斷網絡可用?
6、手機登錄時,是否先判斷app存在新版本?
7、是否支持單點登錄?
8、是否有埋點接口