我见过其他人在Stack Overflow上提到了几种类型的测试.
我记得的是单元测试和集成测试.特别是单元测试被提到了很多.什么是单元测试?什么是集成测试?我应该注意哪些其他重要的测试技术?
编程不是我的职业,但我希望它有一天;关于生产等的东西也受到欢迎.
脱离我的头顶:
"测试应用程序中最小的可隔离单元"意义上的单元测试 ; 这通常是一种方法或类,具体取决于规模.
集成测试
特征测试:这可能会跨越单位,并且是TDD的焦点.
黑盒测试:仅测试公共接口,不知道该如何工作.
玻璃盒测试:测试物品的所有部分,并充分了解其工作原理.
回归测试:构建用于重现错误的测试用例,以确保它们不会再出现.
毫无意义的测试:不止一种方式测试相同的基本情况,或测试的东西如此微不足道,以至于它们确实不需要进行测试(如自动生成的getter和setter)
我应该知道我的代码的任何其他重要测试吗?
根据软件生命周期的不同阶段,这些是一些不同类型的测试:
单元测试:这一小段代码是否有效?
单元测试套件:许多单元测试的序列(对于许多小代码)
集成测试:测试两个组件在组合(或"集成")时是否协同工作
系统测试:测试所有组件在组合(或"集成")时是否一起工作
验收测试:客户如何决定他是否愿意向您付款(系统测试发现软件是否按设计运行...验收测试发现"按设计"是否是客户想要的)
还有更多:
可用性测试
性能测试
负载测试
压力测试
而且,更多......测试软件几乎与编写软件一样广泛.
MSDN:单元测试
单元测试的主要目标是在应用程序中使用最小的可测试软件,将其与代码的其余部分隔离,并确定其行为是否与您期望的完全相同.每个单元在将它们集成到模块中之前单独测试,以测试模块之间的接口.单元测试已证明其价值在于在使用过程中发现了大量缺陷.
MSDN:集成测试
集成测试是单元测试的逻辑扩展.在最简单的形式中,已经测试的两个单元组合成一个组件,并测试它们之间的接口.在这个意义上,组件是指多个单元的集成组合.在一个现实的场景中,许多单元被组合成组件,这些组件又被聚合到程序的更大部分中.我们的想法是测试各个部分的组合,并最终扩展流程,以便与其他组的模块一起测试您的模块.最终,构成过程的所有模块一起进行测试.除此之外,如果程序由多个进程组成,则应该成对测试,而不是一次测试.
检查网站以获取更多信息.除了微软以外,还有大量的信息来源.
另一项重要技术是回归测试.在这种技术中,您需要维护一套测试(称为回归套件),这些测试通常在每晚以及每次签入之前运行.每次修复错误时,都会向套件添加一个或多个测试.目的是阻止您重新引入已修复的旧错误.(这个问题非常普遍!)
在项目变大之前,尽早开始累积回归套件,否则你会后悔.我当然有!
对于软件开发生命周期中的阶段,有不同级别的测试.最高级别是需求分析,最低级别是解决方案的实施.
什么是单元测试?
单元测试评估软件的实现.
我们专注于测试程序的单元(即单个方法),并忽略谁调用/使用这些单元.因此,我们基本上将每个单元视为独立单元.
有许多单元测试工具,其中最受欢迎的是JUnit.
在执行单元测试时,我们想要构建满足特定覆盖标准的测试集(测试用例集).这可能是一些结构覆盖标准(NC,EC,PPC等)或数据流标准(ADC,AUC,ADUPC等)
请注意,单元测试是最低级别的测试,因为它评估实现后生成的实际代码单元.这种类型的测试是在集成测试之前完成的.
高效的单元测试有助于确保集成测试不会很痛苦,因为在进行单元测试时,更便宜,更容易发现和修复错误
什么是集成测试?
需要进行集成测试,以确保在组合两个或多个组件时我们的软件仍能正常工作.
您可以在系统完成之前执行集成测试.
类集成测试顺序(CITO)问题与集成测试相关联.CITO与集成组件的策略有关.CITO有许多提议的解决方案,例如自上而下的集成,自下而上的集成等.主要目标是以一种能够实现高效测试和最少量存根的方式集成组件,因为编写代码存根并不总是很容易并且需要时间.请注意,这仍然是一个活跃的研究领域!
集成测试在单元测试后完成.
通常情况下,各个组件工作正常,但是当所有内容组合在一起时,我们突然看到由于与接口的不兼容性/问题而出现的错误.
其他级别的测试包括:
回归测试
这种类型的测试非常重要,因为开发人员通常会经常更改软件,因此我们希望确保这些更改不会引入错误.
有效回归测试的关键是限制回归测试的大小,以便完成测试不会花费太长时间,否则测试集将无法在下次提交之前完成运行.我们还必须选择不会错过错误的有效测试用例.
这种类型的测试应该是自动化的.
重要的是要注意,我们可以继续添加更多的机器,以抵消越来越多的回归测试,但在某些时候,权衡是不值得的.
验收测试
通过此测试,我们评估与所提供的要求相关的软件,基本上我们看到我们生产的软件是否满足我们给出的要求.
这通常是在软件开发活动序列中完成的最后一种类型的测试.因此,在单元测试和集成测试之后进行这种类型的测试.