当你想出一个关于系统的一部分应该如何工作的总体设计/想法时,你如何决定从何时开始进行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