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

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...