删除“集成测试骗局” - 了解协作和合同测试

时间:2012-02-14 11:50:51

标签: unit-testing testing integration-testing collaboration contract

我最近看过J. B. Rainsberger的Integration Tests are a Scam,现在正在寻找关于这个主题的更多资料。我不得不说,我对我们做错了多少感到震惊(即我们应该进行单元测试时的集成测试),对Rainsberger描述的概念很感兴趣,但也对如何应用它们感到困惑。我想进行更多描述的协作测试和合同测试,但我不知道从哪里开始。

我想到的唯一问题是测试需要提出的4个问题:

A方:

Do I ask the right question?
Can I deal with the answer?

B方:

Can I answer a question?
Do I answer correctly?

但是如何将它应用于我的应用程序堆栈中的一些随机方法?

是否有一本书或教程或示例,它们采用了真实世界的例子并应用了这些孤立微测试的想法? 理想情况下,该示例使用Java,C#或C ++。

任何能够更好地理解这些概念并且帮助我更好地理解它们的文献都将受到赞赏。

此外,如果有论坛,我可以询问有关如何正确进行单元测试的更详细的问题,甚至可能重构现有的代码和发布示例也不错。

谢谢!

2 个答案:

答案 0 :(得分:3)

我建议xUnitTestPatterns - Refactoring Test Code by Gerald Meszaros提供一些问题的见解,以及在各个方法级别进行测试时各种实践的好与坏的详细信息。

如果您已阅读Fowler的Refactoring,您会发现问题的答案不一定是黑白分明,而是基于您和其他人的经验启发式。

答案 1 :(得分:1)

Rainsberger过度夸大了低效的集成测试,以证明他在代码中达到最终100%质量(基本正确性)的意义

DbC专注于规范A和B双方之外的责任和利益。就像界面的扩展。因此,主要焦点变成了契约本身,中间的一层将告诉双方是否可以相互交互。

Rainsberger明确表示到目前为止还没有明确的图书馆或语言支持,并且同时实现A模拟和B输入同样的事情,暗示它可能是某人的博士研究工作。

然而,Jim Weirich有一个很好的例子,其中合同是用于测试的OO模式以及同意使用它的双方 https://www.youtube.com/watch?v=7Yw744FMqTY