软件测试----概念篇(笔试相关,一般考察开发模型和测试模型的特点及适用场景)

文章目录

  • 前言
  • 一、需求
  • 二、开发模型
    • 1.什么是“模型”
    • 2.软件的生命周期
    • 3.常见开发模型
        • 瀑布模型
        • 螺旋模型
        • 增量模型、迭代模型
        • 敏捷模型
  • 三、测试模型
    • V模型
    • W模型(双V模型)


前言

在当今软件行业飞速发展的时代,软件测试已成为软件质量保障的重要环节。它贯穿于整个软件生命周期,从需求分析、开发模型的选择到测试模型的构建,每一个环节都需要精心的设计与实施。本文将带领读者深入理解软件测试的基本概念,包括软件测试的需求分析、开发模型与测试模型的选择与应用,旨在为读者提供一个全面而简洁的软件测试概念框架。


一、需求

在多数软件公司,会有两部分需求,⼀部分是⽤户需求,⼀部分是软件需求。

用户需求

可以简单理解为甲⽅提出的需求,如果没有甲⽅,那么就是终端⽤⼾使⽤产品时必须要完 成的任务。该需求⼀般⽐较简略,通常是⼀句话:⽐如:实现⼀个声控灯,实现⼀个软件的登录功能。

软件需求

或者叫功能需求,该需求会详细描述开发⼈员必须实现的软件功能。软件需求是测试⼈员进⾏测试⼯ 作的基本依据。

注意:⽤户的需求不能直接作为开发和测试的依据。针对⽤户的需求,产品经理需要进行需求分析
(技术可行性、市场可行性、成本投入和收益占比等)后才可转变为软件需求。

二、开发模型

1.什么是“模型”

实际的“模型”
在这里插入图片描述

随着软件⼯程学科的发展,⼈们对计算机软件的认识逐渐深⼊。软件⼯作的范围不仅仅局限在程序编写,⽽是扩展到了整个软件⽣命周期,如软件基本概念的形成、需求分析、设计、实现、测试、安装部署、运⾏维护,直到软件被更新和替换新的版本。软件⼯程还包括很多技术性的管理⼯作,例如过程管理、产品管理、资源管理和质量管理,在这些⽅⾯也逐步地建⽴起了标准或规范。

2.软件的生命周期

软件(开发)的生命周期:
需求分析⸺计划⸺设计⸺编码⸺测试⸺运⾏维护

对于软件的⽣命周期中,每个阶段都在做什么呢?

阶段具体内容产出
需求分析分析⽤户需求是否合理,分别从市场需求、技术等⽅⾯进⾏分析该阶段会输出需求等⽂档
计划对成⽴的需求执⾏需求执⾏计划,多⻓时间内完成该需求,每段时间具体完成哪些功能该阶段会输出计划等⽂档
设计将需求细化成⼀个个任务,团队成员各司其职领取任务并进⾏技术设计(如何进⾏架构设计,设计哪些接⼝、采⽤什么技术)该阶段会输出技术等⽂档
编码开发⼈员参考需求⽂档、设计⽂档、交互图等等⽂件进⾏代码的编写代码⽂件等⽂档
测试测试⼈员需要介⼊到软件的测试中来,参考测试⽤例对软件进⾏测试测试⽤例、测试设计与计划、测试报告等⽂档
运行维护项⽬测试结束之后,项⽬需要进⾏上线,并对产品进⾏线上的维护。线上的维护主要分为三个⽅⾯。分别为修复性维护、完善性维护和预防性维护。【修复性维护:对项⽬中未发现的问题进⾏修复。完善性维护:对功能进⾏完善。预防性维护:居安思危,为了避免产品在线上出现⼀些其他不可预料的问题,进⾏⼀些防护的⼿段】

3.常见开发模型

瀑布模型

瀑布模型在软件⼯程中占有重要地位,是所有其他模型的基础框架。瀑布模型的每⼀个阶段都只执⾏⼀次,因此是线性顺序进⾏的软件开发模式。

在这里插入图片描述

优点/特点
• 强调开发的阶段性;
• 线性结构,每个阶段只执⾏⼀次
• 是其他模型的基础框架

缺点
• 测试后置
◦ 前⾯各阶段遗留的⻛险推迟到测试阶段才被发现,导致项⽬⼤⾯积返⼯,失去了及早修复的机会
◦ 必须留有⾜够的时间给测试活动,否则导致测试不充分,将缺陷直接暴露给⽤户(产品质量差)
• 周期太长,产品很迟才能被看到和使⽤,可能会导致需求/功能过时

瀑布模型的适用场景:需求固定的小项目。

螺旋模型

⼀般在软件开发初期阶段需求不是很明确时,采⽤渐进式的开发模式。螺旋模型是渐进式开发模型的代表之⼀。
这对于那些规模庞⼤、复杂度⾼、⻛险⼤的项⽬尤其适合。这种迭代开发的模式给软件测试带来了新
的要求,它不允许有⼀段独⽴的测试时间和阶段,测试必须跟随开发的迭代⽽迭代。因此,回归测试
的重要性就不⾔⽽喻了。

在这里插入图片描述

优点
• 强调严格的全过程⻛险管
理。
• 强调各开发阶段的质量。
• 增加⻛险分析和原型

缺点
• 项⽬中可能存在的⻛险性与⻛险管理⼈员的技能⽔平有直接关系
• 需求⼈员、资⾦、时间的增加和投⼊,可能会导致项⽬的成本太⾼

适用场景:规模庞大、复杂度高、风险大的项目。

增量模型、迭代模型

在这里插入图片描述
增量开发

增量开发能显著降低项⽬⻛险,结合软件持续构建机制,构成了当今流⾏的软件⼯程最佳实践之⼀。
增量开发模型,⿎励⽤户反馈,在每个迭代过程中,促使开发⼩组以⼀种循环的、可预测的⽅式驱动
产品 的开发。因此,在这种开发模式下,每⼀次的迭代都意味着可能有需求的更改、构建出新的可执
⾏软件 版本,意味着测试需要频繁进⾏,测试⼈员需要与开发⼈员更加紧密地协作。
与此类似的有⼀个迭代开发,增量开发和迭代开发往往容易被⼈,但是其实两者是有区别的。增量是
逐块建造的概念,迭代是反复求精的概念。

与此类似的有⼀个迭代开发,增量开发和迭代开发往往容易被⼈,但是其实两者是有区别的。增量是
逐块建造的概念,迭代是反复求精的概念。
例如画⼀幅⼈物画
增量模型是先画⼈的头部,再画⾝体,再画⼿脚……
迭代模型是先画整体轮廓,再勾勒出基本雏形,再细化、着⾊…

适用场景:大型项目,需求不明确。

敏捷模型

敏捷模型是一种轻量、高效、低风险、更强调团队协作和沟通的开发方式,适合于中小型开发团队,客户需求模糊或多变。

敏捷模型的四个特点:轻⽂档,轻流程,重⽬标,重产出。

三、测试模型

测试模型中有两个⾮常重要且具有标志性的测试模型:V模型和W模型。

V模型

在这里插入图片描述

优点:
明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间。
各阶段的对应关系,有效提升测试的质量和效率。
• V模型指出:
◦ 单元和集成测试应检测程序的执⾏是否满⾜软件设计的要求;
◦ 系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;
◦ 验收测试确定软件的实现是否满⾜⽤⼾需要或合同的要求
缺点:仅仅把测试作为在编码之后的⼀个阶段,未在需求阶段就介⼊测试。缺点同瀑布模型。

W模型(双V模型)

V模型中未将测试前置的问题在W模型中得以解决。
在这里插入图片描述

W模型增加了软件各开发阶段中应同步进⾏的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表⽰出了测试与开发的并⾏关系。
特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进⾏的。

优点:
• 有利于尽早地全⾯的发现问题。例如,需求分析完成后,测试⼈员就应该参与到对需求的验证和确
认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项⽬难度和测试⻛险,
及早制定应对措施,显著减少总体测试时间,加快项⽬进度。
缺点:
• 需求、设计、编码等活动被视为串⾏的;
• 测试和开发活动也保持着⼀种线性的前后关系,上⼀阶段完全结束,才可正式开始下⼀个阶段⼯
作。
• 重流程,⽆法⽀持敏捷开发模式(轻文档轻流程)。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理
⾯临着困惑。


最后,码字不易,如果觉得对你有帮助的话请点个赞吧,关注我,一起学习,一起进步!

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

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

相关文章

WhisperX

文章目录 一、关于 WhisperX新闻 🚨 二、设置⚙️1、创建Python3.10环境2、安装PyTorch,例如Linux和Windows CUDA11.8:3、安装此repo4、Speaker Diarization 三、使用💬(命令行)1、English2、他语言例如德语…

Cyber Weekly #16

赛博新闻 1、OpenAI 发布 GPT-4o mini OpenAI 本周官宣推出 GPT-4o mini,这是 GPT-4o 更小参数量的简化版本。ChatGPT 的免费用户、Plus 用户和 Team 用户能使用 GPT-4o mini 而并非 GPT-3.5 Turbo,企业用户在下周也将获得 GPT-4o mini 的权限。GPT-4o…

少儿编程启蒙宝典:Scratch动画游戏108变

一、编程教育的时代价值与意义 随着数字时代的深入发展,社会对人才的需求正发生深刻变革,计算思维与编程能力已成为衡量个人竞争力的重要指标。在此背景下,培养孩子们运用计算思维解决实际问题的能力,成为教育领域的重要任务。编…

UE4-获得角色控制权的两种方法

方法一: 方法二: 注意此方法不能有多个玩家出生点,如果有多个玩家出生点,会随机的选择一个玩家出生点进行生成。

IP5306移动电源DIY

最近制作一款移动电源,芯片采用的是IP5306

UDP详细总结

UDP协议特点 UDP是无连接的传输层协议; UDP使用尽最大努力交付,不保证可靠交付; UDP是面向报文的,对应用层交下来的报文,不合并,不拆分,保留原报文的边界; UDP没有拥塞控制&#…

python实现图像对比度增强算法

python实现直方图均衡化、自适应直方图均衡化、连接组件标记算法 1.直方图均衡化算法详解算法步骤公式Python 实现详细解释优缺点 2.自适应直方图均衡化算法详解算法步骤公式Python 实现详细解释优缺点 3.连接组件标记算法详解算法步骤8连通与4连通公式Python 实现详细解释优缺…

微服务实现全链路灰度发布

一、实现步骤 再请求 Header 中打上标签,例如再 Header 中添加 "gray-tag: true" ,其表示要进行灰度测试(访问灰度服务),而其他则访问正式服务。在负载均衡器 Spring Cloud LoadBalancer 中,拿到…

Deepin系统,中盛科技温湿度模块读温度纯c程序(备份)

#include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <termios.h>int main() {int fd;struct termios options;// 打开串口设备fd open("/dev/ttyMP0", O_RDWR | O_NOCTTY|O_NDELAY); //O_NDELAY:打开设备不阻塞//O_NOCTT…

Qt Creator配置以及使用Valgrind - 检测内存泄露

Qt Creator配置以及使用Valgrind - 检测内存泄露 引言一、下载安装1.1 下载源码1.2 安装 二、配置使用2.1 Qt Creator配置2.2 使用2.3 更多详细信息可参考官方文档&#xff1a; 三、参考链接 引言 Valgrind是一个在Linux平台下广泛使用的开源动态分析工具&#xff0c;它提供了一…

任务2:python+InternStudio 关卡

任务地址 https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Python/task.md 文档 https://github.com/InternLM/Tutorial/tree/camp3/docs/L0/Python 任务 Python实现wordcount import re import collectionstext """ Got this panda plush to…

【机器学习】智能驱动未来:机器学习在能源效率提升与环境管理中的创新应用

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 机器学习能源环境领域的应用潜力&#x1f304;能源效率提升&#x1f3de;️环境管理⛰️具体案例…

Linux之旅:常用的指令,热键和权限管理

目录 前言 1. Linux指令 &#xff08;1&#xff09; ls &#xff08;2&#xff09; pwd 和 cd &#xff08;3&#xff09;touch 和 mkdir &#xff08;4&#xff09; rmdir 和 rm &#xff08;5&#xff09;cp &#xff08;6&#xff09;mv &#xff08;7&#xff09;…

开发工具推荐:await-to-js

目录 前言&#xff1a; 1. .then().catch() 2. async await 3. await-to-js 前言&#xff1a; 今天给大家推荐一块我觉得用着还不错的工具&#xff0c;await-to-js&#xff1b; await-to-js - npm GitHub - scopsy/await-to-js: Async await wrapper for easy error ha…

HTML+CSS+JS精美气泡提示框

源代码在效果图后面 点赞❤️关注&#x1f49b;收藏⭐️ 主要实现&#xff1a;提示框出现和消失两种丝滑动画 弹出气泡提示框后延迟2秒自动消失 效果图 错误框 正确 警告 提示 源代码 <!DOCTYPE html> <html lang"en"> <head><meta cha…

PHP场地预约共享茶室棋牌室小程序系统源码

&#x1f375;&#x1f3b2;【聚会新宠】场地预约神器&#xff0c;共享茶室棋牌室小程序大揭秘&#xff01;&#x1f389; &#x1f3e1;【开篇&#xff1a;告别繁琐&#xff0c;聚会新选择】&#x1f3e1; 还在为找不到合适的聚会场地而烦恼吗&#xff1f;想要一个既私密又舒…

JS 原型与原型链图解:彻底搞懂的终极指南

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 在JavaScript中&#xff0c;原型和原型链是非常重要的知识点&#xff0c;只有理解了…

2.2.填充和步幅

我们已经知道&#xff0c;卷积的输出形式取决于输入形式和卷积核的形式。 ​ 此外还有其他因素会影响输出的大小。假设以下情景&#xff1a; 有时&#xff0c;在应用了连续的卷积之后&#xff0c;我们最终得到的输出远小于输入大小。这是由于卷积核的宽度和高度通常大于1所导致…

驱动框架——CMSIS第一部分 RTE驱动框架介绍

一、介绍CMISIS 什么是CMSIS&#xff08;cortex microcontrol software interface standard一种软件标准接口&#xff09;&#xff0c;官网地址&#xff1a;https://arm-software.github.io/CMSIS_6/latest/General/index.html 包含的core、driver、RTOS、dsp、nn等部分&…

Linux系统编程:自定义协议(序列化和反序列化)

1. 协议 在之前我们谈到&#xff0c;协议就是一种"约定"&#xff0c;socket api接口&#xff0c;在读写数据时&#xff0c;都是按照"字符串"的方式来发送接收的&#xff0c;那么我们要传输一些"结构化"数据时怎么办呢&#xff1f;,比如说一个结构…