【软件测试学习day1】软件测试概念

前言

本篇学习,测试相关基础概念、常见的开发模型测和测试模型,搞懂4个问题:

  1. 什么是需求
  2. 什么是 bug
  3. 什么是测试用例
  4. 开发模型和测试模型

目录

1. 什么是需求

1.1 为什么要有需求

1.2 测试人员眼里的需求

1.3 如何深入了解需求

2. 测试用例

2.1 什么是测试用例

2.2 为什么要有测试用例

2.3 练习

3. 认识 BUG

4. 软件生命周期

5. 开发模型

5.1 瀑布模型

5.2 螺旋模型

5.3 增量模型与迭代模型

5.3.1 增量模型

5.3.2 迭代模型

5.4 敏捷模型

6. 测试模型

6.1  V 模型

6.2  W 模型(双 V 模型)


1. 什么是需求

用户需求: 可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成 的任务。该需求一般比较简略。
软件需求: 或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。
用户需求,简单的来说就是客户的需求的,如客户需要一个网站,一个网战必定有注册功能。软件需求,当某部门领导知道这个需求后,会向程序猿提出注册功能需要实现的细节,如账号、密码、确认密码的实现等。此外,通俗的理解你我皆为用户,例如一个购物平台我们需要通过筛选来查找某个物品这就是一个用户需求,而开发者根据筛选的这个功能进行编码这就是一个软件需求。
因此,我们可以粗犷的理解为用户需求为一句话(例:实现某个功能),软件需求是一个文档(详细的描述用户需求如何实现),日常工作中我们通常是用软件需求进行开发/测试。

1.1 为什么要有需求

当程序猿开发一产品或者测试一个产品时,需要拿着软件需求来进行开发和测试。


1.2 测试人员眼里的需求

对一个大的需求进行子拆分为一些小需求以解决原需求。如一个登录功能:


1.3 如何深入了解需求

开一个需求评审会议,内容大概有:为什么做这样一个需求、这个需求能带来多少收益、软件需要做成什么样子。或查询文档(需求文档、技术文档),亦或者找产品经理了解软件功能、找开发了解软件的实现。因此,如何深入了解需求有三点:

  1. 参加需求评审会议
  2. 查询文档
  3. 沟通

2. 测试用例

2.1 什么是测试用例

测试用例是一组集合,如:测试环境、测试数据、预期结果、操作步骤等。粗犷的理解为:

  • 测试环境:力扣刷题时会给我们提供一个测试平台
  • 测试数据:字节输入测试数据 70%
  • 操作步骤:写代码然后提交
  • 预期结果:100% 通过

例如,一个登录功能,此时:

  • 测试环境:windows 系统 + chrome 浏览器 + idea 编译器
  • 测试数据:账号 + 密码
  • 测试步骤:输入账号密码点击登录
  • 测试结果:登录成功

2.2 为什么要有测试用例

测试用例能够提高测试人员的工作效率,降低测试人员工作的重复性。如一个测试登录功能,同一个功能多个人去测,当有了测试用例后,假设有 100 个用例,几个人分别测试这 100 个用例。这样即可以提高工作效率。

测试用例是建立自动化的基础,自动化就是使用代码来实现测试人员解放双手,用代码来代替测试人员执行用例。


2.3 练习

一个练习题:设计手机打电话这个功能的测试用例。

此时,大家脑海里肯定有许多想法如:手机号是否为正确格式,测试网络是否畅通,手机是否有充足话费等等。这样盲目列出让人有一种没有条例毫无思路的感觉,因此可以列出一个集合,如下图所示:


3. 认识 BUG

史上的第一只 Bug ,真的是因为一只飞蛾意外走入一电脑而引致故障,因此 Bug 从原意为臭虫引申为程序错误。在软件测试概念中:

  • 当规格说明书存在且正确时,程序与规则之间不匹配则认为是一个错误(bug)
  • 当规格说明书没有提到某些功能,程序没有实现最终用户心里需求时则认为是一个软件错误。

以上 bug 容易理解,软件错误可理解为:假设规格说明书中没有明确密码隐藏显示(日常中会默认隐藏显示),用户在登录时发现自己密码容易被旁人看到,因此向甲方提出诉求,而这就是一个软件错误。


4. 软件生命周期

简单理解为:需求分析、计划、设计、编码、测试、运行维护。详细理解:

  • 需求分析:分析需求是否合理,需求是否完整。例如,一个登陆页面,光有登录没有注册,这就是一个不合理、不完整。
  • 计划:谁开发、谁测试、开发和测试的周期。
  • 编码:前后端程序员根据需求开始编写代码。
  • 测试:测试人员根据开发者编写的代码进行测试,会制定一个测试报告,把测试报告则给上级,上级觉得合适则上线。
  • 运行维护:如果线上有问题,测试人员需要协助开发定位问题、解决问题。

测试报告大致为:


5. 开发模型

5.1 瀑布模型

瀑布模型(Waterfall Model)是一种经典的软件开发模型,将项目划分为若干个严格按顺序执行的阶段,每个阶段完成后才能进入下一个阶段,形如瀑布流水,故得名“瀑布模型”。常见流程为下图:

  • 需求分析:需求文档,分析需求是否合理,需求是否完整。
  • 计划:什么时候开始,什么时候结束
  • 设计:技术文档(数据库、实现功能等)、UI视觉稿(简单理解为精美的页面)
  • 编码:前后端程序员编写代码
  • 测试:执行测试用例,提交 bug,验收等。

特点:它是一种线性的路程。

优点:阶段清晰,易于管理;文档驱动,便于沟通;适合需求稳定的项目。

缺点:缺乏灵活性(进入下个阶段,很难回头修改);风险后置;用户参与度低;不适合需求频繁改变的项目。


5.2 螺旋模型

螺旋模型(Spiral Model)是一种结合了瀑布模型和快速原型模型特点的软件开发模型,核心在于通过迭代式开发风险驱动的方式,逐步推进项目,降低开发风险,特别适用于大型、复杂且高风险的系统开发项目。常见流程如下:

  • 制定计划:确定项目目标、约束条件、备选方案;制定迭代计划,明确资源需求和时间安排。
  • 风险分析:识别潜在风险(如技术风险、需求风险、管理风险等);评估风险影响,制定应对策略。
  • 实施工程:根据计划进行系统设计、编码、测试等开发活动;构建原型或增量版本,验证关键功能。
  • 客户评估:向客户展示迭代成果,收集反馈;根据反馈调整后续迭代计划。

优点:降低风险,每个阶段都会进行风险分析,避免一些线上问题发生

缺点:管理复杂度高、成本较高、依赖客户参与。

适用项目:大型项目、风险较高项目、需求不明确或需求易变项目。


5.3 增量模型与迭代模型

5.3.1 增量模型

定义:

  • 逐步交付:将系统划分为多个独立的“增量”(模块或功能),每个增量独立开发、测试并交付用户。
  • 线性扩展:每个增量在上一版本基础上扩展功能,逐步完善系统。

特点:

  • 阶段性交互:用户可以提前获得某些功能
  • 并行开发:不同的增量可以由不同的程序猿开发
  • 需求变化灵活:后增量的需求可在开发前调整,适应变化。

5.3.2 迭代模型

定义:

  • 重复开发周期:将开发过程划分为多个“迭代”,每个迭代包含需求分析、设计、编码、测试等完整阶段。
  • 逐渐细化:通过多次迭代逐步完善系统,需求和设计在迭代中不断调整。

特点:

  • 循环迭代:每个迭代产出可运行的软件版本,但功能可能不完整。
  • 分线驱动:早期迭代优先解决高风险问题(如技术验证)。
  • 用户反馈驱动:基于用户反馈调整后续迭代内容。

假设有一个网站,包含注册、登录、修改个人信息等功能,增量和迭代模型分别对应如下操作:

增量:注册功能完成 -> 登录功能完成 -> 修改个人信息

迭代:注册功能开发一部分 -> 登录功能开发一部分 -> 修改个人信息开发一部分


5.4 敏捷模型

某大佬提出的敏捷宣言:
个体与交互重于过程和工具 
可用的软件重于完备的文档 
客户协作重于合同谈判
响应变化重于遵循计划
在每对比对中,后者并非全无价值,但我们更看重前者
因此可以理解为:
  1. 以人为核心
    强调团队成员的协作、沟通和创造力,而非过度依赖流程和工具。
  2. 迭代与增量开发
    将项目分解为多个短周期的迭代(通常为2-4周),每个迭代产生可用的软件增量。
  3. 快速响应变化
    通过频繁的迭代和反馈,快速适应需求变化,减少项目风险。
  4. 客户协作
    客户作为团队的一部分,参与需求定义、验收测试和反馈,确保产品符合实际需求。
  5. 持续交付价值
    每个迭代结束时交付可用的软件,使客户尽早获得价值

常见的敏捷测试有 Scrum ,它用于管理复杂产品的开发、交付和持续支持。它通过短周期的迭代(称为 Sprint)和持续反馈,帮助团队高效协作、快速响应变化,并持续改进产品。

  • 特点:基于短周期的迭代(Sprint),强调团队自组织和持续改进。
  • 角色:产品负责人(Product Owner)、Scrum Master、开发团队。
  • 适用场景:需求不明确或频繁变化的项目,如互联网产品开发。

大概流程为:

(1)项目经理收集用户需求,对需求进行优先级的划分、计划项目开始与结束时间。

(2)每日站会,汇报昨日工作完成状况、遇到问题,今日计划等。

(3)演示,给不同的人进行演示。

(4)总结,总结上述过程中发生的问题,避免今后遇到。


6. 测试模型

6.1  V 模型

  1. 用户需求:PM(产品经理)将用户需求进行收集形成软件需求 
  2. 需求分析和系统设计:验证需求是否正确,确定语言,确定框架 
  3. 概要设计:项目的一个结构 
  4. 详细设计:每个结构对应的表名、接口等 
  5. 编码:编写代码
  6. 单元测试:测试每个方法/函数功能是否正确实现 
  7. 集成测试:将众多方法/函数集中在一起进行测试
  8. 系统测试:测试模块与模块之间没有影响
  9. 验收测试:产品经理,运营进行验收

特点:左边是开发,右边是测试,分工明确类似于瀑布模式。

优点:测试被划分为许多类型。

缺点:测试人员介入太晚,导致问题发现较晚。


6.2  W 模型(双 V 模型)

特点:开发一个 V,测试一个 V。

优点:测试人员尽早的进入了测试。

缺点:测试人员和开发人员一定程度上还是串行的,不能拥抱变化,不适于敏捷模型。

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

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

相关文章

Flutter常用组件实践

Flutter常用组件实践 1、MaterialApp 和 Center(组件居中)2、Scaffold3、Container(容器)4、BoxDecoration(装饰器)5、Column(纵向布局)及Icon(图标)6、Column/Row(横向/横向布局)+CloseButton/BackButton/IconButton(简单按钮)7、Expanded和Flexible8、Stack和Po…

刘火良FreeRTOS内核实现与应用学习之7——任务延时列表

在《刘火良FreeRTOS内核实现与应用学习之6——多优先级》的基础上:关键是添加了全局变量:xNextTaskUnblockTime ,与延时列表(xDelayedTaskList1、xDelayedTaskList2)来高效率的实现延时。 以前需要在扫描就绪列表中所…

图像预处理-插值方法

一.插值方法 当我们对图像进行缩放或旋转等操作时,需要在新的像素位置上计算出对应的像素值。 而插值算法的作用就是根据已知的像素值来推测未知位置的像素值。 1.1 最近邻插值 CV2.INTER_NEAREST 其为 warpAffine() 函数的参数 flags 的其一,表示最近…

智能配电保护:公共建筑安全的新 “防火墙”

安科瑞刘鸿鹏 摘要 随着城市建筑体量的不断增长和电气设备的广泛使用,现代建筑大楼的用电安全问题日益突出。传统配电方式面临监测盲区多、响应滞后、火灾隐患难发现等问题。为提升建筑电气系统的安全性和智能化水平,智慧用电系统应运而生。本文结合安…

如何解决DDoS攻击问题 ?—专业解决方案深度分析

本文深入解析DDoS攻击面临的挑战与解决策略,提供了一系列防御技术和实践建议,帮助企业加强其网络安全架构,有效防御DDoS攻击。从攻击的识别、防范措施到应急响应,为网络安全工作者提供了详细的操作指引。 DDoS攻击概览&#xff1a…

构建灵活的接口抽象层:支持多种后端数据存取的实战指南

构建灵活的接口抽象层:支持多种后端数据存取的实战指南 引言 在现代软件开发中,数据存取成为业务逻辑的核心组成部分。然而,由于后端数据存储方式的多样性(如关系型数据库、NoSQL数据库和文件存储),如何设计一套能够适配多种后端数据存取的接口抽象层,成为技术团队关注…

OpenCV 图形API(23)图像和通道合成

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 1.算法描述 在OpenCV的G-API模块中,图像和通道合成(composition)函数允许用户对图像进行复杂的操作,如合并…

帝国cms导航淘客新闻下载多功能网站源码 二次元风格自适应附教程

一、本模板使用帝国cms7.5 utf8版本,二次元导航新闻下载工具淘客自适应响应式帝国cms模板。 1、网站后台有3个系统模型,新闻系统模型,下载系统模型,导航系统模型,商城系统模型,可以根据自己的需求不同&…

本地部署大模型(ollama模式)

分享记录一下本地部署大模型步骤。 大模型应用部署可以选择 ollama 或者 LM Studio。本文介绍ollama本地部署 ollama官网为:https://ollama.com/ 进入官网,下载ollama。 ollama是一个模型管理工具和平台,它提供了很多国内外常见的模型&…

C# virtual 和 abstract 详解

简介 在 C# 中,virtual 和 abstract 关键字都用于面向对象编程中的继承和多态,它们主要用于方法、属性和事件的定义,但在用法上存在一些重要的区别。 virtual 关键字 virtual 表示可重写的方法,但可以提供默认实现,…

自动驾驶的数据集以及yolov8和yolop

项目背景 网络全部是分割了没有检测。 自动驾驶的车道线和可行驶区域在数据集中的表示 自动驾驶系统中的车道线和可行驶区域的表示方式主要有以下几种: 基于几何模型:使用几何模型来描述车道线和可行驶区域的形状和位置,例如直线、曲线、多…

Oracle DROP、TRUNCATE 和 DELETE 原理

在 Oracle 11g 中,DROP、TRUNCATE 和 DELETE 是三种不同的数据清理操作,它们的底层原理和适用场景有显著差异 1. DELETE 的原理 类型:DML(数据操作语言) 功能:逐行删除表中符合条件的数据,保留…

PCIe 5.0光学SSD原型问世!

近日,Kioxia Corporation(铠侠)、AIO Core Co., Ltd. 和 Kyocera Corporation(京瓷)联合宣布成功开发了一款支持 PCIe 5.0 接口的光学 SSD 原型。该技术旨在通过光接口替换传统的电接口,从而显著增加计算设…

SQL 查询中涉及的表及其作用说明

SQL 查询中涉及的表及其作用说明: 涉及的数据库表 表名别名/用途关联关系dbo.s_orderSO(主表)存储订单主信息(订单号、日期、客户等)dbo.s_orderdetailSoD(订单明细)通过 billid SO.billid 关…

C++学习之金融类安全传输平台项目git

目录 1.知识点概述 2.版本控制工具作用 3.git和SVN 4.git介绍 5.git安装 6.工作区 暂存区 版本库概念 7.本地文件添加到暂存区和提交到版本库 8.文件的修改和还原 9.查看提交的历史版本信息 10.版本差异比较 11.删除文件 12.本地版本管理设置忽略目录 13.远程git仓…

【HCIP】GRE VPN实验笔记

一、实验拓扑 二、实验要求 1、按照图示配置IP地址 2、在R1和R3上配置默认路由使公网区域互通 3、在R1和R3上配置GRE VPN,使两端私网能够互相访问,Tunnel口IP地址如图 4、在R1和R3上配置RIPv2或者ospf或者静态,来传递两端私网路由 三、实…

大模型——Llama Stack快速入门 部署构建AI大模型指南

Llama Stack快速入门 部署构建AI大模型指南 介绍 Llama Stack 是一组标准化和有主见的接口,用于如何构建规范的工具链组件(微调、合成数据生成)和代理应用程序。我们希望这些接口能够在整个生态系统中得到采用,这将有助于更轻松地实现互操作性。 Llama Stack 定义并标准化…

ALOPS智能化运维管理平台

AIOps(Artificial Intelligence for IT Operations)即智能运维,是将人工智能技术应用于 IT 运维管理领域,以实现自动化、智能化的运维决策和管理。以下是关于 AIOps 的详细介绍: 核心能力 数据收集与整合&#xff1a…

C语言超详细指针知识(二)

在上一篇有关指针的博客中,我们介绍了指针的基础知识,如:内存与地址,解引用操作符,野指针等,今天我们将更加深入的学习指针的其他知识。 1.指针的使用和传址调用 1.1strlen的模拟实现 库函数strlen的功能是…

一种替代DOORS在WORD中进行需求管理的方法 (二)

一、前景 参考: 一种替代DOORS在WORD中进行需求管理的方法(基于WORD插件的应用)_doors aspice-CSDN博客 二、界面和资源 WORD2013/WORD2016 插件 【已使用该工具通过第三方功能安全产品认证】: 1、 核心功能 1、需求编号和跟…