什么是用戶故事?
用戶故事(User Story)是一段簡(jiǎn)單的功能描述,以用戶或者使用者的角度翘贮,寫下有價(jià)值的功能(Functionality/Feature)迂曲。與其說它是規(guī)格文件(Documentation),不如說它代表客戶的一個(gè)需求而已佳遂。
用戶故事的通用格式如下:
身為一個(gè) {特定角色}营袜,我希望能有 {特定功能} 以便能讓我{得到某種價(jià)值}。
As a (role of user), I want (some feature) so that (some business value).
舉個(gè)例子:
一個(gè)有最基本功能的購物APP丑罪,它的用戶可能有以下幾種:
買方
賣方
網(wǎng)站管理員
一個(gè)站在買家立場(chǎng)的用戶故事:
作為一個(gè)買家荚板,我希望能瀏覽所有同類商品的圖片和價(jià)格,這樣我能全面地比價(jià)并找到最適合我的商品吩屹。
一個(gè)好的用戶故事應(yīng)該遵循INVEST原則啸驯。
以下來自于Scrum中文網(wǎng):
獨(dú)立性(Independent)— 要盡可能的讓一個(gè)用戶故事獨(dú)立于其他的用戶故事。用戶故事之間的依賴使得制定計(jì)劃祟峦,確定優(yōu)先級(jí),工作量估算都變得很困難徙鱼。通常我們可以通過組合用戶故事和分解用戶故事來減少依賴性宅楞。
可協(xié)商性(Negotiable)— 一個(gè)用戶故事的內(nèi)容要是可以協(xié)商的,用戶故事不是合同袱吆。一個(gè)用戶故事卡片上只是對(duì)用戶故事的一個(gè)簡(jiǎn)短的描述厌衙,不包括太多的細(xì)節(jié)。具體的細(xì)節(jié)在溝通階段產(chǎn)出绞绒。一個(gè)用戶故事卡帶有了太多的細(xì)節(jié)婶希,實(shí)際上限制了和用戶的溝通。
有價(jià)值(Valuable)— 每個(gè)故事必須對(duì)客戶具有價(jià)值(無論是用戶還是購買方)蓬衡。一個(gè)讓用戶故事有價(jià)值的好方法是讓客戶來寫下它們喻杈。一旦一個(gè)客戶意識(shí)到這是一個(gè)用戶故事并不是一個(gè)契約而且可以進(jìn)行協(xié)商的時(shí)候,他們將非常樂意寫下故事狰晚。
可以估算性(Estimable)—開發(fā)團(tuán)隊(duì)需要去估計(jì)一個(gè)用戶故事以便確定優(yōu)先級(jí)筒饰,工作量,安排計(jì)劃壁晒。但是讓開發(fā)者難以估計(jì)故事的問題來自:對(duì)于領(lǐng)域知識(shí)的缺乏(這種情況下需要更多的溝通)瓷们,或者故事太大了(這時(shí)需要把故事切分成小些的)。
短忻敫馈(Small)— 一個(gè)好的故事在工作量上要盡量短小谬晕,最好不要超過10個(gè)理想人/天的工作量,至少要確保的是在一個(gè)迭代或Sprint中能夠完成。用戶故事越大携取,在安排計(jì)劃攒钳,工作量估算等方面的風(fēng)險(xiǎn)就會(huì)越大。
可測(cè)試性(Testable)—一個(gè)用戶故事要是可以測(cè)試的歹茶,以便于確認(rèn)它是可以完成的夕玩。如果一個(gè)用戶故事不能夠測(cè)試你弦,那么你就無法知道它什么時(shí)候可以完成。一個(gè)不可測(cè)試的用戶故事例子:軟件應(yīng)該是易于使用的燎孟。
如何寫好用戶故事禽作?
以下8個(gè)小技巧或許能助你一臂之力。
1. 用戶至上
用戶故事是用來描述用戶如何使用產(chǎn)品揩页,一切內(nèi)容要圍繞用戶的角度出發(fā)旷偿。比如,用戶故事應(yīng)該是圍繞著“用戶需要一個(gè)搜索功能來尋找他想要的產(chǎn)品”來描述爆侣,而不是“搜索需要聯(lián)合幾個(gè)數(shù)據(jù)庫一起提供數(shù)據(jù)”萍程。
2.利用用戶角色(Persona)來發(fā)現(xiàn)故事
用戶角色是根據(jù)目標(biāo)群體設(shè)定的虛構(gòu)人物,包括名字兔仰、行為習(xí)慣茫负、目標(biāo)等。根據(jù)用戶角色的行為目標(biāo)乎赴,尋找正確的用戶故事忍法。比如買家Amy是一個(gè)社交狂魔,那么就需要考慮到購物APP中榕吼,商品向各種社交軟件的分享功能饿序。
3.注意用戶故事之間的協(xié)作
用戶故事不是一個(gè)規(guī)格說明書,它是一個(gè)溝通與協(xié)作的工具羹蚣。用戶故事不能被單獨(dú)地傳遞給開發(fā)團(tuán)隊(duì)用于交付原探,它存在于一系列的完整的設(shè)計(jì)之中。比如顽素,購物APP中咽弦,用戶故事1是買家能把商品添加到購物車,用戶故事2是買家能添加/修改地址戈抄,用戶故事3是買家能綁定支付方式离唬,用戶故事4是買家能在線支付——這才算完成了一個(gè)買家購買的功能。
4.簡(jiǎn)潔即美
用戶故事要簡(jiǎn)明扼要划鸽,可讀性高输莺,避免使用模棱兩可的描述。用戶故事的模版就是一個(gè)很好的實(shí)踐:As , I want 裸诽, so that .——我是誰嫂用,我想要什么功能,為什么丈冬。
5.不斷完善
當(dāng)我們把需求從Epic細(xì)化到Story時(shí)嘱函,有些功能范圍放在哪個(gè)用戶故事里,其實(shí)是可以商榷的埂蕊。本著上述的INVEST原則往弓,用戶故事需要不停地調(diào)整疏唾、完善,直到就緒(用戶故事清晰函似、可行槐脏、可測(cè)試)。
6.增加驗(yàn)收標(biāo)準(zhǔn)(AC撇寞,Acceptance Criteria)
AC是驗(yàn)收用戶故事的標(biāo)準(zhǔn)顿天,有了AC,用戶故事的何時(shí)算完成蔑担,就有了更清晰的界定牌废。一個(gè)比較普遍的AC的模版如下:Given在某種場(chǎng)景下 When發(fā)生了事件 Then導(dǎo)致了什么結(jié)果(簡(jiǎn)稱Given, When, Then)。比如針對(duì)這個(gè)用戶故事“作為一個(gè)買家啤握,我希望能搜索到所有同類商品的圖片和價(jià)格鸟缕,這樣我能全面地比價(jià)并找到最適合我的商品∨盘В”叁扫,那么相應(yīng)的驗(yàn)收標(biāo)準(zhǔn)就是——設(shè)定用戶想買一只錢包的情景下(Given),當(dāng)他搜索錢包的的時(shí)候(When)畜埋,他能夠看到所有錢包的圖片和價(jià)格(Then)。
7.可視化用戶故事
可視化可以讓每個(gè)人清楚用戶故事的內(nèi)容畴蒲,便于團(tuán)隊(duì)更方便地將故事做分類悠鞍、標(biāo)記等管理,同時(shí)故事完成進(jìn)度的橫向流動(dòng)模燥,也便于讓團(tuán)隊(duì)思考有哪些已經(jīng)完成咖祭,是否有功能遺漏等。所以蔫骂,無論是電子墻還是物理墻么翰,可視化所有的用戶故事,能讓你事半功倍辽旋。
8.不僅僅依賴用戶故事
用戶故事只是需求與開發(fā)的溝通方式之一浩嫌,有用,卻不萬能补胚。它能能體現(xiàn)產(chǎn)品某些功能码耐、特性,在產(chǎn)品設(shè)計(jì)還需要user journey map溶其,在數(shù)據(jù)流上還需要data flow圖骚腥,在用戶體驗(yàn)上還需要原型設(shè)計(jì)等
總之,如果你想快速創(chuàng)建一個(gè)一次性的原型或模型來驗(yàn)證一個(gè)想法瓶逃,那么撰寫故事沒有必要束铭。然而廓块,當(dāng)你開發(fā)一個(gè)重要應(yīng)用,編寫用戶故事是值得的契沫,它不是記錄需求的無用開銷带猴,而是能幫你快速啟動(dòng)并盡可能快地開發(fā)軟件的工具。