设计模式是测试模式咩?
设计模式和测试模式概述
- 软件的生命周期
- 为什么要进行测试(测试的目的)?
- 软件的设计模式
- 1. **瀑布模型**
- 3. 增量和迭代模型
- 4. 敏捷模型
- 5. 喷泉模型
- 测试模型
- `V`模型
- `W`模型
一个应用程序从出生到“死亡”会经过非常漫长的流程……
软件的生命周期
我们知道一段旅行的周期:
确认旅行地点—>计划旅行时间—>设计旅行内容—>前往旅行目的地—>执行旅行计划—>完成本次旅行

软件的生命周期何尝不是如此:
- 需求分析:分析软件需求,可以从用户角度或者甲方要求切入,输出需求文档
- 计划:根据需求分析出的功能点做好项目计划
- 设计:根据计划设计出功能,输出设计文档
- 编码:根据设计文档,使用合适的计算机语言进行应用程序的编写
- 执行测试用例:根据设计文档和需求文档进行测试,输出测试报告
- 运行维护:软件后期的修复过程,在软件的运行阶段需要对软件进行不断完善的过程。
- 下架:停止对这个软件的一切行为,回收软件资源
为什么要进行测试(测试的目的)?
在软件的生命周期中,我们可以看到,在编码完成之后,需要进行测试,测试的目的是什么?难道开发人员做的应用程序不能用吗?
不是的!测试的目的是为了确保软件解决了应该解决的问题,发现软件中可能存在或者已经存在的问题,是一个尽可能去将软件完善的过程。
如果想要一个软件合乎用户的需求,就必须要进行相应的测试,避免非常多的意外情况出现,不能去让用户发现这个错误,作为测试人员应该要有责任感。
软件的设计模式
1. 瀑布模型
- 该设计模式与软件的生命周期是一样的,需求分析—》计划—》设计—》编码—》测试—》运行维护—》下架
由此我们可以观察到,在这种模型下的软件设计,测试人员是在编码阶段后才加入到项目中,这种设计模式的存在一定的优缺点。
优点:更注重开发的阶段性。强调早期计划及需求调查。
缺点:依赖于早期需求调查,不能适应变化。在开发时中的经验不能反馈到对本产品的一些过程中。风险延后发现,直到测试阶段才发现风险,导致风险无法及时纠正,错过改正错误的最佳时机。
应用场景:更适合于小项目开发,变化幅度小的项目。
#### 2. 螺旋模型
是一种渐进式开发的代表之一,对于一些复杂度高,规模庞大,风险大的项目非常合适,这种迭代开发的模式给软件测试带来了新要求和新规范,它不允许独立测试,测试必须要和开发的迭代进行相关联。其中的回归测试是非常重要的。
优点:在需求阶段就加入测试,非常严谨的风险管理。重视各阶段的开发质量。提供选择机会这个计划是否可行。
缺点:引入非常严格的风险识别、风险分析和风险控制,需要投入大量时间,人力、物力。
应用场景:复杂度高的项目,风险大的项目适配螺旋模式是一个不错的选择。

3. 增量和迭代模型
增量模型可以显著降低项目风险,结合软件持续构建机制,现今成为最流行的开发区模型之一。增量模型是从功能量上进行划分的,每阶段完成一定的功能。
优点:降低项目风险,提高项目安全性。
缺点:可用在完整项目中时的难度大。
应用场景:适用于项目中功能成熟度高。
迭代模型是从深度或细化的程度进行划分的,每阶段功能得到完善,增强,适用于需求不明显,难度大的软件开发。在进行软件开发的时候一般是将系统的项目划分为一个个非常小的模块,每个部分都要经过设计、编码、测试等多个环节。
优点:每个迭代都有一个清晰的目标和可交付成果,避免盲目编码。
缺点:项目变动快,设计、编码和测试的时间线会拉长。
应用场景:受用于一些本就不成熟的阶段,一步步进行改进。
两个设计模型的互相补充,一个设计项目中可以掺杂增量和迭代两种开发模式,会使得项目开发更加高效。
4. 敏捷模型
是一种以迭代进行开发的一种软件开发模式,强调快熟反应和价值驱动。项目在构建初期分为好几个子项目,具备可视,可集成,可运行等特征。
优点:严格按照规则执行,步骤成果是检验程序进度的方法。增加项目的可维护性,允许需求和设计改变。
缺点:更高的成本和更高的人力需求,存在风险和不确定性。
应用场景:适用于多变的数据模型中,适用于复杂场景,因为它灵活多变。
5. 喷泉模型
是一种用于描述用户需求的软件开发过程,这种测试过程以用户需求作为动力,以对象为驱动力。在执行软件生命周期中的每一步时,不需要按照规则,可以进行交叉执行,迭代执行。
优点:风险防范做的好,可以随时补充需求与功能,测试中也可以进行交叉测试
缺点:需要消耗大量人力、物力和时间。
应用场景:在一些大规模项目中,可能会改动需求的项目中适用
测试模型
V模型
准确描述了测试过程中不同类型的测试,并且清晰地描述了测试阶段和开发阶段中的对应关系。
该模型指出,测试是存在顺序的,单元测试是在集成测试之前,所以在执行测试时应该要先保证前方功能实现成果。
- 局限性:把测试的时间摆放在编码后期,未在需求开始之前就进入测试阶段。
W模型
该模型配合两个 V 模型进行软件测试,增加了各个阶段性的测试过程,明确表达了测试与开发的并行行为。
特点:测试和开发是同步进行的,测试工作在早期需求分析就加入项目中。
优点:有助于早日发现软件问题,及时修复缺陷。对需求的测试也有益于理解项目难度和测试风险。可以早点制定测试对策,以修复缺陷。
局限性:虽然上图是并行,实则也是串行,只有执行完上一个工作才可以进行下一项工作。无法支持敏捷开发模型,对于当前环境复杂多变,该软件测试模型也同样会面临瓶颈。
相关文章:
设计模式是测试模式咩?
设计模式和测试模式概述 软件的生命周期为什么要进行测试(测试的目的)?软件的设计模式1. **瀑布模型**3. 增量和迭代模型4. 敏捷模型5. 喷泉模型 测试模型V模型W模型 一个应用程序从出生到“死亡”会经过非常漫长的流程…… 软件的生命周期 …...
Aspose.OCR for .NET 2023Crack
Aspose.OCR for .NET 2023Crack 为.NET在图片上播放OCR使所有用户和程序员都可以从特定的图像片段中提取文本和相关的细节,如字体、设计以及书写位置。这一特定属性为OCR的性能及其在扫描遵循排列的记录时的功能提供了动力。OCR的库使用一条线甚至几条线来处理这些特…...
conda环境中pytorch1.2.0版本安装包安装一直失败解决办法!!!
conda环境中pytorch1.2.0版本安装包安装一直失败解决办法 cuda10.0以及cudnn7.4现在以及安装完成,就差torch的安装了,现在torch我要装的是1.2.0版本的,安装包以及下载好了,安装包都是在这个网站里下载的(点此进入&…...
后端面试问题(学习版)
JAVA相关 JAVA语言概述 1. 一个".java"源文件中是否可以包含多个类?有什么限制? 可以。 一个源文件可以声明多个类,但是最多只能有一个类使用public进行声明 且要求声明public的类的类名与源文件相同。 2. Java的优势ÿ…...
数据管理系统-week1-介绍
文章目录 一、数据它是什么?二、电子存储设备三、持久存储设备1、硬盘驱动器(HDD)、硬盘、硬盘驱动器是一种用于存储和检索数字信息的机电持久存储设备。2、固态硬盘(SSD)使用非易失性存储器,即使用NAND闪存…...
【SpringBoot】手写模拟SpringBoot核心流程
依赖包 新建一个工程,包含两个 module: springboot 模块,表示 springboot 源码实现;user 模块,表示业务系统,使用 springboot 模块; 依赖包:Spring、SpringMVC、Tomcat 等ÿ…...
应对.locked勒索病毒:恢复、预防全方位攻略
导言: .locked勒索病毒并非简单的数字威胁,它是一场对个人和企业数字资产的精密审判。这种病毒通过各种方式感染系统,从而以瞬间之间将用户的关键文件变成数字拼图,无情地要求赎金以换取解锁的密钥。如果您正在经历勒索病毒数据恢…...
基于DS1302时钟液晶12864显示2路闹钟仿真及源程序
一、系统方案 1、本设计采用51单片机作为主控器。 2、DS1302采集年月日时分秒送到液晶12864显示。 3、按键年月日时分秒,两路闹钟。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 uchar clock_time[6] {0X00,0X59,0X23,0X09,0X…...
AGC034E Complete Compress
AGC034E Complete Compress 洛谷[AGC034E] Complete Compress 题目大意 给你一棵有 n n n个节点的树,并用 01 01 01串告诉你哪些节点上有棋子(恰好一棵)。 你可以进行若干次操作,每次操作可以将两颗距离至少为 2 2 2的棋子向彼…...
python设计模式12:状态模式
什么是状态机? 关键属性: 状态和转换 状态: 系统当前状态 转换:一种状态到另外一种状态的变化。 转换由触发事件或是条件启动。 状态机-状态图 状态机使用场景: 自动售货机 电梯 交通灯 组合锁 停车计时…...
JS对图片尺寸和DPI进行编辑修改(1寸照修改为2寸照)
各种报名都对照片有大小限制,鉴于这种情况,网上搜了后拼凑出了如下代码,用于解决1寸照片修改为2寸照片,同时将DPI修改为300,当然也可以根据自己的情况修改代码: HTML <input type"file" id&…...
EDA实验----四选一多路选择器设计(QuartusII)
目录 一.实验目的 二.实验仪器设备 三.实验原理: 四.实验要求 五.实验内容及步骤 1.实验内容 2.实验步骤 六.实验报告 七.实验过程 1.创建Verilog文件,写代码 2.波形仿真 …...
从windows iso文件中提取install.wim
1、首先从微软官方下载需要的windows镜像 https://www.microsoft.com/zh-cn/software-download/windows10/ 2、在下载的iso文件右键,打开压缩包,在sources文件夹下,应该就可以看到install.wim了。但似乎在最新的win10版本,微软采…...
Python的flask网页编程的GET和POST方法的区别
关于flask网页编程的GET及POST方法之间存在哪些区别问题,我们主要从以下六个关键点予以详细阐述: 首先需要明确的是,GET与POST两种不同类型的HTTP方法所采用的请求模式有所差别。其中,GET方法采用的是基于URL请求的机制ÿ…...
15 # 手写 throttle 节流方法
什么是节流 节流是限制事件触发的频率,当持续触发事件时,在一定时间内只执行一次事件,这个效果跟英雄联盟里的闪现技能释放差不多。 函数防抖关注一定时间连续触发的事件只在最后执行一次,而函数节流侧重于一段时间内只执行一次…...
puzzle(1612)拼单词、wordlegame
目录 拼单词 wordlegame 拼单词 在线play 找出尽可能多的单词。 如果相邻的话(在任何方向上),你可以拖拽鼠标从一个字母(方格)到另一个字母(方格)。在一个单词中,你不能多次使用…...
【解决方案】pytion 运行时提示 import psutil ModuleNotFoundError: No module named ‘psutil‘
报错原因分析 import psutil ModuleNotFoundError: No module named psutil报错原因分析 当前环境pytion中缺少了psutil包,使用pip命令进行安装 解决方案 pip install psutil...
CSS3 过度效果、动画、多列
一、CSS3过度: CSS3过渡是元素从一种样式逐渐改变为另一种的效果。要实现这一点,必须规定两相内容:指定要添加效果的CSS属性;指定效果的持续时间。如果为指定持续时间,transition将没有任何效果。 <style> div…...
java使用geotools解析矢量数据kml、geojson、shp文件
geotools解析kml、geojson geotools环境准备公共获取属性方法解析kml解析geojson解析shp geotools环境准备 这里使用的是maven引用geotools包,引用geotools包需要添加maven仓库,pom.xml文件如下: <properties><!-- geotools版本 -…...
原生 JS DOM 常用操作大全
DOM DOM文档对象模型 又称为DOM树 DOM树 由文档、元素、节点 组成文档:一个页面就是一个文档,元素:文档中的所有标签都称为元素。DOM中使用Element表示节点:文档中的所有内容,在文档中都是节点(标签、属性…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

