tdd思路
两个星期前,我参加了Paul Stringer的课程“在iOS中掌握TDD / BDD” 。 两天后,我筋疲力尽...在学习过程中,我们研究了所有理论并完成了一些练习。 保罗给了我们很多链接和书籍供阅读,坦率地说,我感到不知所措。 我看到自己坐在电脑前,所有的链接都可以跟随和阅读,但我不知道该怎么做……所以我躺在椅子上,闭上眼睛思考着……我对TDD有什么了解?
遵守规则...
好吧,我知道它有法律:
- 在编写任何生产代码之前,必须编写失败的测试。
- 您编写的测试不得超过失败或编译失败的数量。
- 您编写的生产代码不得超过足以使当前失败的测试通过的代码。
我知道我应该遵循以下圈子:红色–绿色–重构:
- 红色–创建失败的测试
- 绿色–编写足够的代码以使测试通过
- 重构–清理代码和测试(不要忘记测试也是代码)
这很好地执行了TDD的三个法律。 正如肯特·贝克所说:
让它起作用。 改正它。 快一点。
如果你想知道所有关于TDD的周期, 这里是一个很好的文章Bob大叔
去你最喜欢的学校...
还有学校……不是物理学校:
- 底特律/芝加哥学派或古典主义方法
- 而伦敦学校还是模仿主义者的方法。
第一个使用真实的对象/类,并测试这些对象的状态。 第二个测试对象之间的协作,并为此使用模拟。 您拥有Sandro Mancuso 撰写的这篇文章以及Jonathan Rasmusson 撰写的另 一篇文章 ,可以帮助您更好地区分它们。
认识你的朋友...
作为iOS开发人员,由于我是从UI驱动测试的,所以我往往更喜欢模拟。 由于我们没有Mocking框架,因此在Swift中开发应用程序具有一些挑战性的方面……我们都是“手工”完成的……所以,很清楚知道您需要哪种测试倍数是一件好事。 人们倾向于称它们为嘲笑,但正如马丁·福勒 ( Martin Fowler) 在这里说的那样:
不是存根
但是,如果您仍然对测试倍数仍有疑问,那么Bob叔叔的这篇出色文章肯定会对此有所启发……(我什至在这里找到了Swift的一个版本)。 神奇!
确定优先事项
是的,这是非常重要的一个:使用转换优先级前提避免繁琐的步骤,并引导您进行代码的一般化。 正如鲍勃叔叔所说:
[…]重构具有称为“转换”的对应项。 重构是简单的操作,可以更改代码的结构而不更改其行为。 转换是更改代码行为的简单操作。
另外一个很好的文章是这样一个由佩德罗·桑托斯 。 不要忘记,在重构阶段,您的设计技能会受到考验:正如Sandro Mancuso 在这里所说:
TDD不是设计工具。 这是一个软件开发工作流程,可在其生命周期中提示代码改进。 […] TDD的妙处在于它不断问我们:“嘿,您能使您的代码更好吗? 看看这门课变得越来越困难吗? 好的,您成功了。 这是您的绿色酒吧。 现在做得更好。”
有良好的
必须像对待学科一样对待TDD。 您必须养成良好的生活习惯。 这是TDD的良好习惯宣言 。 在Mani Sarkar和Pedro Santos 主持下的会议中,这是SoCraTes UK '16的首次会议,他们挑战了我们在原始草案中添加或删除实践的方法,您可以在此处看到。
结论
好吧,似乎我对TDD的了解最少。 仍然需要练习很多,并应用我在编码时学到的知识。 以下是一些您可以阅读的书:
- 由Steve Freeman和Nat Pryce 进行的测试指导的不断增长的面向对象软件 。
- 重构: Martin Fowler 改进了现有代码的设计 。
- ATDD示例:MarkusGärtner撰写的“验收测试驱动开发实用指南” 。
- 肯特·贝克(Kent Beck)的测试驱动开发 。
- 迈克尔·费瑟斯(Michael Feathers) 有效地使用“遗留代码” 。
翻译自: https://www.javacodegeeks.com/2016/06/mastering-tdd.html
tdd思路