一、用例的概念
用例是指軟體系統中某個功能的使用說明文檔,用例描述了系統與用戶之間的交互過程。
每個用例都描述了系統的一個方面,在清晰簡潔的方式下,用例列出了用戶如何與系統交互以完成特定的任務。
通常,一個用例的結構應該包括:用例名稱,主要參與者,前置條件,後置條件,基本執行過程和異常執行過程。
二、用例分類
根據用例表現形式的不同,用例可分為正常場景用例、異常場景用例、邊界場景用例以及特殊場景用例。
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
微信掃一掃
支付寶掃一掃