unit testing和集成testing有什么区别?

unit testing和集成testing有什么区别?

这些testing有不同的名字吗? 像一些人调用unit testingfunctiontesting等?

unit testing是程序员编写的一个testing,用于validation相对较小的一段代码正在做什么。 它们的范围很窄,应该易于编写和执行,其效果取决于程序员认为是有用的。 这些testing旨在供程序员使用,但对其他人不直接有用,但如果他们做了他们的工作,下游的testing人员和用户应该从看到更less的错误中受益。

作为unit testing的一部分是暗示testing代码之外的东西被嘲弄或剔除。 unit testing不应该依赖于外部系统。 他们testing内部一致性,而不是certificate他们和外部系统很好地搭配。

进行集成testing以certificate系统的不同部分协同工作。 集成testing涵盖了整个应用程序,他们需要更多的努力来放在一起。 他们通常需要为数据库实例和硬件分配资源。 集成testing在展示系统工作(尤其是非程序员)方面做了比一系列unit testing更有说服力的工作,至less在集成testing环境与生产类似的范围内。

实际上,“集成testing”被用于各种各样的事情,从完整的系统testing到类似于生产的环境,到使用未被嘲笑的资源(如数据库或队列)的任何testing。

unit testing应该不受testing单元之外的代码的依赖。 您可以通过查找最小的可testing部件来决定单位。 哪里有依赖关系,应该用假对象代替。 嘲笑,存根。testing执行线程在最小的可testing单元内开始和结束。

当虚假的对象被真实的对象所取代,并且testing执行线程跨越到其他可testing的单元。 你有一个集成testing

unit testing是在(尽可能)完全隔离的情况下完成的。

当被测对象或模块正常工作时,用其他位代码完成集成testing。

unit testingtesting您完全控制的代码,而集成testingtesting您的代码如何使用或与其他代码“集成”。

所以你可以编写unit testing来确保你自己的库能够按照预期工作,然后编写集成testing来确保你的代码能很好地与你正在使用的其他代码(比如一个库)搭配使用。

functiontesting与集成testing相关,但是更具体地说,是指testing整个系统或应用程序的所有代码一起运行的testing,几乎是一个超级集成testing。

unit testing通常是在软件模块中实现的单一function。 testing范围完全在此SW模块内。 unit testing永远不能满足最终的function要求。 它属于白盒testing方法。

而集成testing是为了确保不同的SW模块实现。 通常在软件开发完成模块级集成后进行testing。这个testing将覆盖function需求,但不足以保证系统validation。