单元测试和集成测试之间的区别是什么?

这些测试有不同的名称吗?就像有些人把单元测试叫做功能测试一样?


当前回答

单元测试在(尽可能)完全隔离的情况下完成。

集成测试是在测试对象或模块与其他代码正常工作时进行的。

其他回答

单元测试测试您完全控制的代码,而集成测试测试您的代码如何使用或如何与其他代码“集成”。

因此,您可以编写单元测试,以确保您自己的库按预期工作,然后编写集成测试,以确保您的代码与您正在使用的其他代码(例如库)良好地运行。

功能测试与集成测试相关,但更具体地说,是指在所有代码一起运行的情况下测试整个系统或应用程序的测试,几乎是超级集成测试。

单元测试在(尽可能)完全隔离的情况下完成。

集成测试是在测试对象或模块与其他代码正常工作时进行的。

单元测试不应该依赖于被测试单元之外的代码。你可以通过寻找最小的可测试部分来决定单元是什么。有依赖关系的地方应该用假对象替换。mock, stub ..测试执行线程在最小的可测试单元中开始和结束。

当假对象被真实对象替换,并且测试执行线程跨越到其他可测试单元时,您就有了集成测试

单元测试是由程序员编写的测试,用于验证一小段代码是否正在执行预期的任务。它们的范围很窄,应该易于编写和执行,其有效性取决于程序员认为有用的内容。这些测试是为程序员使用的,它们对其他人没有直接的用处,尽管,如果他们完成了他们的工作,测试人员和下游用户应该受益于看到更少的错误。

单元测试的部分含义是,被测试代码之外的内容将被模拟或删除。单元测试不应该依赖于外部系统。他们测试的是内部的一致性,而不是证明他们与一些外部系统相处得很好。

An integration test is done to demonstrate that different pieces of the system work together. Integration tests can cover whole applications, and they require much more effort to put together. They usually require resources like database instances and hardware to be allocated for them. The integration tests do a more convincing job of demonstrating the system works (especially to non-programmers) than a set of unit tests can, at least to the extent the integration test environment resembles production.

实际上,“集成测试”用于各种各样的事情,从针对类似于生产环境的全面系统测试到使用未模拟的资源(如数据库或队列)的任何测试。在范围的低端,集成测试可以是junit测试,其中存储库针对内存中的数据库进行测试,在高端,它可以是验证应用程序可以交换消息的系统测试。

单元测试通常是对软件模块中实现的单个功能进行测试。测试的范围完全在这个SW模块内。单元测试从来不满足最终的功能需求。它属于白盒测试方法。

而集成测试则是为了保证不同软件模块的实现。测试通常在软件开发中完成模块级集成之后进行。该测试将涵盖功能需求,但不足以确保系统验证。