在过去的几周中,我一直在研究和研究如何填补我们的测试方法中的空白。简而言之,单元测试太小,而传统的集成测试太大。
经常出现的情况是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是正在同步读取文件。
众所周知,这种错误很难从完整的集成测试中找到,并且根本不会在集成测试中发现。它也不受As单元测试的影响,因为As的假设是模拟的。但是,可以通过“ just” A和“ C。”行使的“迷你”集成测试轻松抓住它。
我只找到了关于这种测试的一些参考。小型集成,组件集成测试,单元集成测试。它还与BDD测试的方向有关,而不是正式的TDD单元测试。
如何填补这个测试空白?具体来说-我应该在哪里进行此类测试?如何嘲笑的投入A,并C为“迷你型”集成测试?在分离这些测试和单元测试之间的测试关注点上应该付出多少努力?还是有更好的方法来填补测试空白?