當你想出一個關於系統的一部分應該如何工作的總體設計/想法時,你如何決定從何時開始進行TDD,或者說,你如何決定從第一次測試開始?你會從哪開始?
你會從哪開始?
回答
讓我們假設我正在編寫一個名爲Oven
的類來烘焙我的美味Pie
對象。這是我如何通過單元測試順序:
- 我需要做什麼來實例化對象?在這種情況下,它很可能是
Oven oven = new Oven();
沒有這個測試,我想。 - 如何準備對象以供使用?
oven.turnOn(int degrees)
聽起來不錯,我會那樣做。我如何檢查它?最好使oven.getTemperature()
。有一個明顯的考驗。 - 好吧,烤箱現在已經夠熱,我想烤我的
Pie
。爲此,我需要oven.bake(Pie p)
,所以我會做到這一點。但現在呢?我想檢查餡餅是否準備好了,而不是讓oven.isPieReady()
我認爲oven.pastryStatus()
返回的東西如「烤箱裏沒有東西」,「原料」,「幾乎完成」,「煮熟」和「燒焦」聽起來不錯,一般應該比oven.isPieReady()
更可擴展,所以我會這樣做。
等等等等。所以,我會做我的測試,以便我期望使用這個對象來完善規範。最後,我通常會用相當簡單但功能強大的API來完成我想要的功能。在我單元測試了我的API之後,我運行了我的代碼的覆蓋範圍,以查看我錯過了什麼,然後爲這些添加了額外的測試。
我會爲最獨立/最低級別的功能構建一組單元。一旦你有這些類通過每一個測試,你可以繼續前進,假設它們在被更多依賴的功能調用時會工作。
這些是一般準則我發現用於優先化單元測試有用:
1)確定邊界的對象(贏/ WebForms的,CustomControls等)。
2)確定控制對象(業務層對象)
3)寫單元測試只對控制對象由邊界的對象調用的公共方法。這樣你就可以確定你覆蓋了你應用的主要功能。
你可以使用這些規則來優先考慮你的單元測試 - 然後如果你需要微測其他東西,你也可以根據你的需要來做。
當面對的測試列表來實現,你必須類別
- 微不足道的測試,但你確定你 可以完成這件事。
- 非平凡但 你有理由相信 完成它。
- 不平凡但 很難 - 絕對沒有線索 完成它。
在這種情況下,從Category2存儲桶中選擇一個存儲器,因爲它將提供每單位投入時間的最大知識/學習。此外,它會讓你滾動,並提高信心,以加速到更困難的Category3測試。
我想我是從TDD By Example得到這個 - Kent Beck。看看你是否有時間。推薦。
我一直在TDD上教授一堂課,現在有很多參與者開始測試所有的錯誤案例。儘管他們可能是相關的,但這不是啓動imo的最佳方式。
從設置測試開始,這些測試很容易實現,並且仍然告訴您是否正在朝着正在嘗試實現的功能的正確方向前進。因此,如果您正在構建堆棧,請確保在測試錯誤案例之前驗證推送和彈出窗口。
請記住,測試的目標不僅是驗證行爲,還讓您使用被測型的接口。如果編寫測試感覺不對,您可能需要更改界面。
一個好主意是向後做每個測試用例。因此,從編寫Assert語句開始。這是此測試驗證的目標。然後添加必要的步驟以達到您可以執行Assert所做的操作。
- 1. 你如何選擇從哪裏開始?
- 2. Silverlight - 你從哪裏開始(免費)?
- 3. SSAS - 你從哪裏開始使用它?
- 4. - 從哪裏開始?
- 5. webdev:從哪開始?
- 6. 從哪裏開始
- 7. virtualenv依賴於你從哪裏開始python從
- 8. 開始從哪裏開始移植?
- 9. 寫你自己的媒體庫:從哪裏開始?
- 10. 你會在幾歲開始教你的孩子編程?什麼語言開始?
- 11. 你會開始學習Smalltalk嗎?
- 12. 從哪裏開始C#
- 13. Jruby從哪裏開始?
- 14. 從哪裏開始Python
- 15. nodejs從哪裏開始?
- 16. XNA從哪裏開始?
- 17. 從哪裏開始Android Android
- 18. 從哪裏開始Rails
- 19. 崩潰 - 從哪裏開始?
- 20. 從哪裏開始 - android?
- 21. Hashtable/Map:從哪裏開始
- 22. 從哪裏開始Magento?
- 23. 從哪裏開始聯網
- 24. Mean.js,我從哪裏開始?
- 25. Silverlight MVVM從哪裏開始
- 26. 從哪裏開始NodeJS?
- 27. dealloc從哪裏開始?
- 28. 從哪裏開始春季?
- 29. XSLT從哪裏開始?
- 30. .NET 3D,從哪裏開始?
+1做得很好,先生 – annakata 2009-01-15 14:04:54
如果你把貓C放在烤箱裏會發生什麼?怎麼樣放入一個「燒焦」的派,或者一個沒有準備好烤箱的派?限制和無效輸入測試很重要。 – Tester101 2009-01-15 14:16:12