什么是单元测试,集成测试,烟雾测试,回归测试以及它们之间有什么区别?我可以为每个工具使用哪些工具?
例如,我使用JUnit和NUnit进行单元测试和集成测试.有没有烟雾测试或回归测试工具?
单元测试:指定并测试一个类的单个方法的合同的一个点.这应该有一个非常狭窄和明确的范围.复杂的依赖关系和与外部世界的交互被扼杀或嘲笑.
集成测试:测试多个子系统的正确互操作.那里有完整的范围,从测试两个类之间的集成,到测试与生产环境的集成.
Smoke测试(又名Sanity检查):一个简单的集成测试,我们只是检查当被测系统被调用时它会正常返回并且不会爆炸.
烟雾测试与电子设备类似,第一次测试是在给电路加电时(如果它抽烟,那就太糟糕了!)......
...... 显然,还有管道,管道系统实际上是由烟雾填充,然后用肉眼检查.如果有什么东西抽烟,系统就会漏水.
回归测试:修复错误时编写的测试.它确保不会再次发生此特定错误.全名是"非回归测试".它也可以是在更改应用程序之前进行的测试,以确保应用程序提供相同的结果.
对此,我将补充:
验收测试:测试是否正确实现了功能或用例.它类似于集成测试,但重点关注用例而不是涉及的组件.
系统测试:将系统测试为黑盒子.在测试期间,通常会对其他系统的依赖性进行模拟或存根(否则它将更多地是集成测试).
飞行前检查:在生产环境中重复的测试,以减轻"我的机器上的建立"综合症.通常,这是通过在生产环境中进行验收或烟雾测试来实现的.
单元测试:自动测试以测试类的内部工作.它应该是一个独立的测试,与其他资源无关.
集成测试:在环境上完成的自动测试,类似于单元测试,但具有外部资源(db,磁盘访问)
回归测试:在实现新功能或错误修复之后,您将重新测试过去有效的方案.在这里,您可以了解新功能是否会破坏现有功能.
烟雾测试:首先测试哪些测试人员可以继续测试.
每个人的定义都会略有不同,通常都有灰色区域.然而:
单元测试:这一点(尽可能隔离)工作吗?
集成测试:这两个(或更多)组件一起工作吗?
烟雾测试:整个系统(尽可能接近生产系统)是否能够很好地挂在一起?(即我们有理由相信它不会造成黑洞吗?)
回归测试:我们是否无意中重新引入了我们之前修复过的任何错误?
我刚刚意识到的一个新的测试类别是:
例子可能是:
是否只有在DEV/TEST中可用的数据才会出现在LIVE中.
后台进程无法运行
用户可以登录吗?
伪造的历史琐事:"烟雾测试"来自潜艇工程(继承自管道),在那里将字面的烟雾泵入船体,看它是否有任何一次出现,这对于潜艇而言将是一次戏剧性的失败!
来自最好的软件测试技术网站之一的答案:
软件测试类型 - 完整列表点击这里
这是一个很长的描述,我不会在这里粘贴它:但它可能对想要了解所有测试技术的人有所帮助.
希望它会有所帮助:)
单元测试:验证特定组件(即类)是否按设计创建或修改了功能.此测试可以手动或自动进行,但不会超出组件的边界.
集成测试:验证特定组件的交互是否按设计运行.可以在单元级别或系统级别执行集成测试.这些测试可以是手动或自动的.
回归测试:验证新缺陷未引入现有代码.这些测试可以是手动或自动的.
根据您的SDLC(瀑布,rup,敏捷等),可以在"阶段"中执行特定测试,或者可以同时或多或少地执行所有测试.例如,单元测试可能仅限于开发人员,然后他们将代码转交给测试人员进行集成和回归测试.然而,另一种方法可能是开发人员进行单元测试和某种程度的集成和回归测试(使用TDD方法以及持续集成和自动化单元和回归测试).
工具集在很大程度上取决于代码库,但有许多用于单元测试的开源工具(JUnit).HP的(汞)QTP或Borland的Silktest都是自动集成和回归测试的工具.
单元测试:已知应用程序中单个模块或独立组件的测试是单元测试,单元测试将由开发人员完成.
集成测试:结合所有模块和测试应用程序来验证通信和模块之间的数据流是否正常工作,此测试也由开发人员执行.
烟雾测试 在烟雾测试中,他们以浅薄和广泛的方式检查应用程序,在烟雾测试中他们检查应用程序的主要功能,如果应用程序中有任何阻止器问题他们将向开发团队报告,开发团队将修复它和纠正缺陷,并将其交还给测试团队,现在测试团队将检查所有模块,以验证在一个模块中进行的更改是否会影响其他模块.在SMOKE测试中,测试用例是编写脚本的
回归测试重复执行相同的测试用例,以确保未更改的模块不会导致任何缺陷.回归测试属于功能测试
"回归测试重新运行先前针对已更改软件的测试,以确保当前软件中所做的更改不会影响现有软件的功能."