测试——基本概念
概念
测试和调试有以下几点区别:
- 测试是测试人员进行的工作,调试是开发人员
- 调试是发现并解决问题,测试只是发现问题
- 测试贯穿于整个项目的生命周期,而调试主要在编码阶段
测试人员一般有如下的工作:
需求分析,设计测试计划,测试用例,执行测试,撰写测试报告
需求
一般分为下面两种
- 用户需求:也就是甲方要求需要完成的任务
- 软件需求:必须要实现的软件功能
测试用例
测试用例是为了实施测试而向被测试的系统提供的一组集合
其中包括:
- 测试环境(软件加硬件环境)
- 操作步骤
- 测试数据
- 结果预期
例如,写一个关于登录博客系统的测试用例

bug
bug是当规格说明是正确的时,程序与规格说明之间不匹配
或者,程序没有实现用户合理预期的功能要求
开发流程
一个软件的开发分为下面几步:
- 需求分析:好比建房子前需要对工地,技术进行考量,设计软件也需要对用户的需求量和技术能否达标,投入和收益的占比进行分析
- 计划:好比建房子需要计划什么时候开始建房,停工,软件也需要计划好开发所需要的时间
- 设计:好比建房子需要设计楼间距,格局,设计软件需要将需求分解成一个个框架和接口,并且规定实现所采用的技术
- 编码:好比开始按照计划建房子的过程,也就是软件的开发人员开始按照技术文档和需求文档编写代码的过程
- 测试:好比验收房子是否达到标准,是否需要返工,也就是测试人员按照测试用例对软件进行测试
- 运行维护:也就是住房人需要对房子漏水等问题进行后续的处理,软件上线后也需要进行修复性维护,对功能进行完善性修复,对bug进行预防性维护
开发模型
软件的开发有多种模型,下面一一进行介绍
瀑布模型

即按照上面的软件开发流程进行开发,每个阶段只进行一次,如果出现了错误就返回上一个状态
使用场景:
- 需求固定的小项目
缺点: - 前面阶段的风险,可能会遗留到最后的阶段
- 周期太长,导致需求过时
- 测试不充分会将缺陷暴露给用户
螺旋模型

在每个开发流程中加上风险分析和原型
缺点:
- 项目中的风险和风险管理人员的水平有直接关系
- 需要投入的人力,时间,资金更多
使用场景:
规模庞大,复杂,风险大的开发场景
迭代模型

如果项目中有a,b,c,d,e五个功能,迭代模型会先把这些功能的基础版本开发出来,然后在对基础功能进行不断的更新完善
增量模型

如果项目中有a,b,c,d,e五个功能,会先开发a,b,c功能,然后再开发d,e功能,也就是一个一个功能进行开发
敏捷模型
个体与交互重于过程和工具
可用的软件重于完备的文档
客户协作重于合同谈判
响应变化重于遵循计划
在每对比对中,后者并非全无价值,但我们更看重前者
简单来说,敏捷模型就是对流程,文档没有那么重视,而是注重产出的软件
scrum模型
三个角色:
- 产品经理
- 项目经理
- 研发团队
五个重要会议:
- 发布计划会议:确定要完成的需求
- 迭代计划会议:确定责任人与相关任务
- 每日会议:了解当前项目进度
- 演示会议:产出用户需求
- 回顾会议:总结当前迭代的经验与不足
其中,整个开发模型就是,先从整个需求池中取出需求,然后发布计划会议,迭代计划会议,每日会议,演示会议,然后再从需求池中取出需求
测试模型
与开发一样,测试也有不同的模型
V模型

其中单元测试对应开发中的详细设计,集成测试对应概要设计,系统设计对应需求与系统,验收测试对应用户需求
特点:
- 含有不同类型的测试
- 测试参考的标准和开发的阶段对应
缺点:
- 测试后置,暴露问题时间较晚
W模型

也就是在开发进行时,就对每一个阶段进行测试
特点:
- W模型重流程,无法迎接变化
- W模型不使用敏捷模型
BUG
创建bug
对于一个bug,应当说明其出现的版本,环境,步骤,预期结果和实际结果,bug等级
例如:

其中,bug等级包括:次要,一般,严重,崩溃
bug的生命周期
- New: 测试人员创建了一个bug
- Open:开发人员确认是bug
- Rejected:开发人员确认不是bug
- Fixed:开发人员将bug修复完成
- Delay:bug等级低,且开发人员不能立即修复bug
- Closed:bug确认修改后,测试人员将状态改为Closed
- Reopen:bug确认未修改完成,测试人员将状态改为Reopen
测试用例的创建
测试用例不仅要考虑应该实现的功能,也要考虑未实现,不应该实现的功能
通常从下面几方面进行测试用例的设计:
- 功能测试
- 性能测试
- 界面测试
- 兼容性测试
- 易用性测试
- 安全测试
例如:


等价类
依据需求,将不同的输入分成若干个等价类,然后从不同的类中选出一个测试用例,若这个测试通过,则代表整个类通过
其中一般分为有效等价类和无效等价类
边界值
边界值分为有效边界和无效边界
例如,大于等于60分及格,那么60是有效边界,59是无效边界
判定表
和真值表类似,将所有的输入按照不同的组合写入表中,然后根据输入和输出的关系,确定输出,画出判定表,根据判定表编写测试用例
场景设计法
根据基本时间流和备选时间流,设计不同的测试用例
例如:去肯德基买汉堡包,基本时间流就是按照菜单点餐,交钱,取汉堡,吃饭
备选时间流有:遇到疯狂星期四打折,没带钱,吃饭噎死了
正交法
正交实验法是从大量的实验中找出有代表性的点,然后依据正交表来设计测试用例
其中正交表有如下特性:
- 每一列中不同的数字出现的次数相同
- 任意两列中数字的排列方式齐全且均衡
测试分类
- 可靠性测试 :系统的可靠性 = 正常运行时间 / (正常运行+非正常运行时间) * 100%
- 容错性测试 :指软件发生的错误并从错误中恢复的能力,
- 安装卸载测试
- 内存泄漏测试:可借助人工或软件静态扫描代码
- 弱网测试:网不好会造成客户端频繁的发送请求
- 冒烟测试:评估软件是否具备可测试条件
- 回归测试:对历史版本的功能进行测试
按照是否查看代码划分
- 黑盒测试:功能测试(系统测试)
- 白盒测试:关注程序的内部实现(单元测试)
- 灰盒测试:介于黑盒测试和白盒测试之间(集成测试)
相关文章:
测试——基本概念
概念 测试和调试有以下几点区别: 测试是测试人员进行的工作,调试是开发人员调试是发现并解决问题,测试只是发现问题测试贯穿于整个项目的生命周期,而调试主要在编码阶段 测试人员一般有如下的工作: 需求分析&#x…...
SnowFlake 雪花算法和原理(分布式 id 生成算法)
一、概述 SnowFlake 算法:是 Twitter 开源的分布式 id 生成算法。核心思想:使用一个 64 bit 的 long 型的数字作为全局唯一 id。算法原理最高位是符号位,始终为0,不可用。41位的时间序列,精确到毫秒级,41位…...
【死磕数据库专栏】MySQL对数据库增删改查的基本操作
前言 本文是专栏【死磕数据库专栏】的第二篇文章,主要讲解MySQL语句最常用的增删改查操作。我一直觉得这个世界就是个程序,每天都在执行增删改查。 MySQL 中我们最常用的增删改查,对应SQL语句就是 insert 、delete、update、select…...
阿里软件测试二面:adb 连接 Android 手机的两种方式,看完你就懂了
前言 随着现在移动端技术的突飞猛进,导致现在市场上,APP 应用数不胜数,那对于测试工程师而言,对于 APP 的测试,那基本就是一个必修课了。 今天,我就来给大家介绍一下,adb 连接 Android 手机的两…...
Docker安装YApi
目录0、Docker 环境准备1、数据库准备 MongoDB2、启动 YAPI3、官网教程0、Docker 环境准备 Docker 容器之间网络互通需要使用 docker network create yapi 创建一个自定义网络 docker network create yapi1、数据库准备 MongoDB YAPI 的数据库是 MongoDB,准备镜像…...
springboot自定义参数解析器
为什么要自定义参数解析器呢? 因为很多项目每次获取用户信息,需要重复从请求头中获取token,用token再去redis或是sql中去拿到存储的计本对象,再将获取到的Json数据,转化为我们需要的对象等代码,作为一名程…...
Python Unittest ddt数据驱动
1、数据驱动介绍: ddt.ddt(类装饰器,申明当前类使用ddt框架)ddt.data(函数装饰器,用于给测试用例传递数据),支持传python所有数据类型:数字(int,…...
Vue自定义组件遇到分页传输数据不正确解决办法
测试环境 Vue3 Element Plus 遇到问题 <el-table:data"tableData">...其他el-table-column<template #default"scope">// 自定义组件<my-button name"编辑" :id"scope.row.id"/ ></template></el-table&…...
ABAP 辨析CO|CN|CA|NA|CS|NS|CP|NP
1、文档说明 本篇文档将通过举例,解析字符的比较运算符之间的用法和区别,涉及到的操作符:CO|CN|CA|NA|CS|NS|CP|NP 2、用法和区别 用法总览 以下举例,几乎都使用一个字符变量和一个硬编码字符进行对比的方式,忽略尾…...
RK3568平台开发系列讲解(设备驱动篇)Pinctrl子系统详解
🚀返回专栏总目录 文章目录 一、pinctrl子系统结构描述二、重要的概念三、主要的数据结构和接口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢我们知道在许多soc内部包含有多个pin控制器,通过pin控制器的寄存器,我们可以配置一个或者一组引脚的功能和特性。Linux…...
ROS小车研究笔记:二维SLAM建图简介与源码分析
ROS提供了现成的各类建图算法实现。如果只是应用的话不需要了解详细算法原理,只需要了解其需要的输入输出即可。 1 Gmapping Gmapping使用粒子滤波算法进行建图,在小场景下准确度高,但是在大场地中会导致较大计算量和内存需求 Gmapping需要…...
番外9:使用ADS对射频功率放大器进行非线性测试1(以IMD3测试为例)
番外9:使用ADS对射频功率放大器进行非线性测试1(以IMD3测试为例) 一般可以有多种方式对射频功率放大器的非线性性能进行测试,包括IMD3、ACPR、ACLR等等,其中IMD3的实际测试较为简单方便不需要太多的仪器。那么在ADS中…...
车载软件背景(留坑)
目前,车载软件已经成为汽车电子系统中不可或缺的一部分。随着汽车制造商不断增加车载软件的功能和性能,车载软件的市场规模也在不断扩大。据市场研究公司 Grand View Research 预测,到2025年,全球车载软件市场规模将达到190亿美元…...
Hadoop-MapReduce
Hadoop-MapReduce 文章目录Hadoop-MapReduce1 MapRedcue的介绍1.1 MapReduce定义1.2 MapReduce的思想1.3MapReduce优点1.4MapReduce的缺点1.5 MapReduce进程1.6 MapReduce-WordCount1.6.1 job的讲解2 Hadoop序列化2.1 序列化的定义2.2 hadoop序列化和java序列化的区别3 MapRedu…...
ChatGPT来了,软件测试工程师距离失业还远吗?
小伙伴们前一段是不是都看到过ChatGPT的相关视频,那它到底是什么?对软件测试行业会有什么影响? 今天汇智妹就用一篇文章来给大家讲清楚。 一、ChatGPT是什么? 简单来说,ChatGPT是一款人工智能聊天机器人,…...
【项目实战】Linux服务管理 之 开启/关闭防火墙
一、service命令是什么? service命令用于对系统服务进行管理,比如 启动(start)停止(stop)重启(restart)查看状态(status) service命令本身是一个shell脚本…...
OSS存储使用之centOS系统ossfs挂载
以CentOS7系统为例 下载CentOS系统支持的ossfs工具的版本,以下载CentOS 7.0 (x64)版本为例,可以通过wget命令进行安装包的下载 wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm 也可以通过yum命令来进行安装包的下载 sud…...
【项目实战】SpringBoot多环境(dev、test、prod)配置
一、三套环境介绍 1.1 开发环境(dev) 开发环境是程序猿们专门用于开发的服务器,配置可以比较随意 为了开发调试方便,一般打开全部错误报告。 1.2 测试环境(test) 一般是克隆一份生产环境的配置 一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。 有些…...
Laravel框架01:composer和Laravel简介
Laravel框架01:composer和Laravel简介一、Composer介绍二、创建Laravel项目三、Laravel目录结构四、Laravel启动方式一、Composer介绍 composer 是PHP中用来管理依赖关系的工具。类似于Javascript的NPM。composer官网:https://getcomposer.org/安装结束…...
【bug】Transformer输出张量的值全部相同?!
【bug】Transformer输出张量的值全部相同?!现象原因解决现象 输入经过TransformerEncoderLayer之后,基本所有输出都相同了。 核心代码如下, from torch.nn import TransformerEncoderLayer self.trans TransformerEncoderLayer…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
比特币:固若金汤的数字堡垒与它的四道防线
第一道防线:机密信函——无法破解的哈希加密 将每一笔比特币交易比作一封在堡垒内部传递的机密信函。 解释“哈希”(Hashing)就是一种军事级的加密术(SHA-256),能将信函内容(交易细节…...
