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

例如,我使用JUnit和NUnit进行单元测试和集成测试。有没有针对最后两种测试的工具,烟雾测试或回归测试?


当前回答

单元测试针对的是实现的最小部分。在Java中,这意味着您正在测试单个类。如果类依赖于其他类,则这些类是假的。

当您的测试调用多个类时,这是一个集成测试。

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

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

其他回答

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

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

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

单元测试测试特定的代码片段。通常是方法。集成测试测试您的新功能软件是否可以与其他所有功能集成。回归测试。这是为了确保您没有损坏任何东西而进行的测试。一切过去有效的东西都应该继续有效。烟雾测试是作为一项快速测试来完成的,以确保在您参与更激烈的测试之前一切都正常。

单元测试:测试类内部工作的自动测试。它应该是与其他资源无关的独立测试。集成测试:在环境中进行的自动测试,与单元测试非常相似,但使用外部资源(数据库、磁盘访问)回归测试:在实现新功能或bug修复后,您重新测试过去有效的场景。这里您将介绍新功能打破现有功能的可能性。烟雾测试:测试人员可以断定是否继续测试的第一次测试。

烟雾测试已经在这里解释过了,而且很简单。回归测试属于集成测试。

自动化测试可分为两种。

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

我会将所有测试(如集成测试、功能测试、回归测试、UI测试等)使用短语“长测试”(LT),将单元测试称为“短测试”。

LT的一个例子是,自动加载网页,登录帐户并购买一本书。如果测试通过,则更有可能以相同的方式在现场运行(因此“更好的睡眠”参考)。Long=网页(开始)和数据库(结束)之间的距离。

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

单元测试:验证特定组件(即类)是否按照设计创建或修改了功能。该测试可以是手动或自动的,但不会超出组件的边界。

集成测试:验证特定组件的交互是否按设计运行。集成测试可以在单元级或系统级执行。这些测试可以是手动或自动的。

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

根据您的SDLC(瀑布式、RUP、敏捷等),特定的测试可以在“阶段”中执行,也可以或多或少地同时执行。例如,单元测试可能仅限于开发人员,然后将代码交给测试人员进行集成和回归测试。然而,另一种方法可能会让开发人员进行单元测试和某种程度的集成和回归测试(使用TDD方法以及连续集成和自动化单元和回归测试)。

工具集将在很大程度上依赖于代码库,但有许多用于单元测试(JUnit)的开源工具。HP(Mercury)QTP或Borland的Silk Test都是自动化集成和回归测试的工具。

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

烟雾测试:是一种决定是否接受构建/软件以进行进一步QA测试的测试。