世上有可以挽回的和不可挽回的事,而时间经过就是一种不可挽回的事。 —《国境以南太阳以西》村上春树.

|

eye_code

园龄:5年6个月粉丝:2关注:2

通用软件测试技术之常见软件开发过程模型

软件的生命周期

  • 指软件产品从考虑其概念开始,到该软件产品不再使用为止的整个时期。
  • 一般包括概念阶段、分析与设计阶段、构造阶段、移交和运行阶段等不同时期。
  • 软件生命周期的六个基本步骤:
    • 制定计划(P)、需求分析(D)、设计(D)、程序编码(D)、测试(C)、运行维护(A)。

软件生命周期及为软件从产生直到报废的整个过程。(软件测试要贯穿于整个软件生命周期中)

1. 可行性研究(是否做?)

  1. 目的:该软件项目是否因该做;
  2. 对软件项目进行多个角度分析;
    • 技术可行性:当前技术能否完成该软件项目
    • 经济可行性:该项目预估投入多少,能否带来收益
    • 操作可行性:该项目是否界面友好,功能清晰,能够方便操作
    • 社会可行性:是否符合法律法规,是否能够有益社会发展,短时间内不被淘汰
  3. 工具:数据流图、系统流程图
  4. 产物:最终将分析结果以可行性研究报告的形式展现

2. 需求分析(做什么?)

  1. 目的:了解客户需求,明确客户对软件项目的需求;(做什么)
  2. 内容:确定用户对软件项目的功能、性能、数据格式、界面的需求;
  3. 工具:建立逻辑模型、使用数据流图
  4. 产物:最终将用户需求用软件需求规格说明书的形式详细阐述

3. 概要设计(怎么做?大概)

  1. 目的:完成对软件项目的大概设计;
  2. 内容:对软件项目的功能模块进行划分,接口、界面的完成
  3. 产物:概要设计说明书

4. 详细设计(怎么做?详细)

  1. 目的:完成对软件项目功能实现的详细做法;
  2. 内容:对功能模块的实现,细化到算法、数据结构的层次,详细的定义功能模块的实现;
  3. 工具:程序流程图、伪代码、PAD图
  4. 产物:详细设计说明书;

5. 编码(开始做。)

  1. 目的:根据详细设计说明书,选择程序设计语言,完成编码工作;
  2. 产物:源代码

6. 测试(检查。)

  1. 目的:发现软件项目中尚未发现的问题;

  2. 方法:

    1、黑盒测试:又叫功能性测试,只关注功能是否实现,不关注内部算法;

     ①、边界值分析
     ②、等价类划分
    

    2、白盒测试:又叫结构性测试,关注内部算法是否正确;

     ①、路径覆盖
     ②、条件覆盖
     ③、判定覆盖
     ④、条件组合覆盖
     ⑤、语句覆盖
     ⑥、判定条件覆盖
    

    3、灰盒测试:结合白盒测试和黑盒测试,既关注内部逻辑,又关注总终结果

  3. 阶段:

    单元测试---->集成测试---->验收测试---->平行测试

    单元测试:单元模块的测试,最小功能模块,是否满足正常需求,错误操作是否会提醒

    集成测试:主要目的是检查每个单元模块集成接口的测试;

    系统测试:对整体软件系统的功能、性能的测试

    验收测试:对软件项目进行交付前的最后测试,对照需求规格说明书和交付标准,演示软件项目功能满足用户需求和验收标准;(用户参与、数据真实)

    平行运行:新老版本的同时运行,分析处理结果,使用户熟悉新版本

7. 产物(测试分析报告)

8. 运行维护(售后服务)

  1. 目的:保证软件产品交付之后的售后服务,维持软件产品的后期维护和完善工作,保证软件铲平能够持续工作

  2. 分类:

    1、正确性维护:发现软件测试阶段未发现的错误,维持软件产品功能的正常运作

    2、适应性维护:软件适应信息技术变化和管理需求变化而进行的修改。

    3、完善性维护:增加新的系统功能和需求。

    4、预防性维护:前瞻性的将一些将来会用到的功能加入到系统中,预防系统被淘汰

  3. 产物:程序维护手册

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 中国大陆许可协议进行许可。

posted @   eye_code  阅读(184)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 1967 ゴンチチ
  2. 2 Audio name Audio artist
1967 - ゴンチチ
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.