测试碎碎念(基础篇_2)

news2024/11/20 23:39:52

一、软件测试的基础概念

1.1 需求

在企业中,需求 主要分为 用户需求 和 软件需求~

用户需求:

可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务;用户需求 一般是比较简略的,没有一定限制的(五花八门)~

举个例子:假如现在有一个声控灯的话,那么就可以有多个用户需求:声控灯是熊猫形状的、声控灯是黄金制作的、声控灯的声控范围就是在楼梯这一段距离......

由此可见,用户需求是五花八门的,不可以做为实现参考的依据(技术上、投入成本、收益......),需要进行用户需求的提取和分析才可以~

软件需求:

也叫做功能需求,该需求会详细描述 开发人员必须实现的软件功能~

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


举个例子,解释用户需求和软件需求的不同点:

npy提出了一个需求:就想要喝奶茶(这个是用户需求)~

于是自己就可以取跑去买了,但是需要去和npy去反复的确认:是哪个门店的?是哪款奶茶啊?是热的还是冰的啊?要不要加一些料啊?(这个就是软件需求)~

1.2 测试用例

测试用例 是测试人员执行测试的一组依据,测试人员在执行测试之前 需要编写测试用例,测试用例的好坏 与产品测试质量 具有很大的关联关系~

测试用例 要尽可能的广~

之后,就可以根据测试用例,一个一个的进行测试了~

如果没有测试用例,那么 测试的时候仅仅只能靠着头脑去测、去记,到最后 到底测试过哪些东西,自己也会搞混了~

所以说,测试用例的存在,可以引导进行有条不紊的测试,提高测试的覆盖率,防止出现 "漏测" 的风险~

当然,虽然说 在测试中有一句话叫做 "不可能做到完全的测试",但是 测试人员要尽可能的去避免 "漏测",保证线上不会出现明显的问题~


测试用例的出现主要解决了两个问题:测什么、怎么测~

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

比如说,上面的第一个测试用例,就可以这样写:

可是,如果是针对某一个功能,需要去设计几十个甚至上百个测试用例,岂不是非常的麻烦~

实际上,现在的互联网企业,主要使用的是 "思维导图" 的方式去编写测试用例,如:

1.3 BUG

第一个BUG的由来链接——来自知乎

当且仅当规格说明 是存在的并且正确,程序与规格之间的 不匹配才是错误,即BUG~

当需求规格说明书 没有提到的功能,判断标准以最终用户为准:当程序没有实现 最终用户合理预期的功能要求时,就是BUG~

BUG实例:

比如说,在实现用户登录功能的时候,需求规格说明书 上面明确规定:密码最短输入为6位,最长为15位;但是,实际上如果输入5位,也可以通过的话,那么这就是一个BUG~

比如说,向其他人分享资料,有的时候显示的是一个 默认组件的样式,有的时候显示的具有图片;此时,分享的功能是正常的,但是发给其他人的时候 展示的不好看,此时也可以提BUG的(但是在需求文档中可能不会提到)~

二、开发模型和测试模型

2.1 开发模型

开发模型,可以理解为 开发流程/项目推进流程~

常见的开发模型有:瀑布模型、螺旋模型、增量模型、迭代模型、敏捷模型 等等~

当然,也可以理解为 软件的生命周期(软件从开始 到结束的这一段时间),软件的生命周期可以分为六个阶段:需求分析、计划、设计、编码、测试、运行维护~

下面,来举一个例子更好地理解这六个阶段:

假如现在需要建造一个房子,那么 房子的生命周期是什么?

需求分析阶段:

首先需要明确,为什么要建造房子~

房子是用于商用的还是民用的~

假如需要建造商用房,需要在哪里建造,建造多少层~

建造的投入与收入比例是否过大~

......

计划阶段:

什么时候开始建造房子~

房子什么时候动工,房子什么时候竣工~

大概需要一年的时候来建造,2023年1月1日开始动工,2024年竣工并投入使用~

......

设计阶段:

先出设计图,对房子有一个明确的布局,

如:谁来负责打地基,谁来负责建筑框架,谁来负责砌墙,谁来负责粉刷~

......

编码阶段:

脚踏实地的按照需求和计划一步一步的建造房子~

......

测试阶段:

等到房子交付的日期了,就要进行房子的验收测试,

如:房子有没有漏水,房子有没有偷工减料,房子是否按照规定的样子来建造~

......

运行维护阶段:

房子交房之后,用户也已经住进去了,后期也许会出现一些异常的情况,

如:房子漏水,墙皮掉落~

需要用户自己来进行维护~

通过上述建造房子的例子,就可以更好地理解软件的各个生命周期~

软件生命周期 各阶段需要进行的 部分内容 如下:


如上,软件开发有它自己的整个生命周期,

其实 软件测试也有着它自己的生命周期:它诠释了 测试人员在软件 整个生命周期里面,在各个阶段需要做的事情~

软件测试的生命周期 5个阶段:

需求分析 -> 测试计划 -> 测试设计与开发 -> 执行测试 -> 测试评估

ps:

需求分析:软件测试人员往往是最了解需求的人~

测试计划:测试人员也需要编写 测试计划文档,明确标注了:有多少个测试人员,什么时候开始测试~

测试设计与开发:测试人员需要借助 需求文档 + 技术文档 来编写测试用例~

2.1.1 瀑布模型

瀑布模型

需要注意的是,瀑布模型 不重视测试的,即:在编码及之前的几个阶段,都不涉及到测试的动作(当然,也是包含前面的测试 5个阶段)~

这就意味着,瀑布模型 更看重于前面的几个阶段~

瀑布模型 很容易的可以看出,它是一个线性结构:这就意味着 前一个阶段结束之后,后一个阶段才会开始~

这就意味着,在最终测试的时候,发现的错误 可能不仅仅是 编码阶段的错误,前面阶段 也可能会出现错误~

这就埋下了一个隐患:风险 往往会 延迟 到后期的 测试阶段 才会显露,因而 失去 及早纠正 的机会~

特别是,测试被后置, 就说明需要把足够的时间留给测试,如果最后留给测试的时间有限,那么 测试就可能不充分,最终就可能会把一些问题暴露给用户~

当然,瀑布模型的最大缺陷就在于:

由于瀑布模型是一个线性模型,所以项目需要实现的所有功能 必须要在一个周期里面完成~

而如果是一个大型项目的话,每一个阶段都要经历很久,到最后 用户在很晚之后才可以看到~

但是,我们不可能保证,在这一段时间内,用户的需求会不会发生变化(某一段时间很急需某个需求A,当时没有上线;等已经不需要需求A了,才上线)~

当然,瀑布模型 在软件工程中占有着重要的地位,它是所有其他模型的基础框架,后面的其他模型都是在瀑布模型的基础上不断优化的~

瀑布模型适用场景:需求固定的小型项目(不能很好的迎接需求的变化)~

2.1.2 螺旋模型

螺旋模型

螺旋模型 是在 瀑布模型 的基础上进行优化的,在每个阶段都增加了 风险分析(把那条曲线拉直)~

发现有风险了,消除风险之后,会生成新的原型~

但是,这种模型一定是耗时耗力的,成本大,需要去找专门的风险分析人才~

螺旋模型适用场景:需求不确定,变化的可能性很大的大型项目~

2.1.3 增量模型、迭代模型

ps:计划之类的阶段就没有画出来了

增量模型:使项目进行模块化,每个模块都可以进行独立的开发和上线~

优势:产品可以在较短的时间内尽快的交付给用户去使用~

迭代模型:假如说一个产品有A、B、C三个功能,迭代模型 会先完成这三个功能的基础版本,之后再经历一期又一期的迭代优化,直到这三个功能非常的优秀~

总之,增量模型 和 迭代模型 是通常混为一谈的,但是其实它们是有区别的~

增量模型一定是逐块建造的,可以先开发功能A,也可以先开发功能B、功能C~

迭代模型一定是在基础的版本上进行 更新优化,是精益求精的过程~

2.1.4 敏捷模型

在敏捷模型中,没有强调类似于其他模型中 重流程 的一些东西~

提出了《敏捷宣言》:通过身体力行和帮助他人来揭示更好的软件开发方式,形成了如下价值观:

敏捷宣言

ps:

敏捷模型 强调了 团队内部人员需要尽可能的进行高效的沟通~

强调了 最终的标准就是:可交付的软件;至于 开发软件过程中 写了多少份文档 并不是特别在乎,而在一个周期结束之后,需要给一个结果:或有一个新的功能,或有一个新的产品 等等~

强调了 须把客户的需求 放在第一位,与客户之间需要有一个高效的协作;如:之前客户有需求A,以合同的形式告诉;后来客户有需求B,那就需要去实现需求B了~

强调了 需要时刻响应变化,而不是和前面几个模型一样,一直不变,否则如果出现问题的话,开发的成本就会越来越高了~

即:敏捷宣言的特点是:轻流程、轻文档、重目标、重产出~


2.1.4.1 scrum模型

敏捷开发有很多种方式,其中 scrum模型 是比较流行的一种~

在 scrum模型 里面,需要了解三个重要的角色 和 五个重要的会议~

三个角色

scrum 由 产品经理、项目经理、研发团队 三个角色组成~

  • 产品经理:收集用户需求,转变成软件需求,推动研发团队去进行功能的开发~

  • 项目经理:很多企业是 没有项目经理 这一角色的,此时由 产品经理 承担,其职责是 在合理的周期内,去推进项目可以如期的进行;如 在计划阶段规定了项目什么时候开始,什么时候结束,项目经理就需要检查到了这段时间 计划的有没有完成,如果遇到项目问题 就需要去协调解决问题,召开会议,为研发团队服务;可以简单的理解——项目经理就是催加班、催进度的~

  • 研发团队:由不同技能的人员组成(如 前端、后端、测试人员 等等),通过紧密协同,完成每一次迭代的目标,交付产品~

基本流程

2.2 测试模型

除了敏捷模型之外,其他几个模型都把测试阶段放到了后期,说明并不重视测试~

而在后续的发展中,测试就被重视起来了~

这里就介绍两种测试模型:V模型、W模型~


2.2.1 V模型

V模型

特点:

  • 明确了测试有不同的类型,而且每个类型和前期的开发工作之间有对应关系~

缺陷:

  • 测试后置~

2.2.2 W模型

W模型

特点:

  • 测试从一开始就介入(软件测试贯穿于软件的整个生命周期),有利于尽早地全面的发现问题~

缺陷:

  • 开发和测试虽然是同步的,但是仍然存在这前后的线性关系~

  • 不支持敏捷模型(太重文档了)~

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

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

相关文章

Flink官方例子解析:带窗口的WordCount

1. 简介 本篇介绍的是带窗口的WordCount,使用窗口函数countWindow。 countWindow是一种计数窗口,有固定窗口和滑动窗口两种用法。 1.1 固定窗口 countWindow(windowSize) , windowSize指的是窗口大小。 例如countWindow(5), 说明一个窗口可…

零基础机器学习做游戏辅助第七课--模型的保存与加载

一、保存模型 当我们训练好模型后将它保存下来,这样下次使用时就可以直接加载模型进行工作了。 常见的保存模型有三种: 只保存权重文件:model.save_weights(num_weights) 当我们使用save_weights保存权重文件时,没有指定后缀名,则会保存三个文件在指定目录下

linux 下ARC的中断机制

linux 下ARC的中断机制 一、Idu 中断控制器初始化 Idu 是arc 处理器内部中断控制模块, 类似于arm 内部的gic 中断控制模块 首先,Idu中断控制器在初始化时, 会解析DTS信息中定义了几个idu控制器,每个Idu控制器注册一个struct irq_domain数据…

嵌入式Linux系统开发笔记(十三)

U-Boot烧写验证测试 正点原子专门编写了一个软件来将编译出来的.bin 文件烧写到 SD 卡中,这个软件叫做“imxdownload” 【1】将 imxdownload 拷贝到工程根目录下 【2】给予 imxdownload 可执行权限 我们直接将软件 imxdownload 从 Windows 下复制到 Ubuntu 中以…

【干货】Windows下cmd中cd命令的使用方法

【干货】Windows下cmd中cd命令的使用方法什么是cd命令cd命令的使用打开cmdcd命令的常用方法进入某个盘进入某个目录返回上一级目录返回至当前工作目录下的根目录参考什么是cd命令 此处介绍两个概念: cmd:命令提示符cd:全称change directory…

model.train()与model.val()

一、问题描述 需要将mmpose框架下训练的模型单独保存出来,做后续处理。用torch.save()直接保存模型mmpose_model.pt,然后重新搭建模型,把保存的模型参数加载进去,得到scratch_model.pt使用scratch_model.pt进行推理,与…

基于Jmeter的百万级tps性能测试实践

【CSDN 编者按】如何对系统的承载能力和响应时间做出准确的评估,为资源的合理配置及优化提供依据,性能测试就成了必不可少的测试手段,本文会给读者推荐一款业界占有率最高的一款性能测试工具——Jmeter。 本文作者朱凯是环信测试主管&#x…

TCP实现回显服务器及客户端

目录 前言: Socket API SeverSocket API TCP中的长短连接 TCP实现回显服务器 代码实现(有详细解释) TCP实现回显客户端 代码实现(有详细注释) 小结: 前言: 上篇文章介绍了TCP的特点。由…

195136-58-4,2‘,7‘-Difluorofluorescein,2,7-二氟荧光素

产品描述:2,7-二氟荧光素中Fluorescein (Uranine) 生物应用中的荧光示踪剂,Fluorescein (Uranine) 是一种具有代表性的绿色荧光团,已被广泛用作实用绿色荧光探针的支架。结构式:理论分析:中文名&#xff1a…

1608_PC汇编语言_first例程分析

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 这一次的笔记主要是梳理一个例程以及部分辅助信息。 为什么要学习汇编语言呢?现在的高级语言开发效率高,而且有着不错的效率,是…

Compose之跨平台Activity页面

前言 Compose(Jetpackjb)是可以跨平台的 目前跨平台主流的页面导航方式一般有两种 一种是都在同一个页面内进行页面替换类型的导航,类似于单Activity,多Fragment 另一种是不同的页面在不同的页面载体上,类似多Activity 两种页面导航方式都可以使用,但我比较偏向于使用多Ac…

加密签名算法

序言如果我们要消费的一段字符串没有唯一标识,我们该如何防止重复消费.cuiyaonan2000163.com背景信息加密加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原&…

【虚拟仿真】Unity3D中实现鼠标悬浮模型上显示文字

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 在仿真项目开发中,会遇到让鼠标悬浮模型后显示模型…

《流浪地球2》MOSS出圈,现实中的量子计算机长啥样?

科技云报道原创。 春节档科幻电影《流浪地球2》上映后,影片中被誉为“全场最有价值道具”的智能量子计算机MOSS(代号550W)火了! 如果你看完了片尾彩蛋,会发现MOSS或许是整个流浪地球系列电影中的最大反派&#xff0c…

支持向量机-数学模型

支持向量机(support vector machines, SVM)是一种二分类模型。基本模型是定义在特征空间上的间隔最大的线性分类器;学习策略:间隔最大化;学习算法:求解凸二次规划的最优化算法。 支持向量机分为线性可分支…

自动驾驶感知——激光雷达基本概念|激光雷达点云|激光雷达的标定

文章目录1. 激光雷达基本概念1.1 激光雷达特点1.2 激光雷达测距原理1.2.1 系统组成1.2.2 激光雷达测距原理1.3 常见的激光雷达1.3.1 机械旋转式激光雷达1.3.2 Velodyne HDL-64E1.3.3 固态激光雷达1.3.4 Flash型固态激光雷达1.3.5 相控阵固态激光雷达1.3.6 MEMS型固态激光雷达1.…

NX二开ufun函数UF_MODL_create_surf_from_cloud(使用现有点创建B曲面)

本节主要讲使用现有点创建B曲面的ufun函数UF_MODL_create_surf_from_cloud,这些点可以按任何顺序出现,但是必须有足够的点来定义平面。 先看实例效果图: 1、函数结构 int UF_MODL_create_surf_from_cloud ( int point_cnt&#…

双栏Latex模板插入多个图片的各种排布

目录 问题描述: 问题解决: 1. 插入一个图片 示意图如下: 2.插入2x1两个图片:2x1 示意图如下: 3. 插入1x2两个图片:1x2 示意图如下: 4.插入2x2两个图片:2x2 示意图如下&…

shell脚本set -eu引起的学习笔记

本文将介绍Bash中 set -euxo pipefail 大佬的文章学习膜拜体验,它们可以帮助你写出更容易维护也更安全的脚本。这也是Bash脚本的终极调试手段,希望你以后在自己的脚本中加上这么一行,头顶也能少秃一点 今天打开一个脚本《JetsonNano使能SPI总…

00后真的是躺平的一代吗?已经被公司新来的00后卷哭了

2023年开年了,公司也来了许多新面孔,其中居然有一个是00年的,虽然也给公司带来了一些新的血液,但也让我意识到,自己年级确实不小了。这小老弟是去年毕业的,在某软件公司干了半年,现在跳槽到我们…