软件测试之基础概念学习篇(需求 + 测试用例 + 开发模型 + 测试模型 + BUG)

news/2024/5/20 20:31:21/文章来源:https://blog.csdn.net/m0_56975154/article/details/130324290

文章目录

  • 1. 什么是软件测试
  • 2. 软件测试和软件开发的区别
  • 3. 软件测试和软件调试的区别
  • 4. 什么是需求
    • 1)以需求为依据设计测试用例
  • 5. 测试用例是什么
  • 6. 什么是 BUG(软件错误)
  • 7. 五个开发模型
    • 1)瀑布模型
    • 2)螺旋模型
    • 3)迭代模型、增量模型
    • 4)敏捷开发模型
  • 8. 测试模型
    • 1)V 模型
    • 2)W 模型
  • 9. 软件测试的生命周期(软件测试的流程)
  • 10. 如何描述一个 BUG
  • 11. BUG 的级别
    • 1)崩溃
    • 2)严重
    • 3)一般
    • 4)建议(次要)
  • 12. BUG 的状态转移图

1. 什么是软件测试

软件测试就是验证软件功能是否满足用户需求

在具体业务中表现为,最终交付的产品是否和用户的需求一致,如果不一致,则需要找出不一致的点

2. 软件测试和软件开发的区别

  • 难易程度方面

    开发对于知识的广度小,专业度高,测试的广度大,专业度低

  • 技能要求方面

    测试比开发要求更广泛,测试人员需要具备一定的业务能力、沟通能力、对测试工具的收敛使用,是需要有一定的编程能力

3. 软件测试和软件调试的区别

  • 目的

    软件测试的目的是验证软件是否满足用户的需求

    软件调试的目的是验证软件是否实现了开发人员想让它实现的功能

  • 角色

    软件测试是由开发人员和测试人员共同完成的

    软件调试是由开发人员完成的

  • 阶段

    软件测试贯穿了整个软件开发的生命周期

    软件调试只是在开发阶段

软件开发的生命周期

需求分析 -> 计划 -> 设计 -> 开发 -> 测试 -> 运维

4. 什么是需求

需求就是实现用户的期望或者满足文档(合同、标准、规范)所需要的条件或者权限

需求包括软件需求和用户需求

用户需求就是用户想要软件实现的功能,用户需求比较粗略直接实现比较困难

软件需求是从用户需求转化而来的,是对用户需求的细化和具体实现

软件需求是测试人员进行测试工作的基本依据

1)以需求为依据设计测试用例

首先验证需求,保证需求正确可实现,然后细化需求,从需求中提炼出一个个测试项

以 “ 用户登录 ” 为例,具体过程如下:

请添加图片描述

5. 测试用例是什么

测试用例是为了实施测试向被测试系统提供的一组集合,包含:测试环境、测试步骤、测试数据、预期结果等因素

测试用例告诉我们该测什么,怎么测

设计一条网易邮箱登录的测试用例:

请添加图片描述

测试环境: Chrome PC端 Windows操作系统

测试数据: 用户名:123456 密码:h123456789

测试步骤:

  1. 在 Chrome 浏览器打开网易邮箱 URL
  2. 输入用户名和密码
  3. 点击登录

预期结果: (操作完测试步骤后的结果)登陆成功

6. 什么是 BUG(软件错误)

  • 当且仅当规格说明书(软件需求)存在且合理,程序和软件需求之间不匹配的情况就是 BUG
  • 当软件需求不存在,用户需求存在且合理,软件功能和用户需求不符合,就说明是软件错误

软件测试在需求分析阶段时需要验证需求的合理性和正确性

7. 五个开发模型

软件开发的生命周期

需求分析 -> 计划 -> 设计 -> 开发 -> 测试 -> 运维

1)瀑布模型

瀑布模型是严格按照软件开发的生命周期进行的分阶段的开发模型

请添加图片描述

优点: 强调开发的阶段性,强调早期的需求分析和后期的测试

缺点: 测试在编码后才开始介入,导致前期的问题后期才发现,可能会失去错误补救的机会

2)螺旋模型

一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模型,螺旋模型就是典型的 渐进式开发模型,螺旋模型适用于 规模庞大复杂度高风险大 的项目

请添加图片描述

优点: 强调严格的风险管理,强调各开发阶段的质量

缺点: 引入严格的风险管理,需要更多人员、时间和金钱的投入

3)迭代模型、增量模型

将一个系统分为四个模块,A、B、C、D,在两周内将四个模块开发完成

迭代模型:

第一周先开发 A、B、C、D四个模块的基础功能

第二周再在第一周的基础之上完成其他的功能

增量模型:

第一周开发 A、B 两个模块的功能

第二周开发 C、D 两个模块的功能

增量模型和迭代模型抗风险能力都很强,迭代模型相比较增量模型还要更强些

4)敏捷开发模型

敏捷开发是一种可以应对快速变化的用户需求的一种软件开发模式

特点:

轻文档、轻流程、重目标、重产出

拥抱变化,客户可以在整个流程中对需求进行更改

周期短,团队人员少但精干

敏捷宣言:

个体与交互重于过程和工具

可用的软件重于完备的文档

客户协作重于合同谈判

响应变化重于遵循计划

Scrum 中的角色

  • PO(product owner)产品经理,负责整理用户需求,形成 userstory
  • SM(scrum master)项目经理,管理整个团队,负责敏捷流程的顺利实施,以及各种会议的顺利召开
  • ST(scrum team)研发团队,负责整个项目的研发,由各种技能的工程师组成

Scrum 流程

请添加图片描述

  • 发布计划会议: 产品经理收集需求相乘 userstory,讲解 userstory,决定本次迭代需要开发的 userstory 形成 sprint backlog
  • 迭代计划会议: 分析 userstory,把 userstory 分解成一个个的任务,分配给开发人员,制定开发计划
  • 每日会议: 讲解昨天干了什么,遇到的问题、今天的计划
  • 产品演示会议: 给客户演示研发的成果,产品经理整理和手机演示后客户的意见形成新的 userstory,放到下一次迭代中
  • 回顾计划会议: 回顾整个迭代过程,把不足的地方找出,在下一次迭代过程中改进,优化迭代流程

8. 测试模型

1)V 模型

特点: 明确标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程各阶段的对应关系

缺点: 测试在编码之后才被引入,会失去对错误及时纠正的机会

请添加图片描述

2)W 模型

特点:

  • 测试贯穿整个软件开发的生命周期,对需求、代码等都会进行测试测试
  • 测试更早的介入,可以尽早发现错误并解决
  • 测试与开发独立并行

缺点:

  • 测试和开发保持一种线性的前后关系,上一阶段完全结束才可开始下一阶段工作
  • 无法支持敏捷开发模型

请添加图片描述

9. 软件测试的生命周期(软件测试的流程)

生命周期: 需求分析 -> 测试计划 -> 测试设计、测试开发 -> 测试执行 -> 测试报告

  1. 需求分析

    测试人员对需求进行分析,验证需求的合理性和正确性,细化需求,根据需求提炼测试点

  2. 测试计划

    确定测试的范围、目的、人员名单、测试工具以及测试环境

  3. 测试设计、测试开发

    测试人员根据提炼的测试点编写测试用例

  4. 测试执行

    在开发人员提交代码之后,测试人员根据测试用例和计划执行测试,记录测试过程中发现的 BUG 并提交

  5. 测试报告

    对本次测试进行分析和总结,记录在本次测试中使用了哪些测试用例,发现了哪些 BUG,修改了多少,剩余的 BUG 有哪些比较好的解决方案

10. 如何描述一个 BUG

一个合格的 BUG 描述包括以下几部分:

  1. 发现 BUG 的版本

    开发人员提交代码时代码的版本号

  2. 测试环境

    在不同的测试环境下问题出现的情况可能不一样

  3. 测试步骤

    告诉开发人员测试数据和执行测试时的具体步骤,以便于开发人员复现 BUG

  4. 实际结果

  5. 预期结果

  6. BUG 产生时的日志、错误截图等

11. BUG 的级别

1)崩溃

系统崩溃、死机、死循环,黑屏、闪退等导致系统不能运行的问题

如果系统已经发布,用户在使用过程中出现崩溃级别 BUG 怎么办?

  • 可以采用停服维修的方式来对 BUG 进行维护,但是这样会影响用户的体验和产品的利润
  • 最高效且损失最低的方法是,回到上一个稳定可用的历史版本

2)严重

系统可以用,但是不稳定,继续使用会产生严重的错误,如数据库插入用户数据时出错,用户数据的安全性问题等

3)一般

系统可以正常使用,但是一些次要的功能没有实现,如系统的提示语不完善,删除时没有确认弹窗等

4)建议(次要)

一些建议性的问题或者可以对系统进一步优化的方案,比如界面排版不符合用户习惯等

12. BUG 的状态转移图

请添加图片描述

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

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

相关文章

PM866 3BSE050200R1高压变频器的四种控制方法

PM866 3BSE050200R1高压变频器的四种控制方法 高压变频器装置指驱动输入电源为6,000V或10KV的电机装置,高压变频器一般主要有下列几种方案选择: 一、直接高压控制(高成本) 目前以采用美国罗宾康类似的无谐波变频技术&a…

(二十一)查找算法-插值查找

1 基本介绍 1.1 插值查找 插值查找算法又称插值搜索算法,是在二分查找算法的基础上改进得到的一种查找算法。 插值查找算法只适用于有序序列,换句话说,它只能在升序序列或者降序序列中查找目标元素。作为“改进版”的二分查找算法&#xf…

MyBatis-Plus多数据源dynamic-datasource解决多线程情境下数据源切换失效问题

前言:项目中使用MyBatis-Plus多数据源dynamic-datasource,完成多数据源的切换;但是在并发场景下,我们会发现线程会一直访问默认数据源(配置的Master数据),并没有访问我们在上一步切换后的数据源…

参展第六届中国城市轨道交通智慧运维大会 | 图扑软件

2022(第六届)中国城市轨道交通智慧运维大会在西安顺利举行。此次大会由现代轨道交通网联合中国机械工程学会设备智能运维分会主办,西安市轨道交通集团有限公司运营分公司、轨道交通工程信息化国家重点实验室(中铁一院)协办。来自行业学会、地…

STM32的GPIO重映射配置(解除下载端口的重映射)

在设计一个项目的时候,因为用的是STMF103C8T6,引脚较少,所以把可以用的GPIO都需要用上,但是由于下载的引脚在出生时,被厂家已经配置好了,所以我们得利用软件配置一下,使引脚变成正常的GPIO。 手…

R语言风险评分绘图

生信分析中&#xff0c;经常要建立分险模型&#xff0c;对每个患者进行分险评分&#xff0c;根据这些评分对患者进行分组&#xff0c;不同分组的预后差异很大。 ### 1. 构造数据 risk_df<- data.frame(samplespaste0("S",1:100),scorerunif(100,1,10),surv_time …

Vue监视数据的学习笔记

Vue监测数据变化的更新 <div id"monitor"><h2>人员列表</h2><button click"updateMei">更新马冬梅信息</button><ul><li v-for"(p,index) of persons" :key"index">{{p.name}}--{{p.age}}…

Selenium安装及环境配置

目录 一、Selenium 简介1. 组件2. 特点 二、安装Selenium✨三、下载对应版本的Chromedriver1.查看Chrome的版本号2.下载驱动 chromedriver和配置3.解压到本地4.复制文件放入python安装目录的Scripts文件夹中5.Selenium启动Chrome 一、Selenium 简介 1. 组件 Selenium IDE&…

QinQ技术与Portal技术

QinQ 802.1Q-in-802.1Q&#xff0c;是一种扩展VLAN标签技术。在城域网中&#xff0c;需要大量的VLAN来隔离区分不同的用户&#xff0c;但是原有的802.1Q只有12个比特&#xff0c;仅能标识4096个VLANQinQ即在802.1Q的基础上&#xff0c;再增加一层外层标签。使得可以标识4096*40…

项目结束倒数2

今天,解决了,多个点的最短路问题 用的dfs,配上了floyed计算出的广源距离 难点是要记录路线,dfs记录路线就很烦 但是好在结束了,经过无数的测试,确保没啥问题(应该把) 来看看我的代码 void dfs(int b[], int x, int* sum, int last, int sums, int a[], BFS& s, Floyd_A…

微信小程序uniapp基于Android的大学生社交论坛交流app系统

实现一个基于Android的社交APP小程序,一共3个身份&#xff0c;包括老师、学生和管理员&#xff0c;其中老师和学生在手机端注册登录&#xff0c;管理员在web端后台登录。学生和老师登录后可以查询通知新闻信息&#xff0c;收藏信息&#xff0c;查看好友推荐&#xff0c;论坛发帖…

antDesignPro6项目:供应链系统—实战问题解决汇总

系统使用的技术&#xff1a;antDesignPro6 Umi4 antDesign antDesignProComponents 其他技术 1、如何设置ModalForm组件&#xff0c;销毁时&#xff0c;自动重置表单&#xff1f; modalProps{{ destroyOnClose: true }} // 重置表单 答&#xff1a;给ModalForm组件添加mo…

React Native 9个好用的开发工具盘点

近几年在大前端的开发领域&#xff0c;选择跨端方案的公司和部门越来越多&#xff0c;曾一何时市面有不下10种跨端框架&#xff0c;但随着“生物进化论”的推动&#xff0c;目前市面上仅剩两种主流方案&#xff0c;就是经常听到的 React Native 和 Flutter。去年终于引来了 Rea…

【Docker01】入门

目录 概述 Docker平台 Docker可以做什么 快速、一致地交付应用程序 响应式部署和扩展 在同一硬件上运行更多工作负载 Docker架构 Docker守护程序&#xff08;The Docker daemon&#xff09; Docker客户端&#xff08;The Docker client&#xff09; Docker桌面&#x…

Redis框架与SpringBoot的整合及详细学习汇总

目录 springBoot整合Redis Redis 的优势 Redis安装 Redis数据类型 springboot操作Redis springboot 配置redis RedisTemplate及其相关方法 springBoot实现上传下载 RedisTemplate及其相关方法 springBoot实现上传下载 springBoot CORS&#xff08;跨域资源共享&#…

使用opencv进行场景识别

opencv场景识别 文章目录 opencv场景识别一、需求1、现状2、设想 二、模型使用1、opencv dnn支持的功能2、ANN_MLP相关知识3、图像分类模型训练学习4、目标检测模型5、opencv调用darknet物体识别模型 三、模型训练1、现状2、步骤-模型编译3、步骤-模型训练 一、需求 1、现状 …

按照条件向Spring容器中注册bean

1.Conditional注解概述 Conditional注解可以按照一定的条件进行判断&#xff0c;满足条件向容器中注册bean&#xff0c;不满足条件就不向容器中注册bean。 package org.springframework.context.annotation;import java.lang.annotation.Documented; import java.lang.annota…

9. 树的进阶

9. 树的进阶 ​ 之前我们学习过二叉查找树&#xff0c;发现它的查询效率比单纯的链表和数组的查询效率要高很多&#xff0c;大部分情况下&#xff0c;确实是这样的&#xff0c;但不幸的是&#xff0c;在最坏情况下&#xff0c;二叉查找树的性能还是很糟糕。 例如我们依次往二叉…

RelativeLayout相对布局

一、官方地址&#xff1a; https://developer.android.google.cn/reference/kotlin/android/widget/RelativeLayout?hlen 二、概述 相对布局&#xff08;RelativeLayout&#xff09;是一种根据父容器和兄弟控件作为参照来确定控件位置的布局方式 三、基本格式 <RelativeLay…

Jenkins配置邮箱发送报告

本文以qq邮箱为例 1.下载Email Extension Plugin插件 2.在Manage Jenkins--System&#xff0c;Jenkins Location下配置理员邮件 Extended E-mail Notification 下配置Jenkins SMTP server&#xff08;邮箱服务&#xff09;、SMTP Port&#xff08;邮箱端口&#xff09;、Cred…