在过去的几周中,我一直在研究和研究如何填补我们的测试方法中的空白。简而言之,单元测试太小,而传统的集成测试太大。
经常出现的情况是A
,B
两者都使用component C
。但是A
,B
对的要求略有不同,并且对做出略有不同的假设C
。如果我是A
如何以及在哪里测试我的假设的开发人员C
?
显然,A
带有模拟假设的单元测试C
可以很好地进行A
隔离测试,但是它不能测试假设本身。
另一种可能性是为添加单元测试C
。但是,这不是理想的,因为A
在开发过程中,C
根据不断变化的假设更改测试A
将非常笨拙。确实,A
开发人员甚至可能没有足够的权限访问C
(例如,外部库)的单元测试。
用一个更具体的例子来说明这一点:假设这是一个节点应用程序。 A
,并B
依赖于C
读取文件(以及其他内容)并将文件内容存储在传递给的对象中C
。最初,所有C
处理的文件都很小,可以同步读取而不会产生明显的阻塞。但是,的开发人员B
意识到他的文件越来越大,需要切换C
到异步读取。这会导致中出现零星的同步错误A
,该错误仍假定C
是正在同步读取文件。
众所周知,这种错误很难从完整的集成测试中找到,并且根本不会在集成测试中发现。它也不受A
s单元测试的影响,因为A
s的假设是模拟的。但是,可以通过“ just” A
和“ C
。”行使的“迷你”集成测试轻松抓住它。
我只找到了关于这种测试的一些参考。小型集成,组件集成测试,单元集成测试。它还与BDD测试的方向有关,而不是正式的TDD单元测试。
如何填补这个测试空白?具体来说-我应该在哪里进行此类测试?如何嘲笑的投入A
,并C
为“迷你型”集成测试?在分离这些测试和单元测试之间的测试关注点上应该付出多少努力?还是有更好的方法来填补测试空白?