一、用例的概念
用例是指軟體系統中某個功能的使用說明文檔,用例描述了系統與用戶之間的交互過程。
每個用例都描述了系統的一個方面,在清晰簡潔的方式下,用例列出了用戶如何與系統交互以完成特定的任務。
通常,一個用例的結構應該包括:用例名稱,主要參與者,前置條件,後置條件,基本執行過程和異常執行過程。
二、用例分類
根據用例表現形式的不同,用例可分為正常場景用例、異常場景用例、邊界場景用例以及特殊場景用例。
1、正常場景用例
正常場景用例是指系統與用戶之間,按照預期的流程,順利地執行任務的場景。
下面是一個正常場景用例的示例:
用例名稱:查看商品詳情 主要參與者:顧客 前置條件:顧客已登錄並打開了要查看的商品頁面 後置條件:顧客已查看了商品詳情並進行了相關操作 基本執行過程: 1. 顧客瀏覽商品頁面,找到想查看的商品 2. 顧客點擊商品圖片或名稱,進入商品詳情頁 3. 系統顯示商品的基本信息,包括價格、庫存、尺碼、顏色等 4. 顧客可以進行加入購物車,或直接購買等操作 5. 顧客完成相關操作後,確認退出商品詳情頁面 異常執行過程:無
2、異常場景用例
異常場景用例是指系統與用戶之間,因為各種外界或內部原因,未能按照正常流程,出現了異常情況的場景。
下面是一個異常場景用例的示例:
用例名稱:登錄失敗 主要參與者:顧客 前置條件:顧客已點擊登錄按鈕,輸入用戶名和密碼 後置條件:系統未能成功登錄,提示用戶詳細信息 基本執行過程: 1. 顧客輸入用戶名和密碼後,點擊登錄按鈕 2. 系統驗證用戶名和密碼是否匹配 3. 如果匹配,進入主頁面。如果不匹配,轉入4步驟 4. 系統提示錯誤信息,包括用戶名或密碼錯誤 5. 顧客根據錯誤信息進行修改並重新登錄 異常執行過程:網路無法連接、系統故障等
3、邊界場景用例
邊界場景用例是指輸入數據正好處於界限情況,或剛好位於特殊值的場景。
下面是一個邊界場景用例的示例:
用例名稱:購買數量上限 主要參與者:顧客 前置條件:顧客已添加商品到購物車,並進入結算頁面 後置條件:系統檢查數量是否超出限制,生成訂單 基本執行過程: 1. 顧客在結算頁面中輸入購買數量,如果超過上限,系統提示錯誤信息 2. 顧客修改數量小於上限後,點擊購買按鈕 3. 系統檢查商品的庫存是否夠 4. 如果夠,生成訂單並提示顧客支付 5. 如果不夠,系統轉入異常場景 異常執行過程:庫存不夠等
4、特殊場景用例
特殊場景用例是指輸入數據處於非正常台,或者帶有一定風險的場景。
下面是一個特殊場景用例的示例:
用例名稱:用戶連續登錄失敗多次 主要參與者:顧客 前置條件:顧客連續多次輸入錯誤的用戶名和密碼 後置條件:顧客需要等待一段時間才能再次嘗試登錄 基本執行過程: 1. 如果顧客連續多次輸入錯誤的用戶名和密碼,系統檢查並記錄失敗的次數 2. 如果超過一定的次數,系統自動鎖定顧客的賬號 3. 顧客根據提示信息來解鎖賬號並重新登錄 異常執行過程:無
三、用例編寫方法
用例的編寫是需要考慮到實際應用的,過於詳細的描述可能會影響到用例的可讀性,不夠詳細的描述也可能會影響用例的準確性。
因此,在編寫用例時應該注意以下幾點:
1、用例的準確性
用例應該考慮到各種可能情況,特別是異常情況,以便保證用例的準確性。
2、用戶需求的優先順序
對於用例的編寫,應該考慮用戶需求的優先順序。對於用戶優先順序較高的需求應該先被考慮並編寫成用例。
3、用例的可復用性
為了達到代碼復用和維護的最大化,編寫用例時應該考慮用例的可復用性。即儘可能擴展已有的用例,減少冗餘的用例。
四、完整代碼示例
1、正常場景用例示例代碼
/** * 查看商品詳情 * * @param {object} product 商品對象 * @return {object} 商品詳情 */ function viewProductDetail(product) { // 判斷商品是否存在 if (!product) { console.error("Product doesn't exist"); return; } // 顯示商品信息 console.log(product.name); console.log(product.price); console.log(product.color); console.log(product.size); // TODO: 用戶進行相關操作 }
2、異常場景用例示例代碼
/** * 登錄賬號 * * @param {string} username 用戶名 * @param {string} password 密碼 * @return {bool} 是否成功登錄 */ function login(username, password) { // 判斷用戶名和密碼是否為空 if (!username || !password) { console.error("Username and password can't be empty"); return false; } // TODO: 驗證用戶名和密碼是否匹配 // 如果不匹配,記錄失敗次數 let failTimes = null; failTimes++; if (failTimes > 5) { // 如果失敗次數超過5次,進行鎖定 console.log("Your account has been locked"); return false; } console.error("Username or password is incorrect"); return false; }
3、邊界場景用例示例代碼
/** * 生成訂單 * * @param {object} product 商品對象 * @param {int} count 購買數量 * @return {object} 訂單對象或錯誤信息 */ function generateOrder(product, count) { // 檢查購買數量是否超出上限 const maxCount = 10; if (count > maxCount) { console.error("The maximum purchase quantity is " + maxCount); return; } // TODO: 檢查商品庫存是否夠 // 如果夠,返回訂單對象 const order = { product: product, count: count, totalPrice: count * product.price, createTime: new Date() }; console.log("Generate order successfully"); return order; }
4、特殊場景用例示例代碼
/** * 解鎖賬號 * * @param {string} username 用戶名 * @param {string} identity 身份證號 * @return {bool} 是否成功解鎖 */ function unlockAccount(username, identity) { // 如果輸入錯誤,返回錯誤信息 if (username !== "test" || identity !== "123") { console.error("The username or identity is incorrect"); return false; } console.log("Unlock account successfully"); return true; }
原創文章,作者:YVVBW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/371155.html