計測試用例的過程是否就是系統設計的概念? 測試用例設計
設計、測試用例,兩碼事
測試人員設計測試用例的過程跟系統設計的概念沒有太大的聯系,測試人員可以參與設計,從測試人員的角度提出自己的建議,但不要把自己當做設計人員去設定系統規則。
測試的目的,第一驗證程序是可以按照需求和設計運行的;第二找出程序不能按照需求和設計運行的問題,并保證這些問題被最終修正。
因此不要期望 測試人員設計測試用例的過程 跟 系統設計 劃上什么等價關系。
首先,設計、開發、測試從原則上講是相互獨立的,但彼此之間互相協作,通過不同的角度去審視之前的工作,發現前期工作的存在的問題。
因此,測試可以去對設計進行測試,發現設計中的不足。特別是那些設計中提到的,但是在實際的測試過程中跟本就如法去實現測試的設計點。
其次,“系統的規則(比如輸入什么類型的數值,輸出結果是什么)”不是由測試人員來定的,而是由需求和最終的用戶實際需求來定的。除非測試人員是行業專家或者是全程參與了需求的獲取過程,否則不要去設定系統規則。
最后,“然后開發人員在此規則下進行開發”,不要期望用測試人員的規則去規范開發。因為測試的目的是從不同的角度發現設計和開發中的問題,如果用測試人員的規則去指導開發,然后再由測試人員來測試,這跟開發人員開發后自己再測試有什么區別嗎?
對TDD的理解
1.什么是測試驅動開發
測試先行。在動手進行編碼時,先編寫相應的測試用例,然后跟據用例進行編碼,生成的編碼必須通過先前的測試用例的驗證。
但測試先行,不是測試人員先行,而是單元測試先行,一般是由開發人員自行完成的(如果有能力,測試人員可以參與,結對編程是個不錯的選擇)。用先行的單元測試用例去驗證生成的代碼的正確性,循環往復,盡可能早的暴露問題。
2.測試驅動開發的好處
引用《Agile Software Developmentrinciples, Patterns, and Practices 》的觀點
1)測試先行可以避免相當數量的反饋循環。--可以將問題暴露在最小的代碼范圍內。
2)程序的每一基功能都有測試來驗證它的操作的正確性。--同時也驗證了需求和設計的正確性,功能實現來自于需求和設計。
3)編寫測試用例可以迫使我們使用不同的觀察點。--以不同的角度審視程序實現,提高代碼質量。
4)編寫測試用例幫助程序員了解如何使用代碼,測試用例是可編譯、可運行的,它保持最新,不會撒謊。
5)測試驅動開發迫使我們把程序設計為可測試的,易于調用,因此程序必須和它的周邊環境解耦,迫使我們解除軟件中的耦合。--個人認為這個是最重要的,一個不可測試的程序,對于后期的工作將是災難的。
文章來源于領測軟件測試網 http://www.kjueaiud.com/