现在已经完全了解什么是集成测试,让我们看看开发人员经常使用的各种类型的集成测试。
大爆炸法是最常见的集成测试类型之一。本质上,您要测试的所有单元都被粉碎在一起并同时进行了测试。现在,这对于小型软件项目或完成其他形式的测试之后非常有用。
但是,它确实有其缺点。首先,如果发现错误或错误,测试人员将不知道是哪个模块负责,因为它们都组合在一起了。他们将不得不分离一些,然后再次运行测试,重复进行直到找到错误为止。
增量方法采用两个或多个在逻辑上对齐的模块,并在一个批次中对其进行测试。然后,添加其他相关模块并将它们一起测试,依此类推,直到所有模块都成功合并并彼此成功测试为止。
自下而上的集成方法一次从较低级别的一个模块中提取一个模块,并使用较高的模块对其进行测试,直到成功测试了所有模块。该方法对于检测故障定位非常有用。此外,像大爆炸一样,它不会浪费时间在测试之前等待模块完成。但是,这并不完美。由于最关键的模块(顶层模块)最后经过测试,因此它们更容易出现缺陷。
自上而下的集成与自下而上的集成相反。您一次在顶部测试模块,然后在底部测试模块,直到测试完所有模块。该模型的优点在于,首先对关键模块进行了测试,因此可以立即发现并修复所有重大缺陷。该模型的缺点是,较低的级别没有引起足够的重视,并且可能没有得到充分的测试。
混合方法将自上而下与自下而上相结合。基本上,您将同时使用较低的模块测试顶部模块,同时使用较低的模块测试下部模块。顶部和底部被同时集成,搭配使用带来两全其美的效果。
现在,在开始实施集成测试之前,重要的是要制定一些策略。以下是我们建议的一些集成测试最佳实践:
我们已经明确指出,集成测试应该在单元测试之后进行,对于许多 DevOps 团队而言,这是正在发生的事情。
关键是如果遵循敏捷软件开发的原则,则不必等待执行诸如集成之类的主要测试。当使用持续集成之类的方法时,将不断执行测试。根据 Aaron Cois 的观点,CI 是一种旨在:
“将团队中所有开发人员的源代码更新不断合并到共享主线中。这种持续的合并可以防止开发人员在本地开发的软件项目副本在其他人添加新代码时偏离太远,从而避免了灾难性的合并冲突。”
在软件开发的瀑布模型时代,必须在单元测试之后进行集成测试。但是今天,您有了更大的灵活性来选择合适的时间来执行集成测试。
尽管可以在需要的时候运行集成测试,但是不应将它们与单元测试同时运行。
开发人员需要时间来通过运行单元测试并获得即时反馈来处理代码中的业务逻辑问题。这样做是为了确保不会将有问题的代码提交给主线。
将测试套件分开放置可使开发人员运行快速的单元测试,并将构建服务器的冗长集成测试过程保存在另一个测试套件中。
如果在单元测试期间出现问题,则很容易找出原因并解决问题。但是由于集成测试的范围和复杂性(通常跨越多个模块和硬件组件),确定集成失败的原因要困难得多。
要解决此问题,应该使用日志记录各种操作和数据。日志记录可以帮助您更好地分析故障,并记录故障的潜在原因,并排除其他原因,以缩小真正的范围。
向开发人员提供一个通用的共享文档,该文档列出了执行集成测试时可以参考的一系列逻辑操作。使整个公司的测试保持一致,甚至允许项目经理分配正确的资源以开始集成测试过程。