[TOC]
## 测试基础
### 软件测试模型
软件开发的主要模型有瀑布模型、原型模型、螺旋模型、增量模型以及Rational统一过程(RUP)模型等。
**V模型**:最广为人知的模型,实际是瀑布模型的变种,他反映了测试活动与分析和设计的关系。
V模型图中,左边标示开发过程中的各阶段,右边标示测试过程中的各阶段,每个开发阶段对应一个测试阶段。
V模型失败的原因是它把系统开发过程划分具有固定边界的不同阶段,导致测试人员很难跨过这些边界采集测试所需要的信息,并且也阻碍了测试人员从系统描述的不同阶段中取得信息进行综合考虑。
**W模型**:相对于V模型,W模型增加了软件各开发阶段中同步进行的验证和确认测试活动。W模型由两个V字模型组成,分别代表测试和开发过程。
W模型和V模型都将软件的开发视为需求、设计、编码等一系列串行的活动。测试和开发活动也保持着一种线性的前后关系,需要有严格的指令表示上一阶段完全结束,才能正式开始下一个阶段的工作,这样就无法支持迭代的开发模型。
**H模型**:将测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。
**X模型**:也是对V模型的改进,X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接和集成最终合成为可执行的程序。
**前置测试模型**:该模型将测试和开发紧密结合,提供了一种轻松的方式,可以使你的项目加快速度。
前置测试模型提倡验收测试和技术测试沿循两条不同的路线来进行,每条路线分别验证系统是否能够如预期设计一样可以正常工作。
与V模型不同的是,前置测试模型认识到测试验收中所包含的 3 个要素:基于测试的需求、验收标准和验收测试计划。其中验收测试计划需要到系统设计完成,因为验收测试计划是由针对按设计已实现的系统来进行的一些明确操作定义所组成,这些定义包括:如何判断验收标准已经达到,以及基于需求的测试已算成功完成。
### 软件测试类型
#### 1.按照开发阶段分为:单元测试、集成测试、系统测试、验收测试
**单元测试主要内容**:单元功能测试、单元接口测试、单元局部数据结构测试、单元中重要的执行路径测试、单元的各类错误处理路径测试、单元边界条件测试。
**集成策略**是在测试对象分析的基础上,描述软件模块集成(组装)的方式、方法。分为非增值式策略和增值式策略。
**系统测试**主要是站在用户的角度上对系统做功能性的验证,同时还对系统进行一些非功能性的验证,包括压力测试、安全性测试、容错测试、恢复性测试等。
**验收测试**是按照项目任务书或合同、工序双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收系统。
#### 2.按照测试实施组织划分为:开发方测试、用户测试、第三方测试
#### 3.按照测试技术划分:黑盒测试、白盒测试、灰盒测试
**黑盒测试**也称功能测试,它是通过测试来检测每个功能是否都能正常使用。
**白盒测试**也称结构测试,白盒测试可以把程序看成装在一个透明的白盒子里,也就最清楚了解程序结构和处理过程,检查是否所有的结构及路径都正确的,检查软件内部动作是否按照设计说明书的规定正常进行。
**灰盒测试**需关心模块与模块之间的交互,无需关心模块内部的实现细节,对于软件系统的内部模块,灰盒测试依然把它当成一个黑盒来看待。
#### 4.按照测试执行方式划分
静态测试、动态测试
#### 5.按照测试对象类型划分
功能测试、界面测试、流程测试、接口测试、安装测试、文档测试、源代码测试、数据库测试、网络测试、性能测试
#### 6.按照质量属性划分
容错性测试、兼容性测试