一般需求文件, 開發人員都會覺得寫得不是很清楚, 讓他們誤解客戶或是 PM 的意思, 導致開發過程來來回回, 時間和成本都浪費了.
這時候 PM 可能會跳出來說, 我已經寫得很詳細了, 否則你出來寫寫看, 看看在相同時間和壓力下, 你是否能寫得更好.
沒錯有些 PM 是非常努力, 盡可能把他知道或者所有狀況寫出來, 他們已經做出最好表現了. 但是, 文字描述天生上就容易讓人誤解, 並且有很多漏洞, 所以需要有別的方法來幫忙.
例如: 一個登入畫面的功能, 用戶要輸入用戶代碼和密碼.
用戶代碼: 最長 120 個字元, 只能包含文字和數字
密碼: 至少 6 個字元. 包含文字, 數字, 和特殊符號
當輸入錯誤時, 要顯示訊息提示告訴用戶
如果我們再加上以下範例來近一步說明這個需求, 是不是清楚一些
個案代碼
|
用戶代碼
|
密碼
|
系統反應
|
註解
|
1
|
abc
|
A12345
|
顯示系統數位儀表板頁面
用戶代碼線顯示於右上角
|
|
2
|
大衛
|
A12345
|
彈出視窗
顯示: "不合法用戶”
|
不能接受中文
|
3
|
AAAA
|
A12345
|
彈出視窗
顯示: "不合法用戶"
|
不能接受全形
|
因為他使用明確 (specific) 的輸入, 以及明確 (specific) 的輸入, 而不是”最長 120 個字元” 這樣有點模糊的句子,
這個表格並不是測試程式碼, 但是等程式寫完之後, 是可以用來驗證開發人員寫的是否正確的. 如果之後有人有空可以將它自動化, 也沒自動化也容易讓測試人員進行手動測試, 因為它就是一堆明確的測試個案.
測試個案 和 需求文件 的差別, 在於測試個案需要有明確的輸入資料, 以及明確的預期結果值, 將來不管誰來執行這些測試個案, 所得到的結果才會相同. 可是需求文件不見得有 specific 的資料值, 因此每個人解讀可能不同, 或者每個人會輸入的資料值會不同, 導致可能會有不同的結果發生.
所以在討論需求時, 利用一些範例 (examples) 來詳加說明需求, 那些範例就變成是測試個案, 這些測試個案將來就用來驗證需求是否被落實. 如下圖所示. 這就是 Spec by Example 想要強調的精神.
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/kojenchieh/1570768553-1006616947_n.png&width=600&height=277)
至於是不是把把測試個案弄成自動化, 那是後話, 那是錦上添花.
所以不管你需求文件寫的詳不詳細, Spec by example 的精神都是對你幫助的.
全站熱搜