? ? ? ?AC(Acceptance Criteria,驗(yàn)收準(zhǔn)則)和TC(Test Cases,測試用例)兩者既有區(qū)別,又有聯(lián)系。在實(shí)際應(yīng)用中,我們常?;煜齼烧叩母拍?,下面筆者將根據(jù)自己的理解來說說兩者間的關(guān)系。
? ? ? ?1、什么是AC?
? ? ? ?AC全稱Acceptance Criteria,又名“驗(yàn)收準(zhǔn)則”,是敏捷測試中user story(用戶故事)的重要組成部分。AC是針對user story內(nèi)容的說明和解釋,是根據(jù)user story的闡述制定的驗(yàn)收標(biāo)準(zhǔn)。AC初稿由BA(Business Analyst,業(yè)務(wù)分析師)根據(jù)客戶的需求來編寫,需user(用戶)、BA、QA(Quality Analyst,質(zhì)量分析師)和DEV(Developer,開發(fā)人員)共同review。每一條AC都應(yīng)體現(xiàn)出業(yè)務(wù)價值,是story的功能集,是story交付時必須滿足的一組條件。
? ? ? ?2、什么是TC?
? ? ? TC是Test Cases(測試用例)的縮寫。與AC不同的時,TC主要由測試人員根據(jù)AC來編寫,BA、QA和測試人員一起review。從開發(fā)流程來講,TC應(yīng)該是story交付前必須執(zhí)行的測試;從內(nèi)容上來說,TC是AC的具體實(shí)現(xiàn),應(yīng)該比AC更將詳細(xì),必須包括AC的所有內(nèi)容。此外,TC還應(yīng)包括很多異常測試用例,以確保系統(tǒng)對異常能正確的處理。
? ? ? 總結(jié)所述,AC和TC的包含關(guān)系主要如下圖所示:

? ? ? 通常,AC(Acceptance Criteria,驗(yàn)收準(zhǔn)則)的編寫會使用Given-(and)-When-(and)-Then的格式。Given表示前置條件,When描述測試步驟,Then表示執(zhí)行結(jié)果。
? ? ? ?比如編寫某個郵箱aaa發(fā)送郵件功能的AC1:作為一個aaa郵箱普通用戶,我想要編寫郵件發(fā)送給我的朋友Jerry,郵件發(fā)送成功。轉(zhuǎn)換為Given-(and)-When-(and)-Then的描述方式如下:
Scenario 1:收件人地址正確,郵件發(fā)送成功
Given 普通用戶userA登錄aaa郵箱成功
When 用戶userA編寫郵件,郵件內(nèi)容不為空
? ? and 在“收件人”輸入Jerry郵箱地址,郵箱地址存在
? ? and 點(diǎn)擊“發(fā)送”
Then 提示“郵件發(fā)送成功”
? ? ? ?如上例所示,使用Given-(and)-When-(and)-Then格式后,對于測試場景的輸入和輸出一目了然,可以有助于用戶和測試人員快速理解,便于測試人員將AC轉(zhuǎn)化為TC執(zhí)行。
? ? ? ?2、編寫AC時應(yīng)該關(guān)注些什么?
? ? ? ? 1)AC不是TC(Test Cases,測試用例)
? ? ? ? AC只是為了確保用戶故事完整并使用此驗(yàn)收的標(biāo)準(zhǔn)。當(dāng)團(tuán)隊(duì)據(jù)此驗(yàn)收標(biāo)準(zhǔn)創(chuàng)建了一套TC,并測試成功通過后,我們可以聲明用戶故事是完整的,系統(tǒng)可以根據(jù)客戶的期望而發(fā)揮作用。 因此,AC是根據(jù)敏捷的用戶故事定義高水準(zhǔn)的接受標(biāo)準(zhǔn),TC是使用這些標(biāo)準(zhǔn)來定義與接受標(biāo)準(zhǔn)相比非常詳細(xì)的實(shí)際測試用例。 從某種程度而言,TC可以看作是AC的詳細(xì)步驟解析。

? ? ? ? ?如將上述Scenario 1的AC1轉(zhuǎn)換為TC,TC描述如下表所示:

? ? ? ? 2)用戶和場景
? ? ? ? AC是為story驗(yàn)收準(zhǔn)備的,在編寫AC時,我們需著重關(guān)注點(diǎn)應(yīng)該用戶和用戶使用場景,即:什么用戶在什么場景下使用該系統(tǒng)(功能)。我們應(yīng)該認(rèn)知到,及時在比較清楚某個story的情況下,我們也不能捕獲所有的場景。因此,只有清楚地了解用戶和用戶使用場景之后,我們才能對用戶場景進(jìn)行由高到低的使用頻率排序。在編寫AC的過程中,我們應(yīng)該首要保證使用頻率高的用戶場景有足夠的測試執(zhí)行并完全通過。
例如,依然針對上述Scenario 1用戶aaa發(fā)送郵件給jerry的用戶故事舉例,我們依然可以延伸出更多的AC:
AC2:
Given 普通用戶userA登錄aaa郵箱成功
When 用戶userA編寫郵件,郵件內(nèi)容為空
and 在“收件人”輸入Jerry郵箱地址,郵箱地址存在
and 點(diǎn)擊“發(fā)送”
Then 提示“郵件發(fā)送成功”
? ? ? ?相較AC2而言,AC1郵件內(nèi)容不為空場景更具有用戶使用價值,使用頻率高于AC2。因此在AC編寫時,我們標(biāo)注出場景使用頻率,不僅可以使團(tuán)隊(duì)成員更深刻理解用戶場景使用價值,也可以使測試人員在進(jìn)行驗(yàn)收測試時更加注意測試重點(diǎn)。