初识软件测试
目录
一、需求
1.1 用户需求
1.2 软件需求
二、开发模型
2.1 软件的生命周期
2.2 常见的开发模型
1)瀑布模型
2)螺旋模型
3)增量模型、迭代模型
4)敏捷模型
三、测试模型
1)V模型
2)W模型
一、需求
在软件测试开发中,我们会接触到两种需求。一种是用户需求,另一种是软件需求。
1.1 用户需求
用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。该需求一般计较简略,通常是一句话。
用户需求是简略且五花八门的,往往只是一句话。比如:实现一个声控灯,实现一个软件的xxx功能等。
1.2 软件需求
软件需求或者叫功能需求,改需求会详细描述开发人员必须实现的软件功能。软件需求是测试人员进行测试工作的基本依据。
用户需求和软件需求有什么区别呢?举个例子:
用户需求:
甲方老板说:我要一个邮箱注册功能。这是一个用户需求,很简短一句话。
软件需求:
需要我们和甲方老板反复沟通了解更加详细具体的需求,来制定解决方案。最终理解清楚用户需求之后,再去研究功能改如何实现、能否实现以及实现的具体步骤,这是软件需求。
二、开发模型
随着软件工程科学的发展,人们对计算机软件的认识逐渐深入。软件工作的范围不仅仅局限在程序编写,而是扩展到了整个软件的生命周期,如软件基本概念的形成、需求分析、设计、实现、测试、安装部署、运行维护,直到软件被更新和替换新的版本。

2.1 软件的生命周期
认识具体的开发模型之前先了解一下软件的生命周期。
生命周期指的是从生命的开始到生命结束的⼀段时间。以人为例,人类的生命周期是从⽣命孕育的开始,中间会经历幼年,童年,少年,青年,老年,最终直至死亡。
软件的生命周期也是如此,需求的开始时软件生命的起点,中间会经历需求的计划、设计,程序开发,程序测试等阶段,直至软件不再进行维护便到了生命的终点。
因此我们就得到了软件的生命周期: 需求分析->计划->设计->编码->测试->运行维护。
对于软件的生命周期,每个阶段都在做什么呢?
阶段 | 具体内容 | 产出 |
---|---|---|
需求分析 | 分析用户需求是否合理,分别从市场、技术等方面进行分析 | 该阶段会输出需求等文档 |
计划 | 对成立的需求执行需求计划,多长时间内完成该需求,每段时间具体完成哪些功能。 | 该阶段会输出计划等文档 |
设计 | 将需求细化成一个个任务(如何进行架构设计、设计哪些接口、采用什么技术) | 该阶段会输出技术等文档 |
编码 | 开发人员参考上面产出文档进行代码的编写 | 会输出代码文件等文档 |
测试 | 测试人员介入到软件测试中,依靠测试用例对软件进行测试 | 测试用例、测试设计与计 划、测试报告等文档 |
运行维护 | 项目测试结束之后,项目需要进行上线,并对产品进行线上的维护。线上的维护主要分为三个方面。分别为修复性维护、完善性维护和预防性维护。 修复性维护:对项目中未发现的问题进行修复。 完善性维护:对功能进行完善。 预防性维护:居安思危,为了避免产品在线上出现⼀ 些其他不可预料的问题,进行⼀些防护的手段。 |
2.2 常见的开发模型
1)瀑布模型
瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架。该模型的每个阶段仅执行一次,属于线性顺序的软件开发方法。
瀑布模型的特点:
- 强调开发的阶段性
- 线性结构,每个阶段只执行一次
- 是其他模型的基础框架
瀑布模型的缺点:
- 测试后置:
1.前面各阶段遗留的风险推迟到测试阶段才被发现,导致项目大面积返工,失去了及早修复的机会。
2.必须留有足够的时间给测试活动,否则导致测试不充分,将缺陷直接暴露给用户- 周期太长,产品很迟才能被看到和使用,可能会导致需求或功能过时
瀑布模型的适用场景:需求固定的小项目
2)螺旋模型
在软件开发初期需求尚不明确时,常采用渐进式开发模型。螺旋模型是渐进式开发模型的典型代表之一。
该模式尤其适用于规模庞大、高度复杂且高风险的项目。迭代式开发模型为软件测试带来了新的要求——不允许存在独立的测试周期或阶段。测试必须与开发迭代同步进行。因此,回归测试的重要性不言而喻。
螺旋模型的优点:
- 强调严格的全过程风险管理
- 强调各开发阶段的质量
- 增加风险分析和原型
螺旋模型的缺点:
- 项目中存在的风险性与风险管理人员的技能水平有直接关系
- 需求人员、资金、时间的增加和投入、可能会导致项目的成本太高
螺旋模型的适用场景:规模庞大、复杂度高、风险大的项目
3)增量模型、迭代模型

增量式开发模型鼓励用户反馈,并推动开发团队在每次迭代中以周期性、可预测的方式推进产品。因此,在这种开发方法中,每次迭代都可能涉及需求变更和生成新的可执行软件版本。这也意味着测试必须频繁进行,要求测试人员与开发人员更紧密地协作。
与此类似的有⼀个迭代开发,增量开发和迭代开发往往容易被人混淆,但是其实两者是有区别的。增量是逐块建造的概念,迭代是反复求精的概念。
适用场景:大型项目、需求不明确
4)敏捷模型
敏捷模型具有四个特点:轻文档,轻流程,重目标,重产出。敏捷开发模型有很多方式,其中scrum是比较流行的一种。Scrum又称为迭代式增量开发模型。
三、测试模型
测试模型中有两个非常重要且具有标志性的测试模型:V模型和W模型。
1)V模型
V模型的优点:
- 明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系,有效提升测试的质量和效率。
- V模型指出:
1)单元和集成测试应检测程序的执行是否满足软件设计的要求
2)系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标
3)验收测试确定软件的实现是否满足用户需求或合同的要求V模型的缺点:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就介入测试。缺点跟瀑布模型差不多。
2)W模型
W模型将V模型中测试后置的缺点解决了。
W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。W模型的特点是:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步的。
W模型的优点:
- W模型有利于尽早地全面发现问题。例如需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时对需求的测试也有利于及时了解项目难度和测试风险,尽早制定应对措施,显著减少总体测试时间,加快项目进度。
W模型的缺点:
- 需求、设计、编码等活动被视为串行的;
- 测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可以开始下一级段工作
- 重流程,无法支持敏捷开发模型。