撰寫實例化需求範例常見的錯誤

很多人在撰寫實例化需求範例, 老是覺得分不清楚他跟測試的差別, 不是都是在寫測試個案嗎? 到底不同在哪? 今天就讓我們舉個例子來說明吧

讓我們來看下面這個範例:

given I am an authorized user
when I enter “David” into username field
and I enter “test” into password field
and I click on “login”
then the system home page should open

這個範例很明顯的是畫面操作, 只是系統要求用戶要怎麼做, 但是沒有說用戶想要做什麼.

這個過程只是說明了系統會這樣設計, 但是沒說明用戶的需求是什麼

用戶只是想要有安全機制來登入系統, 你可以請用戶輸入帳號和密碼, 也可以提供刷臉, 語音或是按指紋.

所以你可以改寫成

given authorized user “David”
when “David” login correctly
then “David” can access their accounts

需知道 spec by example 是在早期確認需求階段時寫的, 這時候不見得所有設計系統都已經知道. 這時候的重點是客戶要描述需求, 而實作不在這時候處理. 實作的細節可能隨著時間的演進, 會有所改變.

開發人員不是程式碼輸入員, 而是問題的解決者, 他需要了解是什麼. 當他了解問題後, 可以使用 copilot 之類工具, 幫你產生出好的程式碼. 所以你要小心的是, 你不懂你要解的問題領域, 是很容易被 copilot 所取代.

我們再來看另一個範例:

given I am logged
then I should see “User management homepage”
when I select the “Profile” menu
then I should see “Profile”
and I should see a list of attributes
when I click “edit”
then I update address “xxxxxx”
and I click “save”
when I click “edit”
then I update email “xxxxxx”
and I click “save”
…..

其實這邊要做的是在進行測試, 他並不是在描述需求或是系統行為. 而且這樣的自動化是很碎弱的, 只要有個地方改變了, 就可能導致執行錯誤. 這些細節可能在單元測試或是整合測試去做. 而不是在實例化需求時去做

你可以改寫成:

Scenario: updating user attributes
given I login
when I update my attributes
then the updated information should be available when view the information.

所以看到這裡, 我想強調的實例化需求範例

(1) 是在描述系統行為, 而不是畫面操作

(2) 當你的範例太長時, 很可能你在描述測試, 而非需求

今天我們就先談到這裡

發表迴響

探索更多來自 轉念學 - 敏捷三叔公的學習之旅 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

Continue reading