相信很多人跟我有過一樣的困惑,那就是在需求階段我們測試人員到底應(yīng)該如何對需求進(jìn)行測試?大家應(yīng)該都經(jīng)歷過因為需求的緣故而導(dǎo)致大量的返工,造成進(jìn)度上的delay以及線上BUG的遺漏,要想得到好的result當(dāng)然離不開一個好的process支持。那么我們在項目的前期,應(yīng)該如何對需求進(jìn)行把關(guān)呢?個人建議可以從需求的完整性、正確性、二義性這三個方面來著手,隨著測試經(jīng)驗的積累,逐漸培養(yǎng)自己挖掘隱藏需求的能力,充分發(fā)現(xiàn)需求中不完善,不嚴(yán)密的地方。那么我們具體應(yīng)該怎么做呢?
第一步,先收集一切與需求有關(guān)的資料,如果可能的話,最好能拿到PD與運營方會議的討論細(xì)節(jié),里面一般會包含一些用戶使用場景的討論,這對我們的測試工作應(yīng)該是很有幫助的。我們可以按模塊去確定所包含的功能點,分析該功能所對應(yīng)的actor,明確actor之間的關(guān)系。針對單獨的usecase去分析其對應(yīng)的輸入、處理、和輸出,將自己的分析有條理的寫出來:不同條件下執(zhí)行某操作后得到不同的結(jié)果。?
第二步,分析業(yè)務(wù)流程,明確需求分析中不同的usecase所組成的業(yè)務(wù),形成一系列的業(yè)務(wù)場景活動圖:拆點: 對應(yīng)的每一個功能點將其對應(yīng)的輸入,處理和輸出進(jìn)行提取; 連線 :將每一功能所對應(yīng)的輸入,處理和輸出形成業(yè)務(wù)活動圖;
第三步,了解系統(tǒng)所涉及到的數(shù)據(jù)流,分析功能入口和角色權(quán)限。確定系統(tǒng)的數(shù)據(jù)流動,包括系統(tǒng)的內(nèi)部模塊間數(shù)據(jù)流和系統(tǒng)間的數(shù)據(jù)流接口,在這些地方一般都比較容易出問題。確定系統(tǒng)擁有多少角色(業(yè)務(wù)),他們負(fù)責(zé)什么樣的工作,在系統(tǒng)中體現(xiàn)在那些模塊中。然后畫出這些角色的用例,或者他們涉及的業(yè)務(wù)。我們可以先把每一個角色所做的每一個功能點列出來,然后再將它們放到一個完整的業(yè)務(wù)流中去;或者先畫出整個的業(yè)務(wù)流,然后再分配給角色。最后得到一個完整的圖,它包含整個系統(tǒng)所有業(yè)務(wù)流程,并且有哪些 角色在某個節(jié)點上能夠做哪些操作(擁有哪些權(quán)限),這些其實就是我們測試的重點。
第四步,確定公共部分需要測試的需求。系統(tǒng)中有一些部分是很多角色所共同擁有的,并且不涉及具體的業(yè)務(wù)流程。將這部分內(nèi)容整理出來,一般來說這些內(nèi)容只會涉及到界面和普通功能的測試,如定義系統(tǒng)界面風(fēng)格。?
針對需求完整性的驗證方法:
1.項目范圍是否清晰?應(yīng)該能清楚的標(biāo)明哪些功能要實現(xiàn),哪些功能本期不實現(xiàn),這樣我們才能確定測試范圍。
2.是否說明了對每個輸入的驗證措施,并描述了每個輸入的屬性,如:邊界值、時序要求等以及對于出錯時的處理
3.是否清楚描述了系統(tǒng)中與其它子系統(tǒng)、模塊間的關(guān)系,包括頁面的跳轉(zhuǎn),傳遞的參數(shù),對于業(yè)務(wù)邏輯的控制是否需要兩邊都進(jìn)行控制還是只需要調(diào)用方進(jìn)行控制即可?這個主要是用于項目中涉及到系統(tǒng)之間的調(diào)用的情況
4.對于是改造型的項目,是否已經(jīng)說明了對歷史數(shù)據(jù)的處理?如果對于新老系統(tǒng)共存的情況下,要說明兩個系統(tǒng)之間數(shù)據(jù)的處理關(guān)系,以及數(shù)據(jù)遷移時需要關(guān)注的內(nèi)容
5.頁面展現(xiàn)的處理:對于不允許進(jìn)行操作的控制,是直接進(jìn)行屏蔽還是展示后進(jìn)行相關(guān)控件的disable處理
6.借助數(shù)據(jù)流圖以及狀態(tài)轉(zhuǎn)化圖對需求進(jìn)行測試,檢查每個路徑的步驟是否都清晰明了,主干過程、分支過程、異常處理的每個步驟是否都已經(jīng)描述清楚了參與者要干什么?系統(tǒng)要響應(yīng)什么?是否還存在開環(huán)的情況?
7.是否有對用戶類型的描述?需求組合是否充分地考慮了所有異常的情況?是否已經(jīng)考慮到了所有人的需求?是否充分地提出了邊界情況?所有到其它需求的交叉引用是否都正確?
針對需求正確性,二義性的檢查:
主要是考慮文檔中是否存在描述模糊的地方,對于模棱兩可的問題,一定要明確具體的輸出是什么,可以