敏捷活動實踐 —— 驗收條件

特征

  1. 日常語言描述
  2. 捕獲系統(tǒng)行為
  3. 個數(shù)有限

在故事基礎(chǔ)部分狡相,我提到用戶故事通常是日郴福或者商務(wù)語言寫成的句子吏颖,這些句子描述了用戶在其工作職責(zé)范圍內(nèi)想要達成的某個目的以及達成該目的需要的功能(手段)歼冰。所以書寫用戶的故事的句式一般都是:As(用戶的角色)... I Want(功能或手段)... So That(目的)。根據(jù)用戶故事的 INVEST 劃分原則中 N (Negotiated 可協(xié)商的) 原則剧腻,故事包含的是對需求的簡短描述拘央,具體的細(xì)節(jié)需要溝通產(chǎn)出,產(chǎn)出物表現(xiàn)為驗收條件书在。

換言之灰伟,驗收條件是在開發(fā)前的分析階段輸出的,它的作用是補充需求細(xì)節(jié)。更進一步栏账,驗收條件其實有力地消除了用戶和開發(fā)人員之間的溝通鴻溝帖族。為什么這么說呢?因為驗收條件具備兩點很重要的特征:

  • 日常語言描述
  • 捕獲系統(tǒng)行為

這兩點特征促進了參與各方在需求點上快速反饋挡爵,如下圖:


驗收條件-反饋環(huán)

在敏捷活動中高效地溝通一直被反復(fù)強調(diào)竖般,因為不高效的溝通造成的信息誤導(dǎo)和返工是精益生產(chǎn)活動中應(yīng)當(dāng)極力消除的,所以任何能夠促進溝通的方式方法都值得提倡茶鹃。

除此之外涣雕,有限的個數(shù) (2-8 ACs/story) 也是驗收條件的一個特征,這也是 INVEST 原則中 E (Estimable 可評估的) 所要求的闭翩。所以挣郭,也引出了驗收條件的一個簡明定義——用戶故事的 DoD (Definition of Done)。也有人說疗韵,一組驗收條件定義了用戶故事的邊界(Boundary)兑障。如果任由用戶故事自然“瘋長”,范圍無限放大伶棒,交付怕是遙遙無期旺垒。

驗收條件會作為業(yè)務(wù)活動描述的一部分存在于用戶故事中彩库,一般會在開發(fā)之前準(zhǔn)備就緒肤无。在敏捷活動 kick-off 時骇钦,由業(yè)務(wù)分析師(BA)和開發(fā)人員(Dev),也可叫上質(zhì)量保證師(QA)一起逐條澄清驗收條件窥翩,以便保證開發(fā)之前達成共識,減少返工和浪費鳞仙。在其它敏捷活動如:desk-checks, customer sign-off, UI testing, BDD 中也會重度參與。

格式

Given/When/Then

#Title
Given 用戶觸發(fā)操作之前處于的系統(tǒng)狀態(tài)
When 觸發(fā)系統(tǒng)結(jié)果的操作
Then 系統(tǒng)預(yù)期返回的結(jié)果

Verifiable checklists

e.g. [PhoneNumber] 只能包含0-9, +

反模式

模棱兩可的陳述

Given: that I have the search page loaded

When: I perform a search

Then: the search results come back within a reasonable period of time

這里的 reasonable period of time 就是不可測試的仗岸,因為沒有人可以決定什么才是 reasonable.

合理的改法是:

Given: that I have the search page loaded

When: I perform a search

Then: the search results come back within 5ms

5ms 之內(nèi),這是一個標(biāo)量借笙,完全可以衡量扒怖。

非系統(tǒng)交互

Given I have pulled my car up to the valet area

When I hand over my keys to the valet person

Then I receive a paper ticket from the valet person

And I am instructed to hold on to it so I can use it to retrieve my car later.

這里的所有描述都是對現(xiàn)實場景的描述,和系統(tǒng)并無關(guān)系盗痒,對于開發(fā)人員構(gòu)建系統(tǒng)幾乎沒有絲毫幫助低散。這種反模式的修正方法是剔除那些系統(tǒng)的驗收條件俯邓,重新梳理用戶故事。

非系統(tǒng)輸出

Given: that I am on the home page

And: I am logged in

When: I navigate to account preferences

Then: I can see my account preferences

這里的 I can see my account preferences 是無法進行斷言的君编,因為這是系統(tǒng)無關(guān)的川慌,說得極端些吃嘿,假如用戶閉上眼睛梦重,這個功能就沒法通過驗收了。

合理的改法是:

Given: that I am on the home page

And: I am logged in

When: I navigate to account preferences

Then: my account preferences are displayed

這個時候降瞳,我可以檢查系統(tǒng)展示了我的用戶頁面蚓胸。

when 隱藏到 given

Given: that I am on the homepage

And: I navigate to the search

When: I look at the page

Then: the search options are displayed

基本上沛膳,這是團隊編寫 AC 時最容易犯的錯誤,操作出現(xiàn)在前置條件中短荐,when 中反而不是系統(tǒng)行為了忍宋。

合理的改法是:

Given: that I am on the homepage

When: I navigate to the search

Then: the search options are displayed

最佳模式

1. 可讀的

我們希望業(yè)務(wù)人員審閱和修正驗收條件糠排,如果寫的內(nèi)容只有開發(fā)人員能懂超升,我們就失去了獲得反饋的機會廓俭。使用上述書寫格式研乒,可以提高可讀性。

Given: that my mobile phone is switched on

And: I have sufficient signal to make a call

When: I dial a number

Then: I am connected to the person I want to talk to

And: incoming calls are diverted to my voicemail

2. 可測試的

參見反模式中合理改法宽菜。

3. 實現(xiàn)無關(guān)的

驗收條件應(yīng)該是實現(xiàn)無關(guān)的继谚,它和用戶故事一樣花履,是給業(yè)務(wù)和開發(fā)人員提供交流憑證的一種工具,所以它應(yīng)該聚焦于功能妹卿,而不是功能的展現(xiàn)形式。

Given: that I am on the home page

And: I am logged in

When: I navigate to advanced search

Then: the advanced search web page must be displayed

And: a text box labelled "Name" is displayed

And: a text box labelled "Description" is displayed

And: a command button named "Search" is displayed

這里已經(jīng)框死了必須要使用 text box 實現(xiàn)展示功能,而實際上其背后真正的意圖是通過屬性字段進行搜索火鼻,隱藏了業(yè)務(wù)含義的驗收條件是不可取的魁索。

合理的改法是:

Given: that I am on the home page

And: I am logged in

When: I navigate to advanced search

Then: the advanced search is displayed

And: an option to search by name is displayed

And: an option search by description is displayed

And: the advanced search is displayed in accordance with the attached wireframe

換句話說粗蔚,驗收條件本身不應(yīng)該關(guān)注于展現(xiàn)形式鹏控,當(dāng)然当辐,為了便于理解缘揪,wireframe 是提供直觀素材的更好的方式蹈垢。

練習(xí)

用戶故事

作為一名管理員
我想要把一名員工加入系統(tǒng)中
以便管理他們的權(quán)限

分析步驟

1. 定義邊界

  • 觸發(fā)添加員工操作
  • 輸入員工的詳情
  • 驗證遺漏或者錯誤的字段
  • 保存

2. 提煉和細(xì)化

  1. 觸發(fā)添加員工操作
假如我進入了員工管理系統(tǒng)
當(dāng)我進入員工的瀏覽頁
之后添加員工的操作出現(xiàn)在頁面上

2. 輸入員工的詳情

假如添加員工的操作出現(xiàn)在瀏覽頁
當(dāng)我調(diào)用了添加員工的操作
那么我可以輸入員工的姓名和出生日期
并且出現(xiàn)了保存操作

3. 驗證遺漏的字段

假如我沒有填寫員工的姓名和/或生日
當(dāng)我嘗試保存
那么保存不會成功
并且會有消息顯示遺漏的字段

4. 驗證錯誤的生日日期

假如我正在添加一名員工的詳情
并且我輸入了未來或者早于1900年的日期急鳄,或者錯誤的日期格式
當(dāng)我嘗試保存
那么保存不會成功
并且會有消息顯示輸入的生日日期無效

驗證列表:
[日期格式] yyyy/MM/dd

5. 保存

假如我正在添加一名員工的詳情
并且我輸入了有效的生日和姓名
當(dāng)我嘗試保存
那么會有消息顯示保存成功
并且包含該員工詳情的頁面會呈現(xiàn)
并且詳情中的生日和姓名和之前輸入的一致

警告

驗收條件并不是唯一澄清和約束用戶故事的方式赖临!任何可以提升理解和降低溝通成本的方式方法都值得嘗試灾锯。比如:用戶偏好 —— 希望使用下拉框而不是復(fù)選框顺饮,往往可以通過添加一條記錄在故事中補充這部分信息兼雄。另外赦肋,一個完整的故事最好能附上線框圖,一圖勝千言囱井。


進一步閱讀
[1] 敏捷團隊工作流

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庞呕,一起剝皮案震驚了整個濱河市住练,隨后出現(xiàn)的幾起案子讲逛,更是在濱河造成了極大的恐慌岭埠,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件株茶,死亡現(xiàn)場離奇詭異启盛,居然都是意外死亡技羔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來向图,“玉大人标沪,你說我怎么就攤上這事金句¢萦” “怎么了贞瞒?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵军浆,是天一觀的道長瘾敢。 經(jīng)常有香客問我,道長射众,這世上最難降的妖魔是什么叨橱? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任罗洗,我火速辦了婚禮愉舔,結(jié)果婚禮上轩缤,老公的妹妹穿的比我還像新娘火的。我一直安慰自己馏鹤,他們只是感情好娇哆,可當(dāng)我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布碍讨。 她就那樣靜靜地躺著垄开,像睡著了一般溉躲。 火紅的嫁衣襯著肌膚如雪锻梳。 梳的紋絲不亂的頭發(fā)上疑枯,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天荆永,我揣著相機與錄音具钥,去河邊找鬼。 笑死掌动,一個胖子當(dāng)著我的面吹牛柑晒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播罚屋,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼鱼鸠,長吁一口氣:“原來是場噩夢啊……” “哼蚀狰!你這毒婦竟也來了跛溉?” 一聲冷哼從身側(cè)響起芳室,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荔仁,沒想到半個月后乏梁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體遇骑,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡质蕉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年直颅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隶糕。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡枚驻,死狀恐怖再登,靈堂內(nèi)的尸體忽然破棺而出锉矢,到底是詐尸還是另有隱情,我是刑警寧澤灯节,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布炎疆,位于F島的核電站磷雇,受9級特大地震影響躏救,放射性物質(zhì)發(fā)生泄漏盒使。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挽放。 院中可真熱鬧,春花似錦吗蚌、人聲如沸蚯妇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胧洒。三九已至,卻和暖如春菲饼,著一層夾襖步出監(jiān)牢的瞬間列赎,已是汗流浹背包吝。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砖瞧,地道東北人嚷狞。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓竭翠,卻偏偏與公主長得像薇搁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子屎鳍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容