关于测试:什么是单元测试,集成测试,烟雾测试,回归测试?

What is Unit test, Integration Test, Smoke test, Regression Test?

什么是单元测试、集成测试、冒烟测试、回归测试,它们之间有什么区别?我可以为每种工具使用哪些工具?

例如,我使用junit和nunit进行单元测试和集成测试。是否有烟雾测试或回归测试工具?


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

  • 集成测试:测试多个子系统的正确交互操作。从测试两个类之间的集成,到测试与生产环境的集成,这里有整个范围。

  • 冒烟测试(也称为健全性检查):一个简单的集成测试,我们只检查当被测试的系统被调用时,它会正常返回,不会爆炸。

    • 烟雾测试和电子设备都是一个类比,当电路通电时,第一次测试就发生了(如果它吸烟,那就糟了!)…
    • …很明显,在管道系统中,一个管道系统被烟雾填满,然后进行目视检查。如果有烟,系统就会泄漏。
  • 回归测试:修复错误时编写的测试。它确保这个特定的错误不会再次发生。全名是"非回归测试"。它也可以是在更改应用程序之前进行的测试,以确保应用程序提供相同的结果。

对此,我将补充:

  • 验收测试:测试特性或用例是否正确实现。它类似于集成测试,但重点是要提供的用例,而不是所涉及的组件。

  • 系统测试:将系统作为黑盒进行测试。在测试过程中,对其他系统的依赖性常常被模拟或存根化(否则它更像是一个集成测试)。

  • 飞行前检查:在类似生产的环境中重复进行的测试,以缓解"在我的机器上建立"综合症。这通常是通过在类似生产的环境中进行验收或冒烟测试来实现的。


  • 单元测试:测试类内部工作的自动测试。它应该是一个独立的测试,与其他资源无关。
  • 集成测试:在环境中进行的自动测试,类似于单元测试,但具有外部资源(DB、磁盘访问)。
  • 回归测试:在实现了新特性或错误修复之后,您重新测试了以前工作过的场景。在这里,您将介绍您的新功能打破现有功能的可能性。
  • 烟雾测试:测试人员如果继续测试,可以得出结论的第一个测试。


每个人的定义都会略有不同,而且通常都有灰色区域。然而:

  • 单元测试:这一个小位(尽可能隔离)工作吗?
  • 集成测试:这两个(或更多)组件一起工作吗?
  • 烟雾测试:整个系统(尽可能接近生产系统)是否合理地结合在一起?(也就是说,我们有理由相信它不会产生黑洞吗?)
  • 回归测试:我们是否无意中重新引入了以前修复过的错误?


一类新的测试就成为意识到我是金丝雀金丝雀:测试自动化测试是一种非破坏性的测试,这是经常的基础上运行的现场环境中,如果有这样的东西,它真的发生时,坏的蛛网膜下腔出血。

的例子可能是:

  • 蛛网膜下腔出血(SAH)是不可用的日期只应该在开发/测试中appearedLive。
  • 有没有背景的过程。
  • 用户可以登录


不经意间的历史琐事:"烟雾测试"来自于潜艇工程(继承自管道工程),在那里,直接的烟雾将被泵入船体,看看是否有任何烟雾再次冒出来,这对潜艇来说是一个相当大的失败!


软件测试技术最佳网站之一的答案:

软件测试类型-完整列表单击此处

enter image description here

It's quite a long description, I'm not going to paste it here: but it may be helpful for someone who wants to know all the testing techniques.

希望能有所帮助:)


单元测试:这是检验组件(即,类的设计,创造或改进的功能)。这个测试可以手动或自动移动,但不超越边界的组件。

集成测试:核实,特别是相互作用的组件的设计的功能的研究。集成的单元测试可以执行的在系统级或级。这些测试可以被手动或自动。

回归测试:这是新引入的缺陷校正不到现有的代码。这些测试可以被手动或自动。

这取决于你的系统上的瀑布,Rational统一过程,敏捷等),特别是可以进行的试验中可以被执行或全阶段,或多或少,在同一时间。例如,单元测试是开发者可以把有限公司是在整合到代码测试和回归测试。然而,另一种方法可能有一些开发商做单元测试和集成测试和回归的水平(基于TDD方法的集成和自动化的单元随着连续试验和回归)。

该工具集将很大程度上取决于在codebase但有许多开源的单元测试工具JUnit)。惠普的QTP(水银)或两个SilkTest是Borland的集成和自动化回归测试工具。


单元测试:应用程序中单个模块或独立组件的测试称为单元测试,单元测试将由开发人员完成。

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

冒烟测试在冒烟测试中,他们对应用程序进行浅而宽的检查,在冒烟测试中,他们检查应用程序的主要功能,如果应用程序中存在阻止程序问题,他们将向开发团队报告,开发团队将修复并纠正缺陷,并将其返回测试团队,现在测试TEA。M将检查所有模块,以验证一个模块中所做的TAT更改是否会影响另一个模块。在冒烟测试中,测试用例是脚本化的

回归测试重复执行相同的测试用例,以确保不变的模块不会导致任何缺陷。回归测试属于功能测试。


回归测试

"重新运行回归测试,软件测试,改变了以往对确保制造的变化不影响当前的软件的功能的现有的软件。


单元测试是针对可能实现的最小部分进行的。在Java中,这意味着你正在测试一个类。如果类依赖于其他类,则这些类是伪造的。

当测试调用多个类时,它是一个集成测试。

完整的测试套件可能需要很长时间才能运行,因此在更改之后,许多团队会运行一些快速完成的测试来检测重大的损坏。例如,您已经将URI分解为基本资源。这些是烟雾测试。

回归测试在每个构建上运行,并允许您通过捕获您所破坏的内容来有效地重构。任何一种测试都可以是回归测试,但我发现单元测试最有助于找到故障源。


单元测试:这是检验组件(即,类的设计,创造或改进的功能)。这个测试可以手动或自动移动,但不超越边界的组件。

集成测试:核实,特别是相互作用的组件的设计的功能的研究。集成的单元测试可以执行的在系统级或级。这些测试可以被手动或自动。

回归测试:这是新引入的缺陷校正不到现有的代码。这些测试可以被手动或自动。

这取决于你的系统上的瀑布,Rational统一过程,敏捷等),特别是可以进行的试验中可以被执行或全阶段,或多或少,在同一时间。例如,单元测试是开发者可以把有限公司是在整合到代码测试和回归测试。然而,另一种方法可能有一些开发商做单元测试和集成测试和回归的水平(基于TDD方法的集成和自动化的单元随着连续试验和回归)。


一个类型的试验,这似乎是值得一提的应力在这个线程的性能/负载/简单的试验,可以发现在一定限度后执行的软件,软件的时间。请注意,在条款的基本工具,它是确定一个准确的范围,提出了从系统的角度对压力测试。例如,在的情况下的"Web应用程序"可以包括在其范围内的应力测试的Web服务器应用程序和操作系统本身的模具可以intervene在线那端。这里是一篇关于HTTP负载测试,尼斯


单元测试:单元测试通常是由开发人员完成的,在这种类型的测试中,测试人员是部分进化的,在这种类型的测试中,测试是逐个单元完成的。在Java JUnit测试用例中也可以测试编写代码是否完美设计。

集成测试:这种类型的测试在单元测试之后是可能的,当所有/某些组件被集成时。这种类型的测试将确保当组件被集成时,它们是否影响彼此的工作能力或功能。

烟雾测试:这种类型的测试最后在系统成功集成并准备好进入生产服务器时完成。这种类型的测试将确保从开始到结束的所有重要功能都正常工作,并且系统准备好部署到生产服务器上。

回归测试:这种类型的测试对于测试开发人员修复某些问题时系统中不存在意外/不需要的缺陷非常重要。此测试还确保所有错误都已成功解决,因此不会发生其他问题。


Smoke和Sanity测试都是在软件构建之后执行的,以确定是否开始测试。在烟雾测试后,可执行或不执行神志清醒。它们可以单独执行,也可以同时执行——吸烟后立即保持清醒。

因为健全性测试更深入,需要更多的时间,在大多数情况下,自动化是非常值得的。

烟雾测试通常执行时间不超过5-30分钟。更为一般:它检查整个系统的少量核心功能,以验证软件的稳定性是否足以进行进一步的测试,以及是否存在问题,从而阻止计划的测试用例的运行。

健全性测试比烟雾测试更为详细,可能需要15分钟到一整天的时间,这取决于新建筑的规模。这是一种更专业的验收测试,在进行或重新测试后进行。它检查某些新功能和/或错误修复的核心功能,以及与之密切相关的一些功能,以便在大规模执行回归测试之前验证它们是否按照所需的操作逻辑运行。


  • 集成测试:集成测试是集成的另一个元素
  • 冒烟测试:冒烟测试也称为构建版本测试。冒烟测试是一个初始测试过程,用于检查被测试软件是否准备好/稳定,以便进行进一步的测试。
  • 回归测试:回归测试是收获测试。新软件是否在其他模块中生效。
  • 单元测试:这是一个白盒测试,只有开发人员参与其中

以一种简单的方式。

单元测试:测试单个代码、算法、类或系统。这个测试应该是独立的,依赖关系应该是模拟的或存根的。

集成测试:当被其他组件使用时,应该测试组件、算法、类或系统是否正常工作,集成测试不是测试系统如何工作(行为),它应该测试系统是否正常工作。

冒烟测试:是一个非常小的测试集,应该先运行它们一个大的测试集,它只会确保系统的最关键的特性即使在升级之后也能正常工作。

回归测试:是测试计算机程序更改的过程,以确保旧的程序仍能与新的更改一起工作。是一组比烟雾测试更大的测试。

如果你想了解更多关于集成测试的知识,你可以在Udemy上这个课程,它有很好的折扣。

https://www.udemy.com/testes-de-integracao-com-spring-boot/?Couponcode=Tisb odesc2019年


回归测试-是一种软件测试,我们试图覆盖或检查错误修复。不应因为提供的修复而更改或更改Bug修复程序的功能。在这一过程中发现的问题称为回归问题。

冒烟测试:是一种用来决定是否接受构建/软件进行进一步的质量保证测试的测试。


单元测试:在开发完成后,开发人员总是在为QA准备好任何需求之前,从测试方发现问题。

集成测试:当一些数据/功能输出被驱动到一个模块到另一个模块时,测试人员必须验证模块到子模块的验证。或者在您的系统中,如果使用第三方工具,使用您的系统数据进行集成。

冒烟测试:测试人员对系统进行高级测试以验证系统,并在更改或代码生效之前尝试找出show stopper bug。

回归测试:测试人员执行回归,以验证由于新增强或系统更改而在系统中实现的更改而导致的现有功能。


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

单元测试是这里唯一的白盒测试形式。其他的是黑盒测试。白盒测试意味着你知道输入,你知道机构的内部工作,可以检查它,你知道输出。通过黑盒测试,您只知道输入是什么,输出应该是什么。

很明显,单元测试是这里唯一的白盒测试。

  • 单元测试测试特定代码片段。通常是方法。
  • 集成测试测试您的新软件特性是否可以与其他东西集成。
  • 回归测试。这是为了确保你没有弄坏任何东西而做的测试。以前工作的一切都应该继续工作。
  • 烟雾测试是一种快速测试,以确保在您参与更激烈的测试之前一切正常。


Unit tests Unit tests are very low level, close to the source of your
application. They consist in testing individual methods and functions
of the classes, components or modules used by your software. Unit
tests are in general quite cheap to automate and can be run very
quickly by a continuous integration server.

Integration tests Integration tests verify that different modules or
services used by your application work well together. For example, it
can be testing the interaction with the database or making sure that
microservices work together as expected. These types of tests are more
expensive to run as they require multiple parts of the application to
be up and running.

Functional tests Functional tests focus on the business requirements
of an application. They only verify the output of an action and do not
check the intermediate states of the system when performing that
action.

There is sometimes a confusion between integration tests and
functional tests as they both require multiple components to interact
with each other. The difference is that an integration test may simply
verify that you can query the database while a functional test would
expect to get a specific value from the database as defined by the
product requirements.

End-to-end tests End-to-end testing replicates a user behavior with
the software in a complete application environment. It verifies that
various user flows work as expected and can be as simple as loading a
web page or logging in or much more complex scenarios verifying email
notifications, online payments, etc...

End-to-end tests are very useful, but they're expensive to perform and
can be hard to maintain when they're automated. It is recommended to
have a few key end-to-end tests and rely more on lower level types of
testing (unit and integration tests) to be able to quickly identify
breaking changes.

Acceptance testing Acceptance tests are formal tests executed to
verify if a system satisfies its business requirements. They require
the entire application to be up and running and focus on replicating
user behaviors. But they can also go further and measure the
performance of the system and reject changes if certain goals are not
met.

Performance testing Performance tests check the behaviors of the
system when it is under significant load. These tests are
non-functional and can have the various form to understand the
reliability, stability, and availability of the platform. For
instance, it can be observing response times when executing a high
number of requests, or seeing how the system behaves with a
significant of data.

Performance tests are by their nature quite costly to implement and
run, but they can help you understand if new changes are going to
degrade your system.

Smoke testing Smoke tests are basic tests that check basic
functionality of the application. They are meant to be quick to
execute, and their goal is to give you the assurance that the major
features of your system are working as expected.

Smoke tests can be useful right after a new build is made to decide
whether or not you can run more expensive tests, or right after a
deployment to make sure that they application is running properly in
the newly deployed environment.

资料来源:https://www.atlassian.com/continuous-delivery/software-testing/types-of-software-testing


这里已经解释过烟雾测试,而且很简单。回归测试采用积分测试。

自动测试可以分为2个。

单元测试和集成测试。(这才是最重要的)

我会将短语"long test"(lt)用于所有测试,如集成测试、功能测试、回归测试、UI测试等,将单元测试称为"short test"。

一个lt示例可以是,自动加载网页,登录帐户并购买一本书。如果测试通过,它更有可能以相同的方式在活动站点上运行(因此是"更好的睡眠"参考)。长=网页(开始)和数据库(结束)之间的距离。

这是一篇很好的文章,讨论了集成测试(长测试)相对于单元测试的好处。