所谓测试模型(Test Model),是测试和测试对象的基本特征、基本关系的抽象。
软件开发的主要模型有瀑布模型、原型模型、螺旋模型、增量模型以及统一过程( RUP)模型等。
软件测试过程的主要模型有:V 模型、W 模型、H 模型、X 模型、前置测试模型。
V 模型
V 模型实际是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关系。软件测试V 模型图中,左边标示开发过程中的各阶段,右边标示测试过程中的各阶段,每个开发阶段对应一个测试阶段。它将测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段,这样会导致需求分析或系统设计阶段隐藏的问题一直到后期的验收测试时才被发现。

W 模型
W 模型相当两个V 模型的叠加,一个是开发的V,一个是测试的V,由于在项目中开发和测试的是同步进行,相当于两个V 是并列、同步进行的,测试在一定程度上是随着开发的进展而不断向前进行。

按照开发阶段划分
1)单元测试
单元测试又称模块测试,是针对软件设计的最小单元(即程序模块)进行正确性检验的工作。
2)集成测试
集成测试又称组装测试、联合测试、子系统测试或部件测试。集成测试是在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成子系统或系统进行的测试活动。
3)系统测试
系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。
4)验收测试
验收测试是在软件产品完成了功能测试和系统测试之后、产品发布之前所进行的软件测试活动,它是技术测试的最后一个阶段,也称为交付测试、发布测试或确认测试。
按照测试实施组织划分
1)开发方测试
开发方测试通常叫“验证测试”或“α测试”。开发方通过检测和提供客观证据,证实软件的实现是否满足规定的需求。
2)用户测试
用户测试是在用户的应用环境下,用户通过运行和使用软件,检测与核实软件实现是否符合自己预期
的要求。
Beta 测试(即β测试)通过被看成是一种“用户测试”。Beta 测试主要是把软件产品有计划地免费分发到目标市场,让用户大量使用,并评价、检查软件。
3)第三方测试
也称为独立测试,是介于软件开发方和用户方之间的测试组织的测试。一般情况下是在模拟用户真实应用环境下,进行软件确认测试。第三方测试有别于开发人员或用户进行的测试,其目的是为了保证测试工作的客观性。
按照测试技术划分
1)黑盒测试
黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
2)白盒测试
白盒测试又称结构测试,白盒测试可以把程序看成装在一个透明的白盒子里,检查是否所有的结构及路径都是正确的,检查软件内部动作是否按照设计说明书的规定正常进行。其目的是通过检查软件内部的逻辑结构,对软件中逻辑路径进行覆盖的测试,可以覆盖全部代码、分支、路径和条件。
3)灰盒测试
介于白盒测试与黑盒测试之间的测试。灰盒测试关注输出对于输入的正确性,同时也关注内部表现。
在灰盒测试中,无需关心模块内部的实现细节。对于软件系统的内部模块,灰盒测试依然把它当成一个黑盒来看待。
按照测试执行方式划分
1)静态测试
静态测试是指不运行程序,通过人工对程序和文档进行分析与检查,静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,也可以借助软件工具自动进行。
2)动态测试
动态测试是指通过人工或使用工具运行程序进行检查、分析程序的执行状态和程序的外部表现。动态方法指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率结果与预期结果的差异,并分析运行效率和健壮性等性能。
软件质量属性
根据ISO/IEC 9126 国际标准的定义,软件质量包括以下6 个方面:功能性、可靠性、易用性、有效性、可维护性、可移植性。
