目录
一、软件测试的定义
软件测试是验证软件产品特性是否满足用户的需求。
👧🏻:那为什么需要软件测试呢?
👩🏻💻:这是因为每一款软件都是企业创造出来给用户使用的,由用户直接或间接付费来使企业获得收益。如果这款软件的质量存在闪退、卡顿的问题,可能会给用户带来不好的体验,从而影响企业的盈利。然而,软件测试可以保证产品质量,提高用户满意度。
👧🏻:测试跟以前学习的调试有什么区别?
👩🏻💻:
|------|---------------|--------------------------|
| | 调试 | 测试 |
| 目的 | 通过定位来解决程序中的问题 | 发现问题 |
| 参与角色 | 开发人员 | 项目组所有成员,主要是由测试⼈员和开发⼈员来执⾏ |
| 执行阶段 | 开发阶段 | 测试贯穿整个软件开发⽣命周期 |
二、需求
在大多数软件公司,有 用户需求和 软件需求两部分需求。
- 用户需求:通常是一句话,没有经过合理的评估;
- 软件需求:是开发人员和测试人员的工作依据。
比如:我想要做土豆丝 这属于 用户需求,通过评估之后可以实现。首先,准备所需要的材料;其次,开火、在锅里倒入油;之后,倒入土豆丝翻炒;最后,将炒熟的土豆丝放入盘中 这属于 软件需求。
三、开发模型
(一)、什么是模型?
说起模型,我们脑海下想到的是手机模型、车模型。其实,开发模型并不像手机模型、车模型那种,而是一种工作流程。
开发模型 是指 开发一款软件或者功能需要具备的开发流程。
(二)、软件的生命周期
在前面学习中,我们知道生命周期是从生命的开始到生命结束的那段时间。比如:人的生命周期是从生命开始、婴幼儿、儿童、青少年、青年、中年、中老年、老年、直到生命结束。而软件的生命周期也是如此。
举个例子:在暑期期间需要完成暑假作业,我想想要在一个月来完成暑假作业。完成暑假作业的生命周期是:明确目标:完成暑假作业;规划时间:从明天开始,30天结束;设计:每天完成三张;执行中:每天写暑假作业;检查:31天后,家长检查暑假作业进度;查漏补缺:在八月份,将作业中不会的知识点进行补充。
软件的生命周期:需求分析 ------ 计划 ------ 设计 ------ 编码------ 测试 ------ 运行维护
|------|-----------------------------------------------------------------------------------------------------------------|
| 阶段 | 具体内容 |
| 需求分析 | 需要从市场需求、技术等方面分析用户需求是否合理 |
| 计划 | 对成立的需求执行需求执行计划,多长时间内完成该需求,每段时间具体完成哪些功能 |
| 设计 | 将需求划分成一个个任务,团队成员领取自己的任务并进行技术设计 |
| 编码 | 开发人员参考需求文档、设计文档、交互图等文件进行代码的编写 |
| 测试 | 测试人员需要介入到软件的测试中,参考测试用例对软件进行测试 |
| 运行维护 | 项目测试结束后,项目需要进行上线,并对产品进行线上维护,分别进行修复性维护(对项目中未发现的问题进行修复)、完善性维护(对功能进行完善)、预防性维护(为了避免产品在线上出现一些不可预料的问题,进行一些防护的手段)的线上维护 |
(三)、瀑布模型
从图中可以看出,瀑布模型是一种线性结构,每个阶段只能执行一次。
1、特点/优点
- 每一个阶段只能执行一次,是线性顺序进行的软件开发模式;
- 是所有其他模型的基础框架。
2、缺点
- 测试后置:前面各阶段遗留的风险到测试阶段才发现,导致项目大面积返工;没有足够的时间给测试,导致测试不充分,导致产品质量差;
- 周期较长,产品很迟才能被开到和使用,可能导致需求/功能过时。
瀑布模型存在很严重的项目风险。然而,这种 瀑布模型可以使用在需求固定的小项目。
(四)、螺旋模型
这个图可能看不懂,可以结合瀑布模型图来理解螺旋模型:
从图中可以看出,和瀑布模型相比引入了原型和风险分析,并且是一个渐进式开发模型。
1、特点/优点
- 在各阶段引入了原型和风险分析,为了避免各阶段遗留的风险问题到后面的阶段发现导致大面积返工;
- 强调各开发阶段的质量;
- 强调严格的全过程⻛险管理。
2、缺点
- 项⽬中可能存在的风险性与风险管理⼈员的技能水平有直接关系;
- 需求人员、资金、时间的增加和投入,可能会导致项目的成本太高。
这个螺旋模型适用于规模庞大、复杂度高、风险大。
(五)、增量模型、迭代模型
增量模型和迭代模型都是渐进式开发,都是为了开发出功能完善、高质量且稳定的产品。
1、增量模型
将软件功能分解为多个独立模块,分阶段依次开发并叠加新增模块,最终形成包含全部功能的完整产品的开发模型。
(将大需求拆成若干个小需求,每一个小需求独立开发上线)

2、迭代模型
以迭代周期为单位,围绕核心功能范围反复优化、完善现有功能,逐步提升产品质量和成熟度的开发模型。
(大需求 ------> 草稿版 ------> 优化版)
增量模型 | 迭代模型 | |
---|---|---|
核心逻辑 | 按 "功能模块" 逐步新增,强调 "功能的积累" | 按 "完善程度" 逐步优化,强调 "质量的提升" |
阶段目标 | 每个增量新增一部分独立的功能模块,最终凑齐全部功能 | 每次迭代对现有功能进行优化、重构或补充细节,逐步逼近 "完美版本" |
功能变化方式 | 功能从 "少" 到 "多",新增功能为主 | 功能从 "粗" 到 "精",优化现有功能为主 |
总之, 增量是逐块建造,迭代是反复求精。这两种模型适用于大型项目。
(六)、敏捷模型
为了 帮助项目快速适应变更请求,可以使用敏捷模型。
敏捷模型的目的促进项目的快速完成。
在敏捷模型中,需求被分解成许多可以增量开发的小部分。敏捷模型采用迭代开发。 每个增量部分都是在迭代中开发的。 每次迭代都旨在小而易于管理,并且只能在几周内完成。⼀次为客户计划、开发 和部署⼀个迭代。没有制定长期计划。
敏捷模型中《敏捷宣⾔》的宣⾔内容: 个体与交互重于过程和⼯具,可⽤的软件重于完备的⽂档,客户协作重于合同谈判,响应变化重于遵循计划。通过敏捷宣言得到 敏捷模型的四个特点:轻文档、轻流程、重目标、重产出。
Scrum模型
敏捷模型中有一个Scrum模型,这个模型又称为 迭代式增量软件开发模型 。在Scrum模型中,主要有 三个角色 和 五个重要会议。
(1)、三个角色
三个角色是由产品经理、项目经理、研发团队组成。
- 产品经理:赋值整理用户需求,定义其商业价值,对其进行排序,制定发布计划,对产品负责;
- 项目经理:负责召开各种会议,协调项目,为研发团队服务;
- 研发团队:是由开发人员、测试、交互、设计等不同技能的成员组成,完成每一次迭代的目标,交付产品。
(2)、五个重要会议
- 发布计划会议:产品经理负责讲解用户需求,对其进行估算和排序,制定本次迭代要完成的需求列表;
- 迭代计划会议:项目团队对每一个需求进行任务分解,明确任务负责人以及完成任务需要的时间;
- 每日例会:每天项目经理召开会议,团队成员需要回答昨天做了什么、今天计划做什么、有什么问题;
- 演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果。在此期间将大家的反馈记录下来,形成新的需求;
- 回顾会议:项目团队对本次迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,以达到持续改进的发展。
(3)、Scrum流程

四、测试模型
测试模型中有两个标志性的测试模型:V模型和W模型。
(一)、V模型

1、优点
明确的标注了测试过程中存在不同类型的测试,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系,有效提升测试质量和效率。
2、缺点
只把测试作为在编码之后的一个阶段,未在需求阶段就介入测试,可能会导致测试后置。
(二)、W模型(双V模型)

1、特点
测试对象不仅是程序,需求、设计等同样要测试,测试与开发同步进行的。
2、优点
有利于尽早发现问题。
3、缺点
- 需求、设计、编码等活动被视为串行;
- 测试和开发活动也保持着⼀种线性的前后关系,上⼀阶段完全结束,才可正式开始下⼀个阶段⼯作;
- 重流程,⽆法⽀持敏捷开发模式的轻文档、轻流程。
在这篇文章中,学习了什么是软件测试、需求、软件的生命周期、几种开发模型和测试模型。