當然,這也并不是要您走向另一個極端,為需求中定義的每個特性或功能都提供一個甚至多個測試用例。這里的關鍵,是要尋找一個合適的度。
我們推薦的方法是:關注有效功能。
有效功能:就是指在被測應用所涉及的實際業務中,當用戶在手工狀態下進行工作時,整個業務流程中對用戶來說,具有實際意義那些功能。這個功能的特征是當我們把這個功能單獨從計算機軟件還原到用戶的原始手工狀態時,它的完成可以作為用戶實際業務的一個階段性結束的標志,而不是一旦從這個業務流程中獨立出來就失去了意義。而該業務完成后,可以為其他用戶或業務提供所需要的信息。
這里區分“有效功能”的關鍵有如下兩個:
1. 這個功能是可以還原到用戶原始的手工業務流程中去的。我們的計算機和軟件,都是為了幫助用戶解決手工業務中一些煩瑣和低效的問題,而提出的一些忠實于原始工作方法或略有變通的解決方案,并不是要改變用戶全部的業務流程。所以,應該從用戶實際業務的角度來判斷功能是否有效。
2. 這個功能是否可以標志著用戶實際業務的一個階段性結束?并且這項業務完成之后,被完成的業務實體是否可以交付給其他用戶或業務以供完成下面的工作?為了方便理解,我們可以先看一下下面的例子。拿我們常見的財務軟件來說,當添加一張會計憑證時,通常是需要填寫會計科目,在使用計算機完成工作時,我們可以利用軟件的功能,從很多備選科目中選擇一個自己需要的科目,或者通過科目代碼來輸入科目。這項功能很有可能會作為一個特性要求出現在軟件需求規格說明書中,那么這個科目的選擇或輸入是不是一個有效功能呢?讓我們試著用上面規則來衡量一下。首先,這個功能在用戶手工業務處理過程中是存在的,不同的是這項功能是在用戶填寫憑證時,在自己的大腦中完成的——用戶會根據需要,在自己記憶的科目中選擇合適的填寫上去,這項功能節省了用戶在記憶大量會計科目時付出的額外勞動。我們可以認為這個功能是為用戶原來的工作提供了一種簡便的、變通的方法。那么這項功能的完成對于用戶來說意味著什么呢?我們從上面的描述中可以看到,用戶希望軟件提供的是可以添加一張完整的憑證這樣的功能,而不僅僅是方便填寫會計科目。填寫會計科目只是用戶在添加憑證時的一個步驟,單獨把這個功能提取出來對用戶來說沒有任何實際意義。
對于業務流程下游的用戶,需要的也不僅僅只是一個會計科目的信息,而是一張包含了會計科目以及其他會計信息的完整的會計憑證,否則就無法進行下面的工作。這樣看來,這個功能并不是一個有效的功能,我們可以把它最為需要測試的特性在測試需求中進行描述,卻不應該作為一個單獨的測試用例出現在我們的測試用例集中。而我們在測試用例中真正關注的,應該是添加會計憑證這個具有實際意義的功能。另外,我們還需要關注如何將多個相互之間存在依賴關系的功能區分為單個的有效功能。例如,現在有A、B、C三個功能,其中B功能的開始必須依賴于A功能的完成,而且A功能如果出現不同的完成狀態,B功能也會做出不同的反應;C功能對B功能的依賴也是如此。那么這時候,我們是否應當將三個相互依賴的功能包含在一個測試用例中呢?這樣的做法也不是不可以,但是我們也可以先判斷一下,這三個功能是否都是有效功能(您可以使用前面提到的方法來試著評判一下)?如果A、B、C都是獨立的有效功能,那么我們可以從上面的描述中發現,它們之間存在的依賴性,可以理解為是一種狀態或者說數據的依賴性。后一個功能關心的,是前一個功能最終提供給它的是什么樣的“輸入”,而不是前一個功能到底作了些什么。這樣看來,我們完全可以將它們分別包含在幾個獨立的測試用例中,而在每個測試用例的開始,把不同的輸入作為不同前置條件來描述。
文章來源于領測軟件測試網 http://www.kjueaiud.com/