什么是unit testing,集成testing,烟雾testing,回归testing?

什么是unit testing,集成testing,烟雾testing,回归testing,它们之间有什么区别? 我可以使用哪些工具为他们每个人?

例如,我使用JUnit和NUnit进行unit testing和集成testing。 有没有烟testing或回归testing工具?

  • unit testing :指定和testing一个类的单一方法的合同的一个点。 这应该有一个非常狭窄和明确的范围。 对外部世界的复杂依赖和相互作用被扼杀或嘲弄 。

  • 集成testing :testing多个子系统的正确的互操作性。 这里有从整合两个class级到testing与生产环境的整合的整个频谱。

  • 烟雾testing(aka Sanity check) :一个简单的集成testing,我们只需检查被测系统何时被调用就能正常返回,不会爆炸。 这是一个类比与电子产品,第一次testing发生在电路上电时:如果它抽烟,这是不好的。

  • 回归testing :一个错误被修复时写的testing。 它确保这个特定的错误不会再发生。 全名是“非回归testing”。 它也可以是在更改应用程序之前进行的testing,以确保应用程序提供相同的结果。

对此,我将补充:

  • 验收testing :testingfunction或用例是否正确实施。 它与集成testing类似,但重点在于提供的用例而不是涉及的组件。

  • 系统testing :将系统testing为黑匣子的testing。 在testing过程中,其他系统上的依赖往往被嘲弄或扼杀(否则这将是更多的集成testing)。

  • 飞行前检查 :在类似生产的环境中重复进行的testing,以减轻“build立在我的机器上”综合征。 通常这是通过在生产环境中进行验收或抽烟testing来实现的

PS:人们声称烟雾testing来源于pipe道系统中的烟气被抽入pipe道系统,然后才连接到供水系统。 如果冒烟,pipe道密封不好。 这可能是更准确的历史,但我觉得它不那么有趣。

  • unit testing :一个自动testing来testing一个class级的内部运作。 它应该是一个与其他资源无关的独立testing。
  • 集成testing :一个在环境上完成的自动testing,与unit testing类似,但是具有外部资源(db,磁盘访问)
  • 回归testing :在实施新function或错误修复之后,您将重新testing过去的情况。 在这里,您将介绍新function打破现有function的可能性。
  • 烟雾testing :首先testing哪些testing人员可以推断他们是否会继续testing。

每个人的定义都略有不同,而且往往是灰色地带。 然而:

  • unit testing:这一点点(尽可能隔离)工作?
  • 集成testing:这两个(或更多)组件是否一起工作?
  • 烟雾testing:整个系统(尽可能接近生产系统)是否合理地挂在一起? (即我们是否有理由相信它不会造成黑洞?)
  • 回归testing:我们是否无意中重新引入了之前修复的错误?

我刚刚意识到的一个新的testing类别是:

金丝雀testing

Canarytesting是一个在LIVE环境中定期运行的自动化的非破坏性testing,如果失败了,就会发生一些非常糟糕的事情。

例子可能是:

  • 只有在DEV / TEST中可用的数据才会出现在LIVE中。
  • 后台进程无法运行
  • 用户可以login

杜撰的历史琐事:“烟雾testing”来自潜艇工程(从pipe道inheritance),在那里将文字烟雾泵入船体,看是否有任何一个出来,这将是一个潜艇的戏剧性失败!

unit testing:validation特定组件(即类)是否按照devise创build或修改了function。 这个testing可以是手动或自动化的,但不会超出组件的边界。

集成testing:validation特定组件的交互function是否按devise进行工作。 集成testing可以在单元级或系统级执行。 这些testing可以是手动或自动的。

回归testing:validation新的缺陷没有引入到现有的代码中。 这些testing可以是手动或自动的。

根据你的SDLC(瀑布,rup,敏捷等等),特定的testing可以在“阶段”执行,或者可以全部或多或less地同时执行。 例如,unit testing可能仅限于那些将代码转换为testing人员进行集成和回归testing的开发人员。 然而,另一种方法可能让开发人员进行unit testing,并进行一定程度的集成和回归testing(使用TDD方法以及持续集成和自动化单元和回归testing)。

工具集主要取决于代码库,但是有许多unit testing的开源工具(JUnit)。 HP的(汞)QTP或Borland的Silktest都是用于自动化集成和回归testing的工具。

unit testing :在应用程序中testing单个模块或独立组件是已知的unit testing,unit testing将由开发人员完成。

集成testing :结合所有模块并testing应用程序以validation通信和模块之间的数据stream是否正常工作,此testing也由开发人员执行。

烟雾testing在烟雾testing中,他们以简单和广泛的方式检查应用程序,在烟雾testing中,他们检查应用程序的主要function,如果应用程序中有任何阻止问题,他们将向开发人员小组报告,开发小组将会修复纠正缺陷并交还给testing团队,现在testing团队会检查所有的模块来validation在一个模块中所做的更改是否会影响其他模块。 在SMOKEtesting中,testing用例是脚本化的

回归testing重复执行相同的testing用例,以确保未改变的模块不会造成任何缺陷。 回归testing正在进行functiontesting

回归testing-

“回归testing针对已更改的软件重新运行以前的testing,以确保当前软件所做的更改不会影响现有软件的function。”

unit testing:validation特定组件(即类)是否按照devise创build或修改了function。 这个testing可以是手动或自动化的,但不会超出组件的边界。

集成testing:validation特定组件的交互function是否按devise进行工作。 集成testing可以在单元级或系统级执行。 这些testing可以是手动或自动的。

回归testing:validation新的缺陷没有引入到现有的代码中。 这些testing可以是手动或自动的。

根据你的SDLC(瀑布,rup,敏捷等等),特定的testing可以在“阶段”执行,或者可以全部或多或less地同时执行。 例如,unit testing可能仅限于那些将代码转换为testing人员进行集成和回归testing的开发人员。 然而,另一种方法可能让开发人员进行unit testing,并进行一定程度的集成和回归testing(使用TDD方法以及持续集成和自动化单元和回归testing)。

在这个主题中似乎值得一提的一种testingtypes是压力/性能/负载testing,可以简单地找出超出某个特定软件的限制。 请注意,就模具而言,从系统的angular度来看,精确地确定build议强调testing的范围至关重要。 例如,在“networking应用程序”的情况下,压力testing可以在其范围内包括networking服务器应用程序本身,因此工具可以为此进行干预。 这里是一个关于HTTP负载testing的好post

unit testing针对的是实现的最小部分。 在Java中,这意味着你正在testing一个类。 如果class级依赖于其他class级,这些都是假的。

当你的testing调用多个类时,它是一个集成testing

完整的testing套件可能需要很长时间才能运行,所以在更改之后,很多团队都会运行一些快速完成的testing来检测显着的中断。 例如,您已经将URI分解为基本资源。 这些是烟雾testing

回归testing运行在每一个版本,并允许你有效地通过捕捉你的破解来重构。 任何一种testing都可以进行回归testing,但是我发现unit testing对于找出错误的根源是最有帮助的。

从最好的软件testing技术网站之一回答:

软件testingtypes – 完整列表点击这里

在这里输入图像描述

这是一个很长的描述,我不打算粘贴在这里:但是对于想要了解所有testing技术的人可能会有帮助。

希望它会有所帮助:)

unit testing: – unit testing通常由开发人员完成,testing人员在这种types的testing中进行了部分演变,testing是按单元进行的。 在Java中,Junittesting用例也可以用来testing编写的代码是否完美devise。

集成testing: – 当unit testing集成了所有/部分组件时,这种types的testing是可能的。这种types的testing将确保集成组件时,它们是否影响其他工作能力或function工作者。

烟雾testing: – 这种types的testing是在系统成功集成并准备进入生产服务器的时候最后完成的。 这种types的testing将确保从头到尾的每个重要function都正常工作,系统已准备好部署在生产服务器上。

回归testing: – 这种types的testing对于testing当开发人员修正一些问题时系统中不存在意外/不需要的缺陷是非常重要的。 这个testing也确保所有的错误都被成功的解决了,因为没有其他问题发生。

  • 集成testing:集成testing是集成另一个元素
  • 烟雾testing:烟雾testing也被称为构build版本testing。烟雾testing是最初的testing过程,用来检查被测软件是否准备好/稳定以便进一步testing。
  • 回归testing:回归testing是重新testing。 新软件是否在另一个模块中生效。
  • unit testing:这是一个白盒testing,只有开发人员参与其中

已经有一些很好的答案,但我想进一步改进它们:

unit testing是这里唯一的白盒testingforms。 其他的是黑匣子testing。 白盒testing意味着你知道input,你知道机制的内部工作,并可以检查它,你知道输出。 使用黑盒testing你只知道input是什么,输出应该是什么。

很明显,unit testing是这里唯一的白盒testing。

  • unit testing特定的代码段。 通常的方法。
  • 集成testingtesting您的新function软件是否可以与其他任何软件进行整合。
  • 回归testing。 这是testing完成,以确保你没有破坏任何东西。 过去一切工作应该仍然工作。
  • 烟雾testing是作为一个快速testing,以确保一切看起来不错,然后再参与更有力的testing。

回归testing – 是一种types的SWtesting,我们试图覆盖或检查错误修复。 错误修复周围的function不应该因Fix提供的修改或更改。 在这个过程中发现的问题被称为回归问题。

烟雾testing:是否进行testing来决定是否接受构build/软件进行进一步的质量保证testing。

unit testing:

unit testing是一个软件开发过程,其中应用程序的最小可testing部分(称为单元)被单独和独立地审查以便正确操作。 unit testing通常是自动的,但也可以手动完成。

集成testing:

(有时称为集成和testing,缩写为I&T)是软件testing阶段,其中各个软件模块组合在一起并作为一个组进行testing。 它发生在unit testing和validationtesting之前。

系统testing:

通常是validation要交付的系统是否符合规格和目的的最终testing。

回归testing:

在实现新function或错误修复之后,您需要重新testing过去的情况。 在这里,您将介绍新function打破现有function的可能性。

烟雾testing:

目标不是要进行彻底的testing,而是要validation系统的关键function是否正常工作。 例如,一个典型的冒烟testing将是 – validation应用程序启动成功,检查GUI是否响应等。

unit testing:在开发完成后,开发人员总是执行testing,以便在testing方面做好任何要求之前,从testing方面找出问题。

集成testing:这意味着当某些数据/function输出驱动到一个模块到其他模块时,testing人员必须validation模块到子模块validation。 或者在你的系统中使用第三方工具,它使用你的系统数据进行整合。

烟雾testing:testing人员执行validation系统进行高级testing,并试图找出显示更改或代码生效前的塞子错误。

回归testing:testing人员执行回归validation现有function,由于系统中实施的新增强或系统更改。