呈上篇 這一篇講解一下「使用者故事 (User Story)」的定義以及建立它的方式與流程。
首先先來定義一下User Story (使用者故事) 的定義
User Story 是一種用來描述產品功能需求的精簡、非正式的自然語言說明,其核心是從終端使用者 (End-user) 的視角出發。
它不是一份詳盡的技術規格文件,而是一個溝通的起點,一個用來提醒團隊「我們為什麼要做這個功能」的工具。它的目的是將焦點從「我們要開發什麼 (What)」轉移到「我們要為使用者解決什麼問題 (Why)」。
所以說她可以在易用性測試之前去實行,也可以在易用性中間去做實行,供該功能是否可以在產品內出現
標準格式 (Standard Format)
一個好的 User Story 通常遵循以下這個簡單的模板:
身為一個 <使用者角色>,
我想要 <完成一個目標/動作>,
以便於 <獲得某種價值/好處>。
讓我們拆解這三個部分:
是誰? 這是執行此動作的使用者。定義角色能幫助團隊對使用者產生同理心,避免用模糊的「使用者」一詞帶過。例如:「注重健康的顧客」、「忙碌的上班族」、「新註冊會員」。
想要做什麼? 這是使用者期望系統提供的具體功能或操作。這部分應該要具體、可執行。例如:「自訂咖啡的甜度」、「快速重新訂購上一筆訂單」、「儲存我的信用卡資訊」。
為什麼需要? 這是整個 User Story 最重要的部分,它闡明了此功能背後的動機與能為使用者帶來的價值。這有助於團隊在開發時做出正確的決策,並確保功能的開發是有意義的。例如:「控制我的糖分攝取量」、「節省我每天的點餐時間」、「讓未來的結帳流程更快速」。
然後這邊是建立步驟
步驟一:召開使用者故事工作坊 (User Story Workshop)
這是一個協作會議,通常由產品負責人(Product Owner)、設計師、工程師、測試人員等跨職能團隊成員共同參與。
* 目的: 透過腦力激盪,從使用者旅程 (User Journey) 或產品功能藍圖中,找出所有可能的使用者需求。
* 方式: 團隊成員在便利貼或數位白板上,依照 User Story 的格式寫下各種想法。此階段鼓勵發散思考,先求有再求好。
步驟二:編寫並完善使用者故事 (Writing the Story)
將工作坊產出的想法,精煉成更清晰的 User Story。
* 套用格式: 確保每個故事都符合「身為一個...,我想要...,以便於...」的格式。
* 遵循 INVEST 原則: 一個好的 User Story 應該具備以下特質:
* Independent (獨立的): 故事之間應盡量沒有依賴關係。
* Negotiable (可協商的): 故事不是合約,細節是可以與開發團隊討論的。
* Valuable (有價值的): 必須對使用者或業務產生明確的價值。
* Estimable (可估算的): 開發團隊能對完成該故事所需的工作量進行估算。
* Small (小巧的): 故事的大小應該適中,最好能在一個迭代 (Sprint) 中完成。
* Testable (可測試的): 故事必須有明確的完成標準,以便測試。
步驟三:定義驗收條件 (Acceptance Criteria)
這是 User Story 中至關重要的一環,它定義了「怎樣才算完成 (Definition of Done)」。驗收條件將模糊的需求轉化為具體的、可被測試的場景。
* 目的: 消除歧義,確保開發團隊、產品負責人、設計師對需求的理解完全一致。
* 常用格式 (Given/When/Then):
* Given (假設): 某個前提或初始狀態。
* When (當): 使用者執行了某個特定動作。
* Then (那麼): 系統應該出現的特定結果。
之後我們可已在延續上一篇的咖啡廳來作為範例
【完整範例】
User Story:
> 身為一個 注重健康的顧客,
> 我想要 在點咖啡時能自訂甜度,
> 以便於 控制我的糖分攝取量。
驗收條件 (Acceptance Criteria):
* 場景 1: 選擇半糖
* Given (假設) 我在拿鐵的商品頁面。
* When (當) 我點擊「甜度」選項,並選擇「半糖」。
* Then (那麼) 「甜度」的標示應更新為「半糖」,且加入購物車的品項應記錄此設定。
* 場景 2: 預設選項
* Given (假設) 我第一次進入拿鐵的商品頁面。
* When (當) 我沒有進行任何操作。
* Then (那麼) 「甜度」選項應預設為「正常甜」。
就這樣中途我們就可以判斷出驗收標準的
驗收標準,應該具備以下特質,你可以用這個清單來檢視:
1.清晰且無歧義 (Clear and Unambiguous):
標準的描述應該非常具體,讓任何一位團隊成員讀起來都有相同的理解。避免使用「快」、「好用」、「流暢」等主觀形容詞。
壞範例: 當使用者點擊按鈕後,系統應快速回應。
好範例: 當使用者點擊「送出」按鈕後,系統應在 2 秒內跳轉至確認頁面。
2.可測試的 (Testable):
每一個標準都必須有明確的 pass/fail 結果。它必須是能夠被實際操作、驗證並證明的。這也是為什麼 Given/When/Then 格式如此受歡迎,因为它本身就描述了一個測試情境。
壞範例: 系統應能處理大量用戶。
好範例: Given 系統上有 100 個併發使用者,When 他們同時送出訂單,Then 所有使用者都應在 5 秒內收到成功回應。
3.聚焦於單一故事 (Focused on a Single Story):
驗收標準應該只用來驗證它所屬的那個 User Story,不應包含其他故事的功能範疇。這能有效避免「範圍蔓延」(Scope Creep)。
範例: 在「自訂甜度」的 User Story 中,驗收標準不應包含「選擇杯子大小」的邏輯(除非這兩個功能緊密綁定)。
4.從使用者的角度出發 (User-focused):
盡量描述使用者能感知到的結果或系統行為,而不是描述背後的技術細節。
壞範例: 系統應成功呼叫 PaymentAPI。
好範例: 當使用者完成付款後,畫面上應顯示「付款成功」的訊息,並收到一封確認 Email。
5.達成共識 (Consensual):
最好的標準是經過團隊充分討論後一致同意的。如果團隊中有人對某條標準感到困惑或不同意,這就是一個警訊,代表需要進一步溝通釐清。
下一章我們將來討論A/B test 就是在前2篇改善原有功能之後所要進行的