什么是单元测试,集成测试,烟雾测试,回归测试和它们之间有什么区别?我可以使用哪些工具,为他们每个人的?
比如我使用JUnit和NUnit进行单元测试和集成测试。是否有任何烟雾测试或回归测试工具?
为了这一点,我会补充:
单元测试是在可能实施的最小部分定向。在Java中,这意味着你要测试的类。如果类依赖于其他类这些都是假的。
当你的测试调用一个以上的类,它的集成测试。
全面的测试套件可能需要很长的时间来运行,所以改变后很多团队运行一些快速完成测试,以检测显著破损。例如,你已经打破了URI来必不可少的资源。这些都是烟雾测试。
回归测试,在每一个建设运行,并允许您通过捕捉你打破什么有效的重构。任何一种测试都可以回归测试,但我发现单元测试是最有用的找茬的来源。
单元测试:验证创建或修改的功能设计,即特定成分(即,类)。该测试可以是手动的或自动的,但不移动部件的边界之外。
集成测试:验证该特定部件的相互作用充当设计。集成测试可以在单元级别或系统级来执行。这些测试可以是手动的或自动的。
回归测试:验证新的缺陷没有引入到现有的代码。这些测试可以是手动的或自动的。
根据您的SDLC(瀑布,RUP,敏捷等),特别是测试可能在“阶段”进行,也全部被执行,或多或少,在同一时间。例如,单元测试可能是有限的,以开发谁然后翻过来的代码测试人员进行集成和回归测试。然而另一种方法可能有开发商在做单元测试和集成测试和回归测试(使用持续集成和自动化单元测试和回归测试沿TDD方式)的某一水平。
这似乎是值得一提的,在这个线程测试的一个类型是可以简单地说是查不到的极限,超过该某段软件中断的压力/性能/负载测试。请注意,在模具方面有必要精确地确定哪一位提出要强调从系统角度测试范围。例如在“Web应用程序”压力测试的情况下,可在其范围包括Web服务器应用程序本身,因此模具可以干预这一目的。这里是一个不错的职位约http load testing
单元测试: - 单元测试通常由开发商一边,那里的测试人员在这种类型的测试,其中测试是由单元完成单元部分演变完成的。在java中的JUnit测试用例也可以测试是否编写的代码是完美的设计或没有。
集成测试: - 这种类型的测试的单元测试后,可以在所有/某些组件integrated.This测试的类型将确保当组件集成,做自己影响对方的工作能力或功能主义。
冒烟测试: - 当系统成功集成,并准备去生产服务器上这种类型的测试是在最后完成。这种类型的测试将确保从开始到结束的每一个重要功能是工作的罚款和系统准备生产服务器上部署。
回归测试: - 这种类型的测试是非常重要的测试意外/不需要的缺陷不存在于系统时,开发人员修复了一些问题。该测试也确保所有的错误都成功地解决了因为那是没有发生其他问题。
单元测试:经过他们的发展做了他们的测试方面找出问题,他们作出的任何要求准备质量检查之前,它总是由开发商进行。
集成测试:这意味着测试器必须验证模块子模块验证时一些数据/函数输出是驱动到一个模块到其它模块。或者在你的系统,如果使用使用系统数据集成哪些第三方工具。
冒烟测试:测试仪来验证系统的高级测试,并试图改变或代码之前,找出显示塞错误去住。
回归测试:测试仪由于系统对新增强或制度变迁中实现的变化进行对现有功能验证回归。
烟雾和冒烟测试在软件生成后两者的表现,以确定是否可以开始测试了。理智可能会或冒烟测试后,可能不会被执行。它们可以单独或同时被执行 - 理智烟雾后立即之中。
由于冒烟测试,更深入,需要更多的时间,在大多数情况下,以及worthed自动化。
冒烟测试通常需要超过5-30分钟执行不再。它是更普遍的:它会检查数量少整个系统的核心功能,为了验证软件的稳定性进行进一步的测试不够好,不存在任何问题,堵塞的计划测试用例的运行。
健全测试比烟更详细的,可能需要15分钟到一整天的时间,这取决于新构建的规模。它是一个更特殊类型的验收测试,进展或重新测试之后进行。它与一些密切相关的它们的功能检查某些新功能和/或缺陷修复的核心功能一起,以验证它们以所需要的操作逻辑功能,前回归测试可以在更大的范围内执行。
我只是想补充,并就为什么我们这些水平测试,他们真正有例子的意思是一些更多的上下文
迈克·科恩在他的著作“敏捷继承”想出了一个“测试金字塔”的方式来处理自动化测试的项目。有此模型的各种解释。该模型解释什么样的自动化测试需要创造,他们如何能快速测试给应用反馈和谁写的这些测试。基本上有必要对任何项目3个级别的自动化测试,并有如下几点。
单元测试 - 这些测试软件应用程序的最小组成部分。这可以从字面上是其中计算基于某些输入的值的码的一个函数。此功能的硬件/软件的代码库,构成了应用程序的其他几个功能的一部分。
例如 - 让我们基于Web的计算器应用程序。本申请中需要被测试的单元的最小的部件可能是执行加法执行减法等的功能,另一个。所有这些小功能放在一起构成了计算器应用程序。
从历史上看开发者编写,因为它们通常用相同的编程语言的软件应用这些测试。单元测试框架如JUnit和NUnit(用于Java),MSTest的(C#和.NET)和茉莉花/摩卡(为JavaScript)用于此目的。
单元测试最大的优势是,他们还要快的UI下方,我们可以得到有关应用程序的快速反馈。这应该包括自动化测试的50%以上。
API /集成测试─这些测试软件系统的各个组件在一起。该组件可包括检测数据库的API(应用编程接口),第三方工具和服务与应用程序一起。
例如 - 在我们上面的计算器例如,Web应用程序可以使用数据库来存储值,使用API的做一些服务器端验证,它可能会使用第三方工具/服务来发布结果到云,使其在不同的可用平台。
从历史上看开发者或技术QA会写使用各种工具,如邮差了SoapUI,JMeter的和其他工具,如Testim这些测试。
这些跑得比UI测试快得多,因为他们仍然罩盖下方运行,但可能会消耗比单元测试多一点时间,因为它必须检查系统的各个独立的组件之间的通信,并确保他们拥有无缝集成。这应包括自动化测试的更多的30%。
UI测试─最后,我们有一个验证的应用程序的UI测试。这些测试通常是写入测试端到端流过的应用程序。
例如 - 在计算器应用程序,一个端到端流可以是,打开了浏览器的>输入计算器应用程序的URL - >记录与用户名/密码 - >开放计算器应用程序 - >在计算器执行一些操作 - >验证从UI那些结果 - >注销应用程序。这可能是一个端到端的流程,这将是对UI自动化一个很好的候选人。
从历史上看,技术质量保证的或手工测试编写UI测试。他们使用像硒的开源框架或UI测试平台,如Testim创作,执行和维护测试。这些测试提供更多的视觉反馈,你可以看到如何在测试运行,通过截图,日志,测试报告的预期与实际结果之间的差异。
的UI测试的最大的限制是,它们是相对缓慢相比,单位和API级测试。所以,它应该只包含10-20%的整体自动化测试。
接下来的两个类型的测试可能基于你的项目,但这个想法是 -
冒烟测试
这可以是上述3个级别的测试的组合。我们的想法是在每一个代码检查过程中运行它,并保证了系统的关键功能,仍然按预期工作;后的新代码更改合并。他们通常都需要和运行5 - 10分钟,以获得更快的故障反馈
回归测试
他们通常会被每天至少运行并覆盖系统的各种功能。他们确保应用程序仍然工作正常。他们比烟雾测试的详细信息,并覆盖包括非关键的人在更多的应用场景。
一些好的答案已,但我想进一步细化他们:
单元测试是白盒测试的唯一形式在这里。其余的是黑盒测试。白盒测试意味着你知道输入,你知道机构的内部运作,并可以检查它,你知道输出。随着黑盒测试,你才知道什么是输入和输出应该是什么。
所以很明显的单元测试是唯一的白箱测试在这里。
回归测试 - 是一种SW的测试,我们试图掩盖或检查周围的bug修复。周围的bug修复的功能不应该改变或改变,由于提供的修补程序。在这样的过程中发现的问题称为回归问题。
冒烟测试:是一种测试做决定是否接受进一步的QA测试生成/软件。
冒烟测试已经已经在这里解释和简单。回归测试来下集成测试。
自动化测试可以分为仅2。
单元测试和集成测试。 (这是最重要的事情)
我会打电话使用短语“长考”(LT)像集成测试,功能测试,回归测试,UI测试,等和单元测试“短测试”的所有测试。
一个LT例子是,自动加载一个网页,该帐户登录和购买图书。如果测试通过,更可能与活现场运行相同的方式(因此“改善睡眠”的参考)。龙=网页(开始)和数据库(完)之间的距离。
这是一个伟大的文章讨论integration testing(long test) over unit testing的好处
单元测试单元测试是非常低的水平,接近你的应用程序的源。它们包括在测试你的软件使用的类,组件或模块的各个方法和功能。单元测试是一般相当便宜自动化,并且可以通过持续集成服务器非常快速运行。
集成测试集成测试验证您的应用程序工作中使用得很好,不同的模块或服务。例如,它可以测试的互动与数据库或确保微服务一起工作正常。这些类型的测试运行,因为它们需要的应用程序的多个部分运行起来更昂贵。
功能测试功能测试专注于应用程序的业务需求。他们只确认动作的输出,并执行该操作时不检查系统的中间状态。
有时有集成测试,因为它们都需要多个组件来与彼此交互的功能性测试之间的混淆。所不同的是一个集成测试可能只是验证您可以查询数据库而进行功能测试期望通过对产品的要求所定义的从数据库中获取一个特定的值。
终端到终端的测试终端到终端的测试复制与完整的应用程序环境中的软件的用户行为。它验证各种用户预期和可以像加载网页或登录或更复杂的方案验证的电子邮件通知,在线支付等简单工作流...
终端到终端的测试是非常有用的,但他们执行价格昂贵,而且很难当他们自动维护。建议有几个关键的终端到终端的测试,并更多地依赖于低级别类型的测试(单元测试和集成测试),以便能够快速识别重大更改。
验收测试验收测试执行验证一个系统满足其业务要求的正式测试。它们需要整个应用程序启动和运行,并集中在复制用户的行为。但他们也可以更进一步,测量系统的性能,如果某些目标得不到满足拒绝更改。
性能测试性能测试检查系统的行为,当它是显著负载下。这些测试是无功能的,并且可以具有各种格式,了解可靠性,稳定性,并且平台的可用性。例如,它可以在执行大量的请求时,或者看到系统数据的显著的行为进行观察的响应时间。
性能测试是由它们的性质相当昂贵的实施和运行,但是它们可以帮助你了解是否有新的变化会降低系统。
冒烟测试冒烟测试是检查应用程序的基本功能基本测试。他们注定要快执行,他们的目标是给你,你的系统的主要功能发挥预期效果的保证。
一个新的构建作出决定你是否能部署后运行更昂贵的测试,或向右,以确保他们的应用程序在新部署的环境中正常运行后冒烟测试可能是有用的权利。
来源:https://www.atlassian.com/continuous-delivery/software-testing/types-of-software-testing
每个人都会有略微不同的定义,往往有灰色地带。然而:
一个新的测试类我刚刚意识到的是:
例子可能是:
杜撰历史的琐事:“冒烟测试”来自潜艇的工程(从管道继承)其中literal烟雾将被泵入船体,看是否有它的又出来了,这将是相当的潜艇戏剧性的失败!
从软件测试技术最好的网站的一个答案:
软件测试的类型 - 完整列表Click Here
这是一个相当长的描述,我不打算给它贴在这里:但它可能是人谁想要知道所有的测试技术帮助。
希望能对大家有所帮助:)
单元测试:验证创建或修改的功能设计,即特定成分(即,类)。该测试可以是手动的或自动的,但不移动部件的边界之外。
集成测试:验证该特定部件的相互作用充当设计。集成测试可以在单元级别或系统级来执行。这些测试可以是手动的或自动的。
回归测试:验证新的缺陷没有引入到现有的代码。这些测试可以是手动的或自动的。
根据您的SDLC(瀑布,RUP,敏捷等),特别是测试可能在“阶段”进行,也全部被执行,或多或少,在同一时间。例如,单元测试可能是有限的,以开发谁然后翻过来的代码测试人员进行集成和回归测试。然而另一种方法可能有开发商在做单元测试和集成测试和回归测试(使用持续集成和自动化单元测试和回归测试沿TDD方式)的某一水平。
该工具集将在很大程度上取决于代码库但也有单元测试(JUnit的)许多开源工具。惠普(水银)QTP或Borland的SilkTest中是自动化集成和回归测试这两种工具。
单元测试:在应用程序中单个模块或独立成分的测试是已知的单元测试,单元测试将由显影剂来完成。
集成测试:将所有的模块和测试应用程序以验证所述通信和所述模块之间的数据流被正确或不工作时,该测试也通过开发者执行。
在冒烟测试冒烟测试他们检查中浅而宽的方式提出申请,在冒烟测试,他们检查应用程序的主要功能,如果在应用程序,他们将要开发团队报告任何拦截的问题,并开发团队将修复它,纠正缺陷,并给它回测试团队,现在测试团队将检查所有模块,以验证在一个模块中提出将影响其他模块或不达的变化。在冒烟测试的测试用例编写脚本
重复执行相同的测试用例回归测试,以确保不变模块不会导致任何缺陷。回归测试来下的功能测试
“回归测试重播以前的反对改变软件测试,以确保在当前的软件所做的更改不会影响现有软件的功能。”