【问题标题】:Need of Integration testing需要集成测试
【发布时间】:2013-07-02 10:39:00
【问题描述】:
我们在前端有 Eclipse UI,有一个非基于 Java 的后端。
我们通常为前端和后端分别编写单元测试。
我们还编写了针对虚拟后端运行 Eclipse UI 的 PDE 测试。
我的问题是我们是否需要进行端到端测试的集成测试。
我可能会看到这些集成测试很有用的一个原因是,当我升级我的前端/后端时,我可以运行端到端测试并发现缺陷。
我知道这类问题取决于特定情况。
但是想知道这里所有人遵循的一般和最佳实践是什么。
干杯,
索拉夫
【问题讨论】:
标签:
testing
junit
integration
eclipse-pde
【解决方案1】:
正如您所说,最好的方法取决于应用程序。但是,一般来说,拥有一套可以端到端测试您的应用程序的集成测试是一个好主意,以找出当您只升级应用程序的一层而不考虑这些更改时可能出现的任何问题在另一层。这听起来对您来说绝对值得,因为您有用不同语言编写的系统组件,由于组件接口周围的复杂性增加,这自然会增加出现问题的机会。
在编写端到端集成测试(有些人称之为系统测试)时需要注意的一点是,与单元测试相比,它们往往非常脆弱,这是多种因素的组合,包括:
- 它们需要多个组件可用于测试,并正确配置这些组件之间的通信。
- 与单元测试相比,它们执行的代码更多,因此有更多可能出错的地方导致它们失败。
- 它们通常涉及异步通信,这比同步通信更难编写测试。
- 它们通常需要复杂的后端数据设置,然后您才能在整个应用程序中进行测试。
由于这种脆弱性,我建议尽量编写 少数 测试来遍历整个堆栈 - 重点应该是在尽可能少的测试中涵盖尽可能多的功能,偏向于您最重要的功能用例。一个好的入门策略是:
- 选择一个关键用例(理想情况下,它涉及应用程序中尽可能多的组件),并为此进行端到端测试(即使只进行一次测试也会带来很多价值) .专注于使这个测试尽可能真实(即使用类似生产的部署)、尽可能可靠和尽可能自动化(理想情况下它应该作为持续集成的一部分运行)。即使只是进行一次测试也能带来很多价值。
- 为其他用例构建测试,一次一个测试,再次关注最重要的用例。
这种方法将有助于确保您的端到端测试具有高质量,这对于它们的长期健康和有用性至关重要。太多次我看到人们试图向应用程序引入一套全面的此类测试,但最终失败了,因为这些测试脆弱且不可靠,人们对它们失去信心,不运行或维护它们,最终他们忘记了它们甚至一开始就进行了测试。
祝你好运,玩得开心!