我对TDD世界很陌生。我有一些关于TDD的问题。
我是否必须先在TDD中进行测试?我听说TDD不是关于测试的。这是关于设计。我同意先做测试是好的,但我想知道的是,如果我们遵循测试最后的方法,它仍然是TDD吗?
我们是否更喜欢使用BDD而不是TDD?我曾经首先列出我的任务规范,然后尝试根据我的规范编写测试用例。这是错误的方法吗?你们喜欢使用BDD或TDD进行开发吗?
嘲讽?我的团队中的一些人过去经常说他们正在尝试TDD。但他们从不遵循测试优先的方法。他们从不嘲笑数据。我们是否必须在TDD中模拟数据?
“使用Mock Library”Vs“手动创建带有数据的模拟类”。您更喜欢使用模拟库还是使用一些模拟数据创建模拟类?
推荐的TDD或BDD书籍?我阅读了Kent Beck的经典测试驱动开发 - 通过示例。我发现这本书是在TDD的早期阶段出版的,所以本书中的一些内容并没有过时。
答案 0 :(得分:3)
1)。我是否必须先在TDD中进行测试? 我听说TDD不是关于测试的。 这是关于设计。我同意了 做测试优先是好的但是我 想知道的是它还是TDD 如果我们遵循测试最后的方法?
是的!严格来说,TDD是测试驱动开发。所以开发是由测试驱动的。所以先测试,然后开发程序以通过所有测试。
2)。我们是否更愿意使用BDD TDD?我曾经列出过 首先说明我的任务和我 尝试根据我的内容编写测试用例 规格。这是错误的方法吗? 你们喜欢使用BDD还是TDD? 为了你的发展?
我认为你应该平衡它们。使用其他技术首先提供最佳时间提供的整体设计(进行风险管理以找到您应该花费在设计上的适当时间)(查找关于“RUP essential”的论文。它提供了一个关于平衡敏捷和少敏捷)。确定最关键的部分然后创建测试并开发以通过测试。
3).Mocking?有些人来自我的团队 过去常说他们是在做事 TDD。但他们从不遵循测试优先 做法。他们从不嘲笑数据。做 我们必须在TDD中模拟数据吗?
先测试和嘲弄不是一回事。 Mocking允许代码更加可测试,并且当其他部分(此代码依赖)不存在时,可以测试代码。因此,如果没有这种依赖(IF !!),那么你可以不嘲笑它们。 (有关详细信息,请阅读关于Seam点的“Working Effectively with Legacy Code”。)
4)。 “使用Mock Library”Vs“手动创建带有数据的模拟类”。做 你喜欢使用模拟库或 使用一些模拟创建模拟类 数据?
我认为这就像使用别人的其他库或创建你的。完全取决于情况和许多因素。例如,如果您的项目很大并且您可以找到合适的模拟库,请使用它。
5)。任何推荐的TDD或BDD书籍?我读过Kent Beck的经典之作 测试驱动开发 - 举例。 我发现这本书出版于 TDD的早期阶段就这么一些了 本书中的内容并不多 过时的。
希望这有帮助。
答案 1 :(得分:2)
答案 2 :(得分:1)
我是否必须先在TDD中进行测试?
是的,TDD本质上是:
vagueness -> bullet points -> tests -> code
如果您正在使用其他一些过程,那么使用某些工具和技术是有意义的,但它实际上不是TDD。无论什么值得。
嘲讽?
不同的大师会提倡4个或多或少可行的替代方案。
mock-to-zero:模拟每个依赖项,使每个单元(例如java类)都经过有效的隔离测试。
模拟到线性:仅模拟循环依赖性,因此存在测试的线性排序,其中每个单元仅使用经过测试的依赖性进行测试。
mock-for-speed:只模拟慢速,异步或其他有问题的界面。
零模拟:只需测试内容,使用调试器计算出事情发生时会发生什么。
如果你不喜欢你的嘲弄工具,请避免使用#1;如果你不喜欢你的调试器,请避免使用#4。
答案 3 :(得分:1)
对于BDD,您可以在以下网址找到很好的参考:
您也可以为Dan North
跟踪the difference between TDD and BDD is small的工作其他链接Learning Behavior Driven Development (BDD)
对于我自己,我想如果你做BDD你已经做过TDD
我希望这会有所帮助
答案 4 :(得分:0)
答案 5 :(得分:0)
(我选择了最容易回答的问题,因为我没有资格回答其他问题)
TDD或BDD的任何推荐书籍?
Agile Software Development, Principles, Patterns, and Practices , by Robert C. Martin
答案 6 :(得分:0)
我是否必须先在TDD中进行测试?
是的,TDD必须先测试。首先编写测试允许考虑要根据行为而不是实现来编写函数,重点是调用函数和验证结果。 这导致了可测试的代码;否则你可能会发现自己陷入了死胡同 首先编写测试也可以更容易地忘记或忽略测试。
此外,写作和失败 - 测试首先允许测试测试。在代码之后编写的测试可能永远不会失败。
我们是否更喜欢使用BDD而不是TDD?
有人说BDD is TDD done right因为重点放在规格上。
我们是否必须在TDD中模拟数据? 我团队的一些人曾经说过 他们正在尝试TDD。但是他们 永远不要遵循测试优先的方法。
您不必使用模拟对象。只有一种工具,有时可以很方便。
“使用模拟库”Vs“创建 手动使用数据的模拟类“。
我从未觉得需要求助于模拟对象生成器。
通过示例,TDD是一个非常好的教程,并提供了一堆模式。另一本很棒的书,更多的参考文献是xUnit patterns。TDD或BDD的任何推荐书籍?