测试分类

软件测试的概念

软件测试是通过手工或自动化手段来检测软件产品中的错误和缺陷的过程。

测试划分

静态测试

静态测试是对被测程序进行特性分析的一些方法的总称,这种方法的主要特性是不利用计算机运行被测试的程序,而是采用其他手段达到检测的目的。
静态方法是指不运行被测程序本身,仅通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。静态方法通过程序静态特性的分析,找出欠缺和可疑之处。它在项目开发的早期和代码研发过程中就可以使用。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。

动态测试

动态测试是实际运行被测程序,输入相应的测试用例,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性。
动态测试的两种主要的方法是黑盒测试和白盒测试。动态方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果。它适合在项目研发的中后期使用。
动态测试较静态测试要简单,高效,但是他介入测试较晚,所以不利于尽快发现缺陷。

白盒测试

白盒测试(white—box testing) ,也称为结构化测试、基于代码的测试,是一种测试用例设计方法,它从程序的控制结构导出测试用例。

黑盒测试

黑盒测试(black—box testing)又称功能测试、数据驱动测试或基于规范的测试。用这种方法进行测试时,被测程序被当作看不见内部的黑盒。在完全不考虑程序内部结构和内部特性的情况下,测试者仅依据程序功能的需求规范考虑确定测试用例和推断测试结果的正确性。
白盒测试在测试的早期采用,而黑盒测试主要用于测试的后期。黑盒测试故意不考虑控制结构,而是注意信息域。

灰盒测试

灰盒测试(gray—box testing) ,确实是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。

冒烟测试

简单的说,冒烟测试就是先保证系统能跑的起来,不至于让测试工作做到一半突然出现错误导致业务中断。目的就是先通过最基本的测试,如果最基本的测试都有问题,就直接打回开发部了,减少测试部门时间的浪费。

Web测试和负载测试

生成Web测试和负载测试时,在运行任何时间长、工作量大的测试之前运行冒烟测试是一种很好的做法。在Web测试和负载测试中,冒烟测试时间短,工作量也小。使用冒烟测试是为了在运行性能测试或压力测试之前,确保一切都已正确配置并可按预期运行

回归测试

回归测试(regression test)是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

功能测试

功能测试(Functional testing):根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。

性能测试

性能测试(Performance testing):评价一个产品或组建与性能需求是否符合的测试。包括负载测试、强度测试、数据库容量测试、基准测试等类型。

压力测试

压力测试:获取系统正确运行的极限,检查系统在瞬间峰值负荷下正确运行的能力,例如:对服务器做压力侧室时增加并发操作的用户数量,或者不停向服务器发送请求,或者一次性向服务器发送特别大的数据等。看服务器保持正常运行所能达到的最大状态。

负载测试

负载测试:用于检查系统在使用大量数据的时候正确工作的能力,即检验系统的能力最高能达到什么程度,例如:对信息检索系统,让他的使用频率达到最大,或者对多个终端的分时系统,让所有的终端都开动,在使整个系统的全部资源达到“满负荷”的情况下,测试系统的承受能力。区别于压力测试的是,负载测试一般模仿用户真实环境,大量数据也不会取到实际不可能达到的数值。

易用性测试

易用性测试:从客户角度出发,从使用软件的合理性和方便性等角度对软件系统进行检查,发现人为因素或使用上的问题。

安装测试

安装测试:确保软件在正常情况和异常情况的不同条件下,如首次安装、升级、完整或自定义安装等都能进行安装。异常情况包括磁盘空间不足、缺少目录创建权限等。核实软件在安装后可正常运行。安装测试还包括卸载测试。

界面测试

界面测试:用户界面风格是否满足用户要求,文字是否正确,版面是否美观等。包括窗口测试,菜单和鼠标操作,数据项测试。

配置测试

配置测试:主要检查计算机系统内各个设备或各种资源之间的相互连接和功能分配中的错误,包括验证全部配置命令的可操作性,软件配置,硬件配置,利用手动方式进行配置状态间的转换。

文档测试

文档测试:检查文档的正确性、完备性和可理解性。

兼容性测试

兼容性测试(企业内常称为“共存性”):测试软件是否和系统的其它与之交互的元素之间兼容,如浏览器、操作系统、硬件等。

安全性测试

安全性测试(尤其B/S系统要求比较高):检查系统对非法入侵的防范能力,检查系统中已存在的系统安全性、保密性措施是否发挥作用,有无漏洞。系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。

恢复测试

恢复测试(Recovery testing):主要检查系统的容错能力。当系统出错时,能否在规定时间内修正错误并恢复正常。例如SQL的回滚机制。

可移植性测试

可移植性测试:测试软件是否可以被成功移植到指定的硬件或软件平台上。

引导测试

引导测试:软件开发中,验证系统在真实硬件和客户基础上处理典型操作的能力。在软件外包测试中,引导测试通常是客户检查软件测试公司测试能力的一种形式,只有通过了客户特定的引导测试,软件测试公司才能接受客户真实软件项目的软件测试。

随机测试

随机测试:没有书面测试用例、记录期望结果、检查列表、脚本或指令的测试,主要是根据测试者的经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行测试用例的重要补充手段,是保证测试覆盖完整性的有效方式和过程。

健全测试

健全测试:软件主要功能成分的简单测试以保证它是否能进行基本的测试。

自动化测试

自动化测试:使用自动化测试工具进行测试,一般不需要人工过多干预,在GUI、性能测试中用得较多。

国际化测试

国际化测试:目的是测试软件的国际化支持能力,发现软件的国际化的潜在问题,保证软件在世界不同区域中都能正常运行。国际化测试使用每种可能的国际输入类型,针对任何区域性或区域设置检查产品的功能是否正常,软件国际化测试的重点在于执行国际字符串的输入/输出功能。

本地化能力测试

本地化能力测试:本地化能力是指不需要重新设计或修改代码,将程序的用户界面翻译成任何目标语言的能力。常在软件的伪本地化版本上进行。

本地化测试

本地化测试:对象是软件的本地化版本。本地化测试的目的是测试特定目标区域设置的软件本地化质量。本地化测试的环境是在本地化的操作系统上安装本地化的软件。

通过测试

通过测试:即正面测试,使用满足需求的数据测试系统的过程。

失败测试

失败测试:负面测试,使用不满足需求的数据测试系统。

错误猜测

错误猜测:是通过直觉发现程序中的错误和缺陷的能力。

验证测试

验证测试(Verification):组织开发工作产品的同行对工作产品进行系统性的检查,发现工作产品中的缺陷,并提出必要的修改意见,达到消除工作产品缺陷的目的。适用于所有立项开发的软件项目及产品。同行评审及测试是主要的验证方法,根据特定的需求选择工作产品,并选择有效的验证方法对工作产品进行验证。

确认测试

确认测试(Validation):确保产品或产品构件适合其预定的用途。确认主要是对中间及最终产品的检查与验收,表现形式为审批、签字确认、正式的验收报告等,确认与验证紧密结合,并采用验证的方法,如同行评审、检查、走查、测试等。适用于所有立项开发的软件项目与产品。

#[软件测试分类一]比较全面详细

按照全生命周期的软件测试概念,测试对象应该包括软件设计开发的各个阶段的内容。

按照开发阶段划分

按照开发阶段划分软件测试可分为:单元测试、集成测试、系统测试、确认测试和验收测试。

●单元测试

单元测试又称模块测试,是针对软件设计的最小单位---程序模块进行正确性检验的测试工作。其目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各模块内部可能存在的各种错误。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。

●集成测试

集成测试也叫做组装测试。通常在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整个系统。

软件集成的过程是一个持续的过程,会形成很多个临时版本,在不断的集成过程中,功能集成的稳定性是真正的的挑战。在每个版本提交时,都需要进行冒烟测试,即对程序主要功能进行验证。冒烟测试也叫版本验证测试、提交测试。

●确认测试

确认测试是通过检验和提供客观证据,证实软件是否满足特定预期用途的需求。确认测试是检测与证实软件是否满足软件需求说明书中规定的要求。

●系统测试

系统测试是为验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试。系统测试是在真实或模拟系统运行的环境下,检查完整的程序系统能否和系统(包括硬件、外设、网络和系统软件、支持平台等)正确配置、连接、并满足用户需求。

●验收测试

按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。

按照测试实施组织划分

按照测试实施组织划分,软件测试可分为开发方测试、用户测试(β测试)、第三方测试。

●开发方测试。

通常也叫“验证测试”或“α测试”。开发方通过检测和提供客观证据,证实软件的实现是否满足规定的需求。验证测试是在软件开发环境下,由开发者检测与证实软件的实现是否满足软件设计说明或软件需求说明的要求。主要是指在软件开发完成以后,开发方对要提交的软件进行全面的自我检查与验证,可以和软件的“系统测试”一并进行。

●用户测试。

在用户的应用环境下,用户通过运行和使用软件,检测与核实软件实现是否符合自己预期的要求。通常情况用户测试不是指用户的“验收测试”,而是指用户的使用性测试,由用户找出软件的应用过程中发现的软件的缺陷与问题,并对使用质量进行评价。

β测试通常被看成是一种“用户测试”。β测试主要是把软件产品有计划地免费分发到目标市场,让用户大量使用,并评价、检查软件。通过用户各种方式的大量使用,来发现软件存在的问题与错误,把信息反馈给开发者修改。β测试中厂商获取的信息,可以有助于软件产品的成功发布。

●第三方测试。

介于软件开发方和用户方之间的测试组织的测试。第三方测试也称为独立测试。软件质量工程强调开展独立验证和确认(IV&V)活动。IV&V是由在技术、管理和财务上与开发组织具有规定程度独立的组织执行验证和确认过程。软件第三方测试也就是由在技术、管理和财务上与开发方和用户方相对独立的组织进行的软件测试。一般情况下是在模拟用户真实应用环境下,进行软件确认测试。

按照测试技术划分

按照测试技术划分:白盒测试、黑盒测试、灰盒测试。也可划分为静态测试和动态测试。静态测试是指不运行程序,通过人工对程序和文档进行分析与检查;静态测试技术又称为静态分析技术,静态测试实际上是对软件中的需求说明书、设计说明书、程序源代码等进行非运行的检查,静态测试包括:走查、符号执行、需求确认等。动态测试是指通过人工或使用工具运行程序进行检查、分析程序的执行状态和程序的外部表现。我们这里讨论的白盒测试、黑盒测试、灰盒测试,在实现测试方法上既包括了动态测试也包括了静态测试。

●白盒测试

通过对程序内部结构的分析、检测来寻找问题。白盒测试可以把程序看成装在一个透明的白盒子里,也就是清楚了解程序结构和处理过程,检查是否所有的结构及路径都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。白盒测试又称结构测试。

●黑盒测试

通过软件的外部表现来发现其缺陷和错误。黑盒测试法把测试对象看成一个黑盒子,完全不考虑程序内部结构和处理过程。黑盒测试是在程序界面处进行测试,它只是检查程序是否按照需求规格说明书的规定正常实现。

●灰盒测试

介于白盒测试和黑盒测试之间的测试。灰盒测试关注输出对于输入的正确性;同时也关注内部表现,但这种关注不像白盒测试那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态。

灰盒测试结合了白盒测试和黑盒测试的要素。它考虑了用户端、特定的系统知识和操作环境。它在系统组件的协同性环境中评价应用软件的设计。

软件测试方法和技术的分类与软件开发过程相关联,它贯穿了整个软件生命周期。走查、单元测试、集成测试、系统测试用于整个开发过程中的不同阶段。开发文档和源程序可以应用单元测试应用走查的方法;单元测试可应用白盒测试方法;集成测试应用近似灰盒测试方法;而系统测试和确认测试应用黑盒测试方法。

[软件测试分类二]比较简洁明了

软件测试可以分别按测试范围、测试目的、测试对象、测试过程分类。

1.按测试范围分类

1)单元测试(unit testing)
2)组件测试(component testing)
3)集成测试(integration testing)
4)系统测试(system testing)
5)验收测试
6)安装测试

2.按照测试目的分类
1)正确性测试
a)白盒测试
b)黑盒测试

2)性能测试

3)可靠性测试
a)强壮性测试
b)异常处理测试
c)负载测试

4)安全性测试

3.按测试对象分类
1)单元测试
2)组件测试
3)模块测试
4)程序测试
5)系统测试
6)文档测试

4.按照测试过程分类
1)需求阶段的测试
2)设计阶段的测试
3)程序阶段的测试
4)测试结果的评估
5)安装测试
6)验收测试
7)测试变化:维护

5.其他
测试技术和方法
1)回归测试:为保证软件中新的变化不会对原有功能是正常使用有影响而进行的测试。也就是说,已经满足用户需求的功能不应该出现任何问题。每当软件缺陷被修改之后、或者对原有功能进行一些调整和加强,或者是在原有版本基础上增加新功能的时候,都会采用回归测试方法,特别是到了开发周期的最后阶段。回归测试更适用于软件自动化测试工具。
2)压力测试:用来检查系统在大负荷条件下的运行情况。 在非正常的巨大负荷下,某些协作和输入大量重复,输入大数,对数据库进行非常复杂的查询等,以确定在什么情况下系统响应速度下降或是出现故障。也称为性能测试。
3)恢复测试:在系统崩溃、硬件故障,或者其他灾难发生之后,重新恢复系统和数据的能力测试。
4)安全测试:测试系统在应付非授权的内部/外部访问,故意损坏时系统的防护能力。
5)兼容性测试:测试在特殊的硬件/软件/操作系统/网络环境下的软件表现。

旅行的意义 wechat
subscribe to my blog by scanning my public wechat account
Donate comment here