设计模式是测试模式咩?

设计模式和测试模式概述

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

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

软件的生命周期

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

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

在这里插入图片描述

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

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

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

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

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

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

软件的设计模式

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

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

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

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

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

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

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

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

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

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

在这里插入图片描述

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

测试模型

V模型

在这里插入图片描述

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

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

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

W模型

在这里插入图片描述

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka+redis分布式锁结合使用心得总结

#kafka部分 KafkaListener(topics "#{${vsmart_alert_detection_tms_send_message_topic}.split(,)}", groupId "${vsmart.alert.detection.consumer.group}") public void vsmartAlertDetectionTmsSendMessage(ConsumerRecord<?, ?> record, A…

从windows iso文件中提取install.wim

1、首先从微软官方下载需要的windows镜像 https://www.microsoft.com/zh-cn/software-download/windows10/ 2、在下载的iso文件右键&#xff0c;打开压缩包&#xff0c;在sources文件夹下&#xff0c;应该就可以看到install.wim了。但似乎在最新的win10版本&#xff0c;微软采…

Vue3使用vue-print-nb插件打印功能

插件官网地址https://www.npmjs.com/package/vue-print-nb 效果展示: 打印效果 根据不同的Vue版本安装插件 //Vue2.0版本安装方法 npm install vue-print-nb --save pnpm install vue-print-nb --save yarn add vue-print-nb//Vue3.0版本安装方法&#xff1a; npm install vue3…

vue3+vite搭建后台项目-2项目 src 别名的配置

src 别名的配置 在开发项目的时候文件与文件关系可能很复杂&#xff0c;因此我们需要给src文件夹配置一个别名 1.找到// vite.config.ts 文件 mport {defineConfig} from vite import vue from vitejs/plugin-vue import path from path export default defineConfig({plugins…

Redis配置文件

Redis可以在没有配置文件的情况下使用内置的默认配置启动&#xff0c;但是这种设置仅推荐用于测试和开发。 配置Redis的正确方法是提供一个Redis配置文件&#xff0c;通常称为 redis.conf 。 通过命令行传递参数启动 你也可以直接使用命令行传递Redis配置参数。这对于测试非…

低代码平台,业务开发的“银弹”

目录 一、为什么需要低代码平台 二、低代码平台的搭建能力 三、低代码其他能力 四、写在最后 随着互联网和信息技术的快速发展&#xff0c;各行各业都在积极拥抱数字化转型。在这个过程中&#xff0c;软件开发成为企业实现数字化转型的关键环节。然而&#xff0c;传统的软件开发…

C语言 每日一题 PTA 11.8 day14

1.矩阵A乘以B 给定两个矩阵A和B&#xff0c;要求你计算它们的乘积矩阵AB。需要注意的是&#xff0c;只有规模匹配的矩阵才可以相乘。 即若A有Ra​行、Ca列&#xff0c;B有Rb行、Cb列&#xff0c;则只有Ca与Rb​相等时&#xff0c;两个矩阵才能相乘。 输入格式&#xff1a; 输入…

【Java】IntelliJ IDEA使用JDBC连接MySQL数据库并写入数据

目录 0 准备工作1 创建Java项目2 添加JDBC 驱动程序3 创建数据库连接配置文件4 创建一个 Java 类来连接和操作数据库5 运行应用程序 在 IntelliJ IDEA 中连接 MySQL 数据库并将数据存储在数据表中&#xff0c;使用 Java 和 JDBC&#xff08;Java Database Connectivity&#xf…

Python 中 Selenium 的屏幕截图

文章目录 使用 save_screenshot() 函数在 Python 中使用 selenium 捕获屏幕截图使用 get_screenshot_as_file() 函数在 Python 中使用 selenium 捕获屏幕截图使用 Screenshot-Selenium 包在 Python 中使用 selenium 捕获屏幕截图总结我们可以使用 Selenium 在自动化 Web 浏览器…

Android拖放startDragAndDrop拖拽Glide加载堆叠圆角图,Kotlin(5)

Android拖放startDragAndDrop拖拽Glide加载堆叠圆角图&#xff0c;Kotlin&#xff08;5&#xff09; import android.content.ClipData import android.graphics.Canvas import android.graphics.Point import android.os.Bundle import android.util.Log import android.view.…

Echarts柱状体实现滚动条动态滚动

当我们柱状图中X轴数据太多的时候&#xff0c;会自动把柱形的宽度挤的很细&#xff0c;带来的交互非常不好&#xff0c;因此就有一个属性来解决&#xff1a;dataZoom 第一种简易的版本&#xff0c;横向滚动。 dataZoom: {show: true, // 为true 滚动条出现realtime: true, // 实…

含免费次数的API接口资源分享

全国招投标查询&#xff1a;查询招标保标信息&#xff0c;涵盖招标信息查询、中标信息查询、VIP项目、拟在建项目、业主委托项目、PPP项目、项目来源、历史招标库、政府采集信息、招标定制、订阅推送、订阅导出、数据下载等数十个招投标领域。AI绘画-Mid Journey&#xff1a;使…

hdlbits系列verilog解答(反转向量位序)-40

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 给定一个 100 位输入向量 [99:0],反转其位顺序。 Module Declaration module top_module( input [99:0] in, output [99:0] out ); 二、verilog源码 module top_module( input [99:0] in,output [99:0

Leetcode 299. Bulls and Cows

Problem You are playing the Bulls and Cows game with your friend. You write down a secret number and ask your friend to guess what the number is. When your friend makes a guess, you provide a hint with the following info: The number of “bulls”, which …

RabbitMQ集群配置以及负载均衡配置

RabbitMQ集群配置以及负载均衡配置 环境配置集群配置安装rabbitmq启动rabbitmq开启远程登录添加用户并且授权用户添加数据存放目录和日志存放目录查看端口拷⻉erlang.cookie将mq-2、mq-3作为内存节点加⼊mq-1节点集群中查看集群状态添加一个新的队列 RabbitMq负载均衡配置-HAPr…

【ChatGLM2-6B】小白入门及Docker下部署

【ChatGLM2-6B】小白入门及Docker下部署 一、简介1、ChatGLM2是什么2、组成部分3、相关地址 二、基于Docker安装部署1、前提2、CentOS7安装NVIDIA显卡驱动1&#xff09;查看服务器版本及显卡信息2&#xff09;相关依赖安装3&#xff09;显卡驱动安装 2、 CentOS7安装NVIDIA-Doc…

常用SQL——IF介绍

在SQL中&#xff0c;IF语句用于根据条件执行不同的操作。下面是一个简单的教程&#xff0c;介绍如何在不同的数据库中使用IF语句。 1. MySQL中的IF语句&#xff1a; sql IF(condition, true_value, false_value) 在MySQL中&#xff0c;IF函数接受一个条件表达式&#xff0c…

自主开发刷题应用网站H5源码(无需后端无需数据库)

该应用使用JSON作为题库的存储方式&#xff0c;层次清晰、结构简单易懂。 配套的word模板和模板到JSON转换工具可供使用&#xff0c;方便将题库从word格式转换为JSON格式。 四种刷题模式包括顺序刷题、乱序刷题、错题模式和背题模式&#xff0c;可以根据自己的需求选择适合的模…

计网----累积应答,TCP的流量控制--滑动窗口,粘包问题,心跳机制,Nagle算法,拥塞控制,TCP协议总结,UDP和TCP对比,中介者模式

计网----累积应答&#xff0c;TCP的流量控制–滑动窗口&#xff0c;粘包问题&#xff0c;心跳机制&#xff0c;Nagle算法&#xff0c;拥塞控制&#xff0c;TCP协议总结&#xff0c;UDP和TCP对比&#xff0c;中介者模式 一.累积应答 1.什么是累计应答 每次发一些包&#xff0…

Leetcode刷题详解—— 组合总和

1. 题目链接&#xff1a;39. 组合总和 2. 题目描述&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些…