软件测试的基本分类

2010-09-09  谢颖怡 

最近比较纠结于软件测试的分类,查找资料时找到两种个人认为比较好的分法,看过的那本《软件评测师教程》也是这样按第一种来分的,第二种则是比较简洁明了全面。在这里记录分享一下,如果大家有更好的分法或者有遗漏的,希望能告诉我。

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

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

按照开发阶段划分

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

●单元测试

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

集成测试

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

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

确认测试

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

●系统测试

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

验收测试

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

按照测试实施组织划分

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

开发方测试。

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

用户测试。

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

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

●第三方测试。

介于软件开发方和用户方之间的测试组织的测试。第三方测试也称为独立测试。软件质量工程强调开展独立验证和确认(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)  兼容性测试:测试在特殊的硬件/软件/操作系统/网络环境下的软件表现。


824°/8205 人阅读/4 条评论 发表评论

邓浛  2010-09-10

看来要个好的测试经理来制定测试计划了


徐明明  2010-09-10

现在看的多了就觉得,这种分类的很多项是你中有我我中有你啊。相互可以有很多组合。


谢颖怡  2010-09-10

徐明明: 现在看的多了就觉得,这种分类的很多项是你中有我我中有你啊。相互可以有很多组合。
也对,好像黑盒,白盒这两种,几乎把其他种类都给包了~


徐明明  2010-09-10

谢颖怡: 也对,好像黑盒,白盒这两种,几乎把其他种类都给包了~
对,这个介绍都是散状的,说白了就是在一条直线上依次把测试方法排开。其实很多测试项目的测试方法是以二维甚至三位形式存在的。


登录 后发表评论