二、測試設計與用例編寫題
解釋等價類劃分 (Equivalence Partitioning) 和邊界值分析 (Boundary Value Analysis)?并舉例說明。
等價類劃分 (EP):?將輸入域劃分為若干組(等價類),假設同一組內的數據對揭露程序錯誤具有等效性。只需從每個等價類中選取一個代表值進行測試即可。
例子:?測試一個輸入年齡(1-120歲)的文本框。
有效等價類: [1, 120] (如 30)
無效等價類: < 1 (如 0, -5) 和 > 120 (如 121, 200)
邊界值分析 (BVA):?是對等價類劃分的補充,關注輸入域邊界及其附近的值。因為經驗表明,邊界處最容易出錯。
例子:?同上年齡輸入框 (1-120)。
有效邊界值: 1, 120 (邊界點), 2, 119 (邊界內鄰點)
無效邊界值: 0 (剛好小于下界), 121 (剛好大于上界)
通常結合使用:?先劃分等價類,再針對每個等價類的邊界設計測試用例。
什么是決策表測試 (Decision Table Testing)?適用于什么場景?
回答:?決策表是一種系統性的方法,用于測試由多個輸入條件組合決定的不同輸出結果(動作)?的業務規則或邏輯。它以表格形式列出所有可能的條件組合及其對應的預期輸出。
適用場景:?復雜的業務邏輯、規則引擎、具有大量布爾條件(真/假)組合的功能。
例子:?信用卡申請審批規則(條件:年齡、收入、信用分;動作:批準/拒絕/需人工審核)。
什么是狀態轉換測試 (State Transition Testing)?適用于什么場景?
回答:?這種方法適用于系統或對象的行為依賴于其當前狀態,并且狀態會因特定事件或條件而改變的場景。通過繪制狀態轉換圖或狀態轉換表,設計測試用例來覆蓋有效的狀態轉換路徑(正常流)和無效的轉換(異常流)。
適用場景:?具有明確狀態和狀態轉換的系統,如登錄/登出流程、訂單狀態機(待支付、已支付、發貨中、已完成、已取消)、工單狀態、游戲角色狀態等。
什么是錯誤推測法 (Error Guessing)?
回答:?一種基于測試人員經驗、直覺和對系統弱點的理解來推測程序中可能存在的錯誤,并針對性地設計測試用例的方法。它依賴于測試人員的技能和對類似系統常見缺陷的了解。
例子:?測試文件上傳功能時,推測可能的錯誤:上傳超大文件、上傳0字節文件、上傳非法格式文件、上傳文件名包含特殊字符的文件、網絡中斷時上傳等。
一個好的測試用例應包含哪些要素?
回答:?通常包含:
用例ID:?唯一標識符。
用例標題/描述:?清晰、簡潔地說明測試目的(What to test?)。
前置條件:?執行該用例前系統必須滿足的狀態(如:用戶已登錄,特定數據已存在)。
測試步驟:?詳細、可執行的操作步驟(How to test?)。
測試數據:?執行步驟所需的具體輸入值。
預期結果:?每一步或整個用例執行后,系統應有的正確響應或狀態(What should happen?)。
后置條件:?執行后系統的狀態(可選,常用于清理或為后續用例準備)。
優先級:?標識用例的重要程度(高/中/低)。
所屬模塊/功能:?方便組織和管理。
如何為一個登錄功能設計測試用例?
回答:?這是非常經典的場景題!考慮以下方面:
功能正確性:
輸入正確用戶名和密碼 -> 登錄成功(跳轉到正確頁面,創建有效Session)。
輸入正確用戶名+錯誤密碼 -> 登錄失敗,提示“密碼錯誤”。
輸入錯誤用戶名+正確密碼 -> 登錄失敗,提示“用戶名不存在或密碼錯誤”(安全考慮,避免提示太明確)。
輸入錯誤用戶名+錯誤密碼 -> 登錄失敗。
用戶名/密碼為空 -> 登錄失敗,提示“用戶名/密碼不能為空”。
用戶名/密碼包含空格(前/中/后) -> 處理是否合理(通常應Trim前后空格)。
輸入驗證 (等價類 & 邊界值 & 特殊字符):
用戶名/密碼長度限制(過短/過長/恰好邊界)。
用戶名/密碼允許的字符類型(字母、數字、特殊字符@#$_等,需根據需求)。
輸入SQL注入/XSS嘗試字符串 -> 應被阻止或轉義。
用戶體驗:
錯誤提示信息是否清晰、友好、無技術術語。
登錄失敗后,密碼是否被清空(安全考慮)?用戶名是否保留(方便用戶)?
是否有“忘記密碼”、“注冊”等鏈接?是否可用?
是否有“記住我”功能?是否有效?
安全性:
傳輸是否加密(HTTPS)?
登錄失敗多次是否有鎖定機制(防暴力破解)?
登錄成功后Session管理是否安全(Cookie HttpOnly, Secure)?
錯誤信息是否泄露敏感信息(如明確提示“該用戶不存在”)?
其他:
不同瀏覽器/設備上的表現(兼容性)。
網絡中斷時登錄。
同時多點登錄(同一賬號在不同地方登錄)的處理。