“黑-白”單元測試 單元測試方法
近期查看了一些關于敏捷開發,極限編程的一些資料。在敏捷開發中有一種比較出名的方式即TDD(Test Driven Development,測試驅動開發),這些都包含測試先行的思想。細細分析一下,發現其中有一些還是很有用的思想,也就是我今天要討論的問題,用“黑-白”流程來做單元測試。
其實這只不過是一種古老的思想了,Ron Patton的那本著名的《Software Testing》中已經提起過這種方法,我只不過是拿來念叨一下而已。所謂“黑-白”思想,其實很簡單就是在做單元測試的時候,先按照黑盒的理解來寫測試用例或者Test Code /Test Methods,然后再去看代碼,在從代碼的角度來更新用例:刪除“多慮”的用例,增加“漏網”的用例,更新“不合時宜”的用例。
“黑”,要求我們按照已有的需求分析文檔,以及PM提供的Feature Spec文檔來定義我們的測試用例,我們一開始要避免直接拿來代碼就寫單元測試,而是要思考我們需要避免哪些問題。比如再考慮一個用戶文本框輸入驗證的類的時候,我們按照黑盒測試的思想來考慮,例如非法字符的輸入驗證的問題,我們可能需要考慮“<>/'”等等這些用例,然后為了可以在用例執行完畢從執行結果中直接拿到導致失敗的字符,我們可能就需要寫一個驗證“'”的用例,寫一個“<”相關的用例等等。 軟件測試
“白”,在“黑”之后,即拿到代碼之后我們開始單元測試用例或者Test Code/Test Methods,這個時候我們拿到了代碼,知道了代碼的實現邏輯,我們就要對剛才“黑”出來的用例進行更新了。還是拿上面用戶登陸的例子來講,我們可能考慮了用戶輸入中一些非法字符對于數據庫的影響,當我們看到數據訪問層中的代碼是通過存儲過程來實現對數據庫的訪問,我們就大可放心了,這個時候我們就可以更新我們的用例,將我們那些用例刪除,當然最好的辦法是將所有的東西寫在一個用例中,可能只需要一個VerifyChars(string s)就可以了。
上面的例子比較牽強,我只是用來解釋我的想法而已。對于測試來講,方法是最重要的。測試遠不是隨便點點或者會一兩個工具就可以擺平的事情,對于測試,我將它作為職業,而不是工作。
文章來源于領測軟件測試網 http://www.kjueaiud.com/