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

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

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

261529 次浏览

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

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

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

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

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

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

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

集成测试用于演示系统的不同部分一起工作。集成测试可以覆盖整个应用程序,将它们放在一起需要付出更多的努力。它们通常需要为它们分配数据库实例和硬件等资源。集成测试在演示系统工作(特别是对非程序员)方面比一组单元测试更有说服力,至少在集成测试环境类似于生产环境的程度上是这样。

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

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

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

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

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