測試用例設計的5大誤區

新夢想IT發表於2022-06-17


1、能發現到目前為止沒有發現的缺陷的用例是好的用例:

首先要申明,其實這句話是十分有道理的,但我發現很多人都曲解了這句話的原意,一心要設計出發現 “難於發現的缺陷”而陷入盲目的片面中去,忘記了測試的目的所在,這是十分可怕的。我傾向於將 當作一個集合來認識,對它的評價也只能對測試用例的集合來進行,測試本身是一種 “V&V”的活動,測試需要保證以下兩點:

1)程式做了它應該做的事情

2)程式沒有做它不該做的事情

因此,作為測試實施依據的測試用例,必須要能完整覆蓋測試需求,而不應該針對單個的測試用例去評判好壞。

 

2、 應該詳細 記錄 所有的操作資訊,使一個沒有接觸過系統的人員也能進行測試;

不知道國內有沒有公司真正做到這點,或者說,不知道有國內沒有公司能夠將每個測試用例都寫得如此詳細。在我的測試經歷中,對測試用例描述的詳細和複雜程度也曾有過很多的彷徨。寫得太簡單吧,除了自己沒人能夠執行,寫得太詳細吧,消耗在測試用例維護(別忘了,測試用例是動態的,一旦測試環境、需求、設計、實現發生了變化,測試用例都需要相應發生變化)上的時間實在是太驚人,在目前國內大部分軟體公司的測試資源都不足的情況下,恐怕很難實現。但我偏偏就能遇到一些這樣的老總或者是專案負責人,甚至是測試工程師本身,全然不顧實際的資源情況,一定要寫出 “沒有接觸過系統的人員也能進行測試”的用例。

在討論這個問題之前,我們可以先考慮一下測試的目的。測試的目的是儘可能發現程式中存在的缺陷,測試活動本身也可以被看作是一個 Project,也需要在給定的資源條件下儘可能達成目標,根據我個人的經驗,大部分的國內軟體公司在測試方面配備的資源都是不足夠的,因此我們必須在測試計劃階段明確測試的目標,一切圍繞測試的目標進行。

除了資源上的約束外,測試用例的詳細程度也需要根據需要確定。如果測試用例的執行者、測試用例設計者、測試活動相關人對系統瞭解都很深刻,那測試用例就沒有必要太詳細了,文件的作用本來就在於溝通,只要能達到溝通的目的就 OK。

在我擔任測試經理的專案中,在測試計劃階段,一般給予測試設計 30% - 40%左右的時間,測試設計工程師能夠根據專案的需要自行確定用例的詳細程度,在測試用例的評審階段由參與評審的相關人對其把關。

 

3、 設計是一勞永逸的事情;

這句話擺在這裡,我想沒有一個人會認可,但在實際情況中,卻經常能發現這種想法的影子。我曾經參與過一個專案,軟體需求和設計已經變更了多次,但測試用例卻沒有任何修改。導致的直接結果是新加入的測試工程師在執行測試用例時不知所措,間接的後果是測試用例成了廢紙一堆,開發人員在多次被無效的缺陷報告打擾後,對測試人員不屑一顧。

這個例子可能有些極端,但測試用例與需求和設計不同步的情況在實際開發過程中確是屢見不鮮的,測試用例文件是 “活的”文件,這一點應該被測試工程師牢記。

 

4、 不應該包含實際的資料;

測試用例是 “一組輸入、執行條件、預期結果”、毫無疑問地應該包括清晰的輸入資料和預期輸出,沒有測試資料的用例最多隻具有指導性的意義,不具有可執行性。當然,測試用例中包含輸入資料會帶來維護、與測試環境同步之類的問題,關於這一點,《Effective Software Test》一書中提供了詳細的測試用例、測試資料的維護方法,可以參考。

 

5、 中不需要明顯的驗證手段;

我見過很多測試工程師編寫的測試用例中, “預期輸出”僅描述為程式的可見行為,其實,“預期結果”的含義並不只是程式的可見行為。例如,對一個訂貨系統,輸入訂貨資料,點選“確定”按鈕後,系統提示“訂貨成功”,這樣是不是一個完整的用例呢?是不是系統輸出的“訂貨成功”就應該作為我們唯一的驗證手段呢?顯然不是。訂貨是否成功還需要檢視相應的資料記錄是否更新,因此,在這樣的一個用例中,還應該包含對測試結果的顯式的驗證手段:在 資料庫 中執行查詢語句進行查詢,看查詢結果是否與預期的一致。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2901220/,如需轉載,請註明出處,否則將追究法律責任。

相關文章