在公司,我们正在开发一个相当大的项目,我们正在争论测试策略。问题是:所有的测试是否应该孤立地执行,比如数据库或API (facebook等),或者仅仅是其中的一部分?当然,我的想法是使用模型。我们讨论了以下策略:
我知道它可以开始一个相当大的讨论,但我认为这就是它的全部,我想找到的利弊,我还没有想到。
发布于 2014-08-13 12:22:30
如果做得好,第二种策略可以兼得两种策略的优点:
独立编写部分测试
将大多数测试与外部服务隔离是一个好主意,因为您无法控制该服务。最坏的情况是单元测试断断续续地失败,因为最终您将开始忽略故障,此时测试是无用的。创建一个模拟,为您的测试提供一致的响应,可以更容易地验证您的代码如何响应外部服务的给定响应。
为使用外部环境测试它的每个功能创建单个更大的功能测试
这可以提供更接近实际操作条件的系统行为的重要洞察力,使您能够识别和处理与模拟外部服务(如网络问题、输入或输出数据格式错误)时所遇到的不同问题。
如果您可以可靠地再现来自外部服务的一些响应,并且您想要验证您的代码是否以某种方式对它作出反应,那么测试它是有意义的。重要的是,您不允许在测试中出现间歇性的失败,例如,在每个构建中运行。我见过非常优秀的开发人员关闭测试,因为需要进行构建,而且他们没有时间修复一个晦涩复杂的测试。这是一个不好的情况,因为测试不再是他们的目的,对他们的信心降低了。
https://softwareengineering.stackexchange.com/questions/253165
复制相似问题