通用软件测试技术之常见软件开发过程模型
软件的生命周期
- 指软件产品从考虑其概念开始,到该软件产品不再使用为止的整个时期。
- 一般包括概念阶段、分析与设计阶段、构造阶段、移交和运行阶段等不同时期。
- 软件生命周期的六个基本步骤:
- 制定计划(P)、需求分析(D)、设计(D)、程序编码(D)、测试(C)、运行维护(A)。
软件生命周期及为软件从产生直到报废的整个过程。(软件测试要贯穿于整个软件生命周期中)
1. 可行性研究(是否做?)
- 目的:该软件项目是否因该做;
- 对软件项目进行多个角度分析;
- 技术可行性:当前技术能否完成该软件项目
- 经济可行性:该项目预估投入多少,能否带来收益
- 操作可行性:该项目是否界面友好,功能清晰,能够方便操作
- 社会可行性:是否符合法律法规,是否能够有益社会发展,短时间内不被淘汰
- 工具:数据流图、系统流程图
- 产物:最终将分析结果以可行性研究报告的形式展现
2. 需求分析(做什么?)
- 目的:了解客户需求,明确客户对软件项目的需求;(做什么)
- 内容:确定用户对软件项目的功能、性能、数据格式、界面的需求;
- 工具:建立逻辑模型、使用数据流图
- 产物:最终将用户需求用软件需求规格说明书的形式详细阐述
3. 概要设计(怎么做?大概)
- 目的:完成对软件项目的大概设计;
- 内容:对软件项目的功能模块进行划分,接口、界面的完成
- 产物:概要设计说明书
4. 详细设计(怎么做?详细)
- 目的:完成对软件项目功能实现的详细做法;
- 内容:对功能模块的实现,细化到算法、数据结构的层次,详细的定义功能模块的实现;
- 工具:程序流程图、伪代码、PAD图
- 产物:详细设计说明书;
5. 编码(开始做。)
- 目的:根据详细设计说明书,选择程序设计语言,完成编码工作;
- 产物:源代码
6. 测试(检查。)
-
目的:发现软件项目中尚未发现的问题;
-
方法:
1、黑盒测试:又叫功能性测试,只关注功能是否实现,不关注内部算法;
①、边界值分析 ②、等价类划分
2、白盒测试:又叫结构性测试,关注内部算法是否正确;
①、路径覆盖 ②、条件覆盖 ③、判定覆盖 ④、条件组合覆盖 ⑤、语句覆盖 ⑥、判定条件覆盖
3、灰盒测试:结合白盒测试和黑盒测试,既关注内部逻辑,又关注总终结果
-
阶段:
单元测试---->集成测试---->验收测试---->平行测试
单元测试:单元模块的测试,最小功能模块,是否满足正常需求,错误操作是否会提醒
集成测试:主要目的是检查每个单元模块集成接口的测试;
系统测试:对整体软件系统的功能、性能的测试
验收测试:对软件项目进行交付前的最后测试,对照需求规格说明书和交付标准,演示软件项目功能满足用户需求和验收标准;(用户参与、数据真实)
平行运行:新老版本的同时运行,分析处理结果,使用户熟悉新版本
7. 产物(测试分析报告)
8. 运行维护(售后服务)
-
目的:保证软件产品交付之后的售后服务,维持软件产品的后期维护和完善工作,保证软件铲平能够持续工作
-
分类:
1、正确性维护:发现软件测试阶段未发现的错误,维持软件产品功能的正常运作
2、适应性维护:软件适应信息技术变化和管理需求变化而进行的修改。
3、完善性维护:增加新的系统功能和需求。
4、预防性维护:前瞻性的将一些将来会用到的功能加入到系统中,预防系统被淘汰
-
产物:程序维护手册
1. 瀑布模型
1. 工作流程
- 计划- 需求分析- 设计- 编码实现- 测试- 运行维护
- 每个阶段都需要进行审核和文档输出(文档驱动)
2. 模型作用
- 为软件开发和维护提供了有效的管理模式。在软件开发早期,在消除非结构化软件、降低软件复杂度、促进软件开发工程化- - 方面起着显著的作用。
3. 每个开发活动的特征
- 本活动依赖于上一项活动的输出作为工作对象,这些输出一般是代表某活动结束的里程碑式文档。
- 根据本阶段的活动规程执行相应的任务。
- 本阶段活动的最终产出——软件工件,将会作为下一活动的输入。
- 对本阶段活动执行情况进行评审。
4. 优点
- 降低复杂度、提高透明性和可管理性、强调需求分析和设计、阶段审核和文档输出保证了阶段之间的正确衔接,能够及时发现问题。
5. 缺点
- 缺乏灵活性、不适用于需求不明的开发情况、风险控制能力较低、文档驱动增加了系统的工作量、只依赖于文档来评估进度,可能会得出错误结论、成功周期较长
6. 适用场景
- 需求明确、较大型系统、开发周期不紧张
2. 演化模型
1. 工作流程
- 在瀑布模型的基础上,一次性开发难以成功,因此,演化模型提倡进行“两次开发”,分别是试验开发和产品开发。每个开发阶段按照瀑布模型进行具体开发活动。
2. 优点
- 明确用户需求、提高系统质量、降低开发风险
3. 缺点
- 管理难度提高、开发结构化较差、可能抛弃文档驱动、可能导致产品结构化较差
4. 适用场景
- 需求不清、开发周期短的中小型系统。
3. 增量模型
1. 模型概述
- 结合瀑布模型和演化模型的优点,在需求不清时,对最核心或最清晰的需求,利用瀑布模型实现。再对后续需求进行重复开发(可能按照需求的优先级逐个进行),从而逐步建成一个完整的软件系统。
2. 优点
- 保障核心功能实现、开发风险较低、保障最高优先级的功能的可靠实现、提高系统稳定性和可维护性。
3. 缺点
- 增量粒度难以合理选择、确定所有的需求服务较困难
4. 喷泉模型
1. 模型概述
- 又称迭代模型,每个阶段是相互重叠、多次反复的。每个开发阶段没有次序要求,可以并发进行,在某个阶段随时补充其他阶段中遗漏的需求。
2. 优点
- 提高效率、缩短周期
3. 缺点
- 管理结构性较差
5. 螺旋模型
1. 模型概述
- 将开发过程分为四个类型:风险分析、制定计划、实施工程、客户评估。每次评估之后确定是否进行螺旋线的下一个回路。
2. 适用对象
- 风险较高、开发周期较长的大型软件项目
3. 优点和缺点
- 降低风险,但是开发周期长。
螺旋模型沿着螺旋线进行若干次迭代,图中的四个象限代表了一下活动:
- 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
- 风险分析:分析评估所选方案,考虑如何识别和清楚风险;
- 实施工程:实施软件开发和验证;
- 客户评估:评价开发工作,提出修正建议,制定下一步计划。
迭代开发的模式给软件测试带来了新的要求,它不允许有一段独立的测试时间和阶段,测试必须跟着开发的迭代而迭代,所以回归测试的很重要。
6. 敏捷模型
描述
敏捷模型是一种轻量、高效、低风险、更强调团队协作和沟通的开发方式,适合于中小型开发团队,客户需求模糊或多变。
特点
- 强调人与人之间的沟通。
- 轻文档(弱化文档,但不是不需要文档)
- 客户需要全程参与
- 需求可以的变化
本文作者:wait_code
本文链接:https://www.cnblogs.com/waitCode/p/15975456.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步