设计模式是测试模式咩?

设计模式和测试模式概述

    • 软件的生命周期
    • 为什么要进行测试(测试的目的)?
    • 软件的设计模式
        • 1. **瀑布模型**
        • 3. 增量和迭代模型
        • 4. 敏捷模型
        • 5. 喷泉模型
    • 测试模型
      • `V`模型
      • `W`模型

一个应用程序从出生到“死亡”会经过非常漫长的流程……

软件的生命周期

我们知道一段旅行的周期:

确认旅行地点—>计划旅行时间—>设计旅行内容—>前往旅行目的地—>执行旅行计划—>完成本次旅行

在这里插入图片描述

软件的生命周期何尝不是如此:

  1. 需求分析:分析软件需求,可以从用户角度或者甲方要求切入,输出需求文档
  2. 计划:根据需求分析出的功能点做好项目计划
  3. 设计:根据计划设计出功能,输出设计文档
  4. 编码:根据设计文档,使用合适的计算机语言进行应用程序的编写
  5. 执行测试用例:根据设计文档和需求文档进行测试,输出测试报告
  6. 运行维护:软件后期的修复过程,在软件的运行阶段需要对软件进行不断完善的过程。
  7. 下架:停止对这个软件的一切行为,回收软件资源

为什么要进行测试(测试的目的)?

在软件的生命周期中,我们可以看到,在编码完成之后,需要进行测试,测试的目的是什么?难道开发人员做的应用程序不能用吗?

不是的测试的目的是为了确保软件解决了应该解决的问题,发现软件中可能存在或者已经存在的问题,是一个尽可能去将软件完善的过程

如果想要一个软件合乎用户的需求,就必须要进行相应的测试,避免非常多的意外情况出现,不能去让用户发现这个错误,作为测试人员应该要有责任感

软件的设计模式

1. 瀑布模型
  • 该设计模式与软件的生命周期是一样的,需求分析—》计划—》设计—》编码—》测试—》运行维护—》下架

由此我们可以观察到,在这种模型下的软件设计,测试人员是在编码阶段后才加入到项目中,这种设计模式的存在一定的优缺点。

优点:更注重开发的阶段性。强调早期计划及需求调查。

缺点:依赖于早期需求调查,不能适应变化。在开发时中的经验不能反馈到对本产品的一些过程中。风险延后发现,直到测试阶段才发现风险,导致风险无法及时纠正,错过改正错误的最佳时机。

应用场景:更适合于小项目开发,变化幅度小的项目。

在这里插入图片描述#### 2. 螺旋模型

  • 是一种渐进式开发的代表之一,对于一些复杂度高,规模庞大,风险大的项目非常合适,这种迭代开发的模式给软件测试带来了新要求和新规范,它不允许独立测试,测试必须要和开发的迭代进行相关联。其中的回归测试是非常重要的。

    优点:在需求阶段就加入测试,非常严谨的风险管理。重视各阶段的开发质量。提供选择机会这个计划是否可行。

    缺点:引入非常严格的风险识别、风险分析和风险控制,需要投入大量时间,人力、物力。

    应用场景:复杂度高的项目,风险大的项目适配螺旋模式是一个不错的选择。

在这里插入图片描述

3. 增量和迭代模型
  • 增量模型可以显著降低项目风险,结合软件持续构建机制,现今成为最流行的开发区模型之一。增量模型是从功能量上进行划分的,每阶段完成一定的功能。

    优点:降低项目风险,提高项目安全性。

    缺点:可用在完整项目中时的难度大。

    应用场景:适用于项目中功能成熟度高。

  • 迭代模型是从深度或细化的程度进行划分的,每阶段功能得到完善,增强,适用于需求不明显,难度大的软件开发。在进行软件开发的时候一般是将系统的项目划分为一个个非常小的模块,每个部分都要经过设计、编码、测试等多个环节。

    优点:每个迭代都有一个清晰的目标和可交付成果,避免盲目编码。

    缺点:项目变动快,设计、编码和测试的时间线会拉长。

    应用场景:受用于一些本就不成熟的阶段,一步步进行改进。

  • 两个设计模型的互相补充,一个设计项目中可以掺杂增量和迭代两种开发模式,会使得项目开发更加高效。

4. 敏捷模型
  • 是一种以迭代进行开发的一种软件开发模式,强调快熟反应和价值驱动。项目在构建初期分为好几个子项目,具备可视,可集成,可运行等特征。

    优点:严格按照规则执行,步骤成果是检验程序进度的方法。增加项目的可维护性,允许需求和设计改变。

    缺点:更高的成本和更高的人力需求,存在风险和不确定性。

    应用场景:适用于多变的数据模型中,适用于复杂场景,因为它灵活多变。

5. 喷泉模型
  • 是一种用于描述用户需求的软件开发过程,这种测试过程以用户需求作为动力,以对象为驱动力。在执行软件生命周期中的每一步时,不需要按照规则,可以进行交叉执行,迭代执行。

    优点:风险防范做的好,可以随时补充需求与功能,测试中也可以进行交叉测试

    缺点:需要消耗大量人力、物力和时间。

    应用场景:在一些大规模项目中,可能会改动需求的项目中适用

测试模型

V模型

在这里插入图片描述

准确描述了测试过程中不同类型的测试,并且清晰地描述了测试阶段和开发阶段中的对应关系。

该模型指出,测试是存在顺序的,单元测试是在集成测试之前,所以在执行测试时应该要先保证前方功能实现成果。

  • 局限性:把测试的时间摆放在编码后期,未在需求开始之前就进入测试阶段。

W模型

在这里插入图片描述

该模型配合两个 V 模型进行软件测试,增加了各个阶段性的测试过程,明确表达了测试与开发的并行行为。

特点:测试和开发是同步进行的,测试工作在早期需求分析就加入项目中。

优点:有助于早日发现软件问题,及时修复缺陷。对需求的测试也有益于理解项目难度和测试风险。可以早点制定测试对策,以修复缺陷。

局限性:虽然上图是并行,实则也是串行,只有执行完上一个工作才可以进行下一项工作。无法支持敏捷开发模型,对于当前环境复杂多变,该软件测试模型也同样会面临瓶颈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/125025.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

剑指JUC原理-15.ThreadLocal

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…

XSS 跨站点脚本漏洞详解

文章目录 漏洞概述XSS漏洞原理xss漏洞危害xss漏洞验证XSS漏洞分类反射型存储型DOM型 固定会话攻击原理简单xss注入复现 XSS 攻防xss构造方法利用标签符号<>事件响应javascript伪协议其他标签 XSS 变形方式xss防御黑白名单策略输入过滤 案例XSS 盲打 漏洞概述 ​ 跨站点脚…

rancher或者其他容器平台使用非root用户启动jar

场景&#xff1a; java程序打成镜像&#xff0c;在rancher上运行&#xff0c;默认是root账户&#xff0c;发现hdfs或者hive不允许root账户操作&#xff1b;所以打算用费root账户启动jar&#xff0c;使其具有hive和hdfs的操作权限。 Dockerfile entrypoint.sh 思路就是上面这样…

【第2章 Node.js基础】2.3 Node.js事件机制

2.3 Node.js事件机制 学习目标 &#xff08;1&#xff09;理解Node.js的事件机制&#xff1b; &#xff08;2&#xff09;掌握事件的监听与触发的用法。 文章目录 2.3 Node.js事件机制什么是事件机制为什么要有事件机制事件循环事件的监听与触发EventEmitter类常用API 什么是…

面包屑实现

背景&#xff1a;面包屑根据菜单内容显示不同内容。首页永远存在&#xff0c;后面的活动管理及多级菜单的面包屑展示。 实现原理&#xff1a; 通过this.$route.matched获取所有匹配路由&#xff0c;将处理首页外的其他路由设置到一个数组中&#xff0c;再通过数组循环方式显示…

Qt国际化

刚开始听到这个名字我还觉得很高大上&#xff0c;最后发现这不就是系统语言选择吗&#xff0c;适应不同国家的人 先在widget.cpp写个要翻译的东西&#xff0c;我这里想做英语翻译成汉语、日语、泰语三种 #include "widget.h"Widget::Widget(QWidget *parent): QWidg…

0基础学习VR全景平台篇第119篇:利用蒙版航拍补天 - PS教程

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 嗨&#xff0c;大家好。欢迎收看蛙色VR系列教程之PS利用蒙版航拍补天。 我们之前已经教过大家如何进行航拍调色&#xff0c;不知道大家学的怎么样呢&#xff1f; 会不会发现&…

壁炉艺术:美与温暖的交汇点

在我们的家中&#xff0c;有一种东西&#xff0c;既能提供温暖&#xff0c;又能为室内增添活力。壁炉不仅是取暖的好帮手&#xff0c;还能成为室内设计的亮点。 壁炉最初是为了取暖而生的&#xff0c;但如今&#xff0c;它们已经变成了室内设计的一部分。现代壁炉不再仅仅是灶…

【Qt之QAssociativeIterable】使用

介绍 QAssociativeIterable类是QVariant中一个关联式容器的可迭代接口。这个类允许多种访问在QVariant中保存的关联式容器元素的方法。如果一个QVariant可以转换为QVariantHash或QVariantMap&#xff0c;那么QAssociativeIterable的实例可以从中提取出来。 QHash<int, QSt…

centos的docker镜像下载ffmpeg的方式

ffmpeg是业界比较好用的开源的音频处理工具&#xff0c;当我们在实际业务中使用ffmpeg的时候&#xff0c;直接使用yum安装回提示找不到ffmpeg的包&#xff0c;遇到这种情况&#xff0c;可以通过以下方式来进行安装&#xff08;docker环境&#xff09;。 已经拥有镜像 更新源 …

【自动化测试】基于Selenium + Python的web自动化框架

一、什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化工具&#xff0c;她提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid&#xff1a;  1、Selenium IDE&…

电脑如何设置不同网段的IP地址,实现访问不同IP的PLC或HMI设备?

电脑如何设置不同网段的IP地址,实现访问不同IP的PLC或HMI设备? 电脑如何设置不同网段的IP地址,实现访问不同IP的PLC或HMI设备? 这里以win10系统为例进行说明: 如下图所示,打开右下角的“网络和Internet设置”, 如下图所示,点击进入“更改适配器选项”, 如下图所示…

软件测试入门之接口测试

首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接口&#xff0c;一种是系统对外的接口。 系统对外的接口&#xff1a;比如你要从别的网站或服务器上获取资源或信息&#xff0c;别人肯定不会把数据库共享给你&#xff0c;他只能给你…

【技术类-01】doc转PDF程序卡死的解决方案,

摘要&#xff1a; 1、报错&#xff1a; raise AttributeError("%s.%s" % (self._username_, attr))&#xff09; 2、表现&#xff1a;doc转PDF卡死&#xff08;白条不动或出现以上英文&#xff09; 3、解决&#xff1a;在docx保存代码行后面加上time.sleep(3) 4、…

vue+java实现语音转文字思路

思路&#xff1a; 前端录音生成wav文件后端去解析 技术&#xff1a; 后端&#xff1a; Vosk是一个离线开源语音识别工具。它可以识别16种语言&#xff0c;包括中文。 API接口&#xff0c;让您可以只用几行代码&#xff0c;即可迅速免费调用、体验功能。 目前支持 WAV声音文件…

Django(一、简介,安装与使用)

文章目录 一、Django引入1.web应用程序什么是web&#xff1f;web引用程序的优点web应用程序的缺点什么是web框架 2.纯手写web框架1.web框架的本质2.HTTP协议的特性&#xff1a;3.编写基于wsgire模块搭建web框架代码封装优化代码封装 二、Django框架的学习1.Python中的主流框架2…

基于Kinect 动捕XR直播解决方案 - 硬件篇

Kinect-V2 硬件设备 一、Kinect介绍 1、Kinect for Windows 的开发配置 Kinect V2 操作系统&#xff1a;Windows 10&#xff08;必须&#xff09; Windows Surface Windows Surface 2 开发环境&#xff1a;Visual Studio 2017 .NET Framework 4.5 (.NET Framework 4.5) 硬…

vue实现商品列表,组件抽离

1.需求说明 my-tag 标签组件封装 ​ (1) 双击显示输入框&#xff0c;输入框获取焦点 ​ (2) 失去焦点&#xff0c;隐藏输入框 ​ (3) 回显标签信息 ​ (4) 内容修改&#xff0c;回车 → 修改标签信息 my-table 表格组件封装 ​ (1) 动态传递表格数据渲染 ​ (2) 表头支…

竞赛 深度学习疲劳检测 驾驶行为检测 - python opencv cnn

文章目录 0 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习加…

使用EvoMap/Three.js模拟无人机灯光秀

一、创建地图对象 首先我们需要创建一个EM.Map对象&#xff0c;该对象代表了一个地图实例&#xff0c;并设置id为"map"的文档元素作为地图的容器。 let map new EM.Map("map",{zoom:22.14,center:[8.02528, -29.27638, 0],pitch:71.507,roll:2.01,maxPit…