测试的基本概念
什么是软件测试
- 软件测试它就是一个过程
- 测试就是对软件的全方位进行全面的校验.
- 通过测试技术验证软件是不是符合用户的信息.
测试和开发的区别
在工作上的区别:
开发人员通过编程技能来开发和实现这个软件.
测试人员通过测试技能来验证软件是否符合用户需求.
在技术上的要求:
开发人员更加注重深度,而测试人员更加注重广度.
🔥测试和调试的区别
目的: 调试是发现问题和解决问题, 测试是发现问题和验证问题.
人员: 调试是开发人员来完成, 测试是测试 + 开发人员来完成(有一些白盒测试是开发人员完成的).
阶段: 调试是在开发阶段, 测试贯穿整个软件的生命周期(在需求阶段就开始了).
方法: 调试通过Debug,打印日志等. 测试通过白盒测试, 黑盒测试, 接口测试, 自动化测试等.
🔥测试人员需要具备的素质
非技术: 学习能力, 合作能力, 沟通能力, 抗压力, 文字表达能力
技术: 编程能力, 编写测试用例能力.

需求
什么是需求
需求分为两种,一种为用户需求,另一种为软件需求或者功能需求.
用户需求: 就是甲方提出的要求或者终端用户使用时需要实现的效果.
软件需求: 详细描述了开发人员必须要实现的软件功能.
为什么要有需求
需求是开发的标准,也是测试人员编写测试代码的依据.
如何深入理解需求
多参加各种会议,会议中会对产品进行剖析,深入了解产品的细节.
多阅读相关文档,(技术文档, 需求文档, bug库)

测试用例的概念
测试用例就是为了测试向被测试的系统提供的一组集合.里面包含了 测试环境, 操作步骤, 测试数据, 预期结果.测试用例是测试人员测试的依据.也可以减少测试工作的冗余度. 测试用例还是实行自动化的依据.
🔥🔥🔥bug的概念
bug就是程序没有实现用户合理的预期功能的要求.
如何描述一个bug
**1、发现问题的版本 **
开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障。并且版本的标识也有利于
统计和分析每个版本的质量。
2、问题出现的环境 **
环境分为硬件环境和软件环境,如果是web项目,需要描述浏览器版本,客户机操作系统等,如果是
app项目,需要描述机型、分辨率、操作系统版本等。详细的环境描述有利于故障的定位。
3、错误重现的步骤 **
描述问题重现的最短步骤。
**4、预期行为的描述 **
要让开发人员指导怎么样才是正确的,尤其要以用户的角度来描述程序的行为是怎样的。如果是依据需
求提出的故障,能写明需求的来源是最好的。
要相信:测试人员是最懂需求的。
**5、错误行为的描述 **
描述错误的现象。crash等可以上传log,UI问题可以有截图。
6、其他
某些公司会有一些其他的要求,例如故障的分类:功能故障,界面故障,兼容性故障等。有些有优先级
的分类,严重影响测试需要开发人员优先修改的,可以设置优先级为高。
bug的级别

Blocker(崩溃)Critical(严重)Major(一般)Minor(次要)
bug的生命周期
● New:新发现的Bug,未经评审决定是否指派给开发人员进行修改。
● Open:确认是Bug,并且认为需要进行修改,指派给相应的开发人员。
● Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
● Rejected:如果认为不是Bug,则拒绝修改。
● Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。
● Closed:修改状态的Bug经测试人员的回归测斌验证通过,则关闭Bug。
● Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。
无效的bug:open->closed open-rejected-closed

软件的生命周期
需求分析, 计划, 设计, 编码, 测试, 运行维护.
常见模型
瀑布模型
start -> 需求分析 -> 计划 -> 设计 -> 编码 -> 测试 -> end
特点: 是线性的.
优点: 每个阶段干什么都非常的明确
缺点: 发现的问题太晚,会导致人力, 时间资源的浪费.
适用: 比较小的项目.
螺旋模型

特点: 软件进行到每一个阶段都会进行风险分析.
优点: 风险分析可以避免一些问题暴露在线上.
缺点: 风险分析失败会导致问题直接暴露在线上.
适用: 适用与大型的,多风险的项目.
增量与迭代模型的区别
增量是逐快建造,迭代是精益求精. 就向画画: 增量是先画头再画身子,最后画腿. 而迭代是先画整体轮廓再细化.
敏捷
个体与交互重于过程和工具
可用的软件重于完备的文档
客户协作重于合同谈判
响应变化重于遵循计划
在每对比对中,后者并非全无价值,但我们更看重前者。
scrum
角色: scrum由产品经理, 项目经理, 研发团队(前端开发, 后端开发, 测试, 设计)

工作流程:
产品负责人负责整理user story,形成左侧的product backlog。
发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出
就是制定出这一期迭代要完成的story列表,sprint backlog。
迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每
个任务都有明确的负责人,并完成工时的初估计。
每日例会:每天scrum master召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什
么问题。
演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取
得的成果。期间大家的反馈记录下来,由po整理,形成新的story。
回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达
到持续改进的效果。

V模型

特点是左边是开发,右边是测试,测试被分为许多类型.
缺点是介入需求太晚了.
W模型

W模型特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的
W模型优点:**有利于尽早地全面的发现问题。**例如,需求分析完成后,测试人员就应该参与到对需
求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度
和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。
W模型缺点:**测试和开发活动也保持着一种线性的前后关系. **上一阶段完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。并不能拥抱变化,不适用于敏捷.
🔥🔥🔥软件测试的生命周期
需求分析 -> 测试计划 -> 测试设计, 测试开发 -> 测试执行 -> 测试评估

如何开始第一次测试
刚进入公司的准备工作:
1、阅读所有项目有关的文档,包括:需求文档、设计文档、用户手册
2、尽可能参加各种项目会议,了解项目的背景、人员组成、尽可能的了解需求和业务。特别针对业务
专业性较强的项目,例如银行业务,需要了解各种业务知识,如高低柜、一二三类账户等、存款、贷款
等。
3、熟悉项目所使用的测试管理工具、配置管理工具,获取对应的地址和登录方式
4、阅读已有的测试方案和测试案例
5、阅读旧有的bug库,了解系统功能。尤其重要的是和现有的测试团队保持一致的故障定级原则
6、了解公司的规范要求,特别是用例编写规范、用例执行规范、bug提交规范、测试工具工具使用规
范等
当第一次测试来临时,我们需要和组长确定:
1、测试的计划是什么?
2、测试的内容是什么?test case有多少?安排了几天执行?有没有自由测试的时间?
3、我要测试的内容开发人员是谁?需求人员是谁?
4、分配给我的测试内容是否需要特殊的测试资源?资源是否满足需要?
在我们确认了以上内容之后,就可以开始测试的执行了
🔥🔥🔥当与开发产生争执时的解决办法
测试经常会遇到这些问题:
这不是bug
这个bug的级别太高了
bug影响不大,暂不修改
当遇到这些问题时,解决方式:
1、先检查自身,是否bug描述不清楚
2、站在用户角度考虑问题 应该让开发人员了解到Bug对用户可能造成的困扰,这样才能促使开发人员
更加积极地、高质量地修改Bug。在争执时,可以问一句:如果你是用户,你可以接受么?
**3、BUG定级要有理有据 **
BUG定级时,不仅要参考BUG级别,还要考虑BUG是否会影响到流程,往往用户的BUG级别和我们的
是有区别的,需站在用户的角度定考虑定位级别
4、提高自身的技术和业务水平. 不光要提出问题, 最好也能提出解决方案
5、开发人员不接受时,不要争吵
6、发起三方讨论会

相关文章:
测试的基本概念
什么是软件测试 软件测试它就是一个过程测试就是对软件的全方位进行全面的校验.通过测试技术验证软件是不是符合用户的信息. 测试和开发的区别 在工作上的区别: 开发人员通过编程技能来开发和实现这个软件. 测试人员通过测试技能来验证软件是否符合用户需求. 在技术上的要求…...
Python多线程加速-休眠部分线程
总所周知Python由于GIL的问题,使用多线程时同一时刻只有一个线程在工作。故Python会在所有线程之间不断的切换,每切换到一个线程会执行一段字节码指令然后切换到另一个线程。如果开启了很多线程,且只有小部分线程在工作,如果不休眠…...
B+树(B+ Tree)
B树(B Tree)是一种对B树(B-Tree)的改进版本,它在数据库系统和文件系统中作为索引结构得到了广泛的应用,特别是在磁盘存储的场景下。B树保留了B树的基本特征,如自平衡、多路分支等,但…...
【Linux】了解信号产生的五种方式
文章目录 正文前的知识准备kill 命令查看信号man手册查看信号信号的处理方法 认识信号产生的5种方式1. 工具2. 键盘3. 系统调用kill 向任意进程发送任意信号raise 给调用方发送任意信号abort 给调用方发送SIGABRT信号 4. 软件条件5. 异常 正文前的知识准备 kill 命令查看信号 …...
【nuxt3国际化i18n】vue3+nuxt3+vite+TS国际化的正确做法
1、创建nuxt3请看Nuxt3官网 2、下面是添加i18n的叫教程,适用于企业前端项目。 添加依赖 依赖 yarn add vue-i18n yarn add nuxtjs/i18nnext -D配置文件nuxt.config.ts //nuxt.config.ts export default defineNuxtConfig({modules: [nuxtjs/i18n,],i18n: {stra…...
数据库管理-第185期 23ai:一套关系型数据干掉多套JSON存储(20240508)
数据库管理185期 2024-05-08 数据库管理-第185期 23ai:一套关系型数据干掉多套JSON存储(20240508)1 上期示例说明2 两个参数2.1 NEST/UNNEST2.2 CHECK/NOCHECK 3 一数多用3.1 以用户维度输出订单信息3.2 以产品维度3.3 以产品种类维度 4 美化输出总结 数…...
7 zip 介绍
7-Zip是一款广受好评的开源文件存档与压缩工具,支持高比率的压缩,适用于Windows、Linux和macOS等多种操作系统平台。以下是关于7-Zip的详细介绍: - **高压缩比**:7-Zip最显著的特点是其提供的高压缩率,尤其是使用其独…...
前端页面 贴边拖拽 盒子
vue 悬浮球(带自动吸附功能)_vue悬浮球-CSDN博客...
【408真题】2009-10
“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…...
WebSocket概述
TCP和HTTP规范有连接超时一说,所以长轮询并不能一直持续,服务端和客户端的连接需要定期的连接和关闭再连接。 WebSocket在请求头中有一个Connection:Upgrade字段,表示客户端想对协议进行升级,还有一个Upgrade:websocket字段&…...
人机协同是虚拟与真实的协同
“人机协同”是指人类与机器之间的合作与协同工作。在这种协同中,机器可以作为助手、辅助或扩展人类的能力,帮助人们完成任务,提高工作效率和质量。 虚拟与真实的协同是指在人机协同的过程中,虚拟想象世界和真实世界之间的协同。通…...
【编程向导】Docker-常用命令
常用命令 管理命令 管理命令说明builder管理构建config管理配置container管理容器context管理上下文engine管理引擎image管理镜像network管理网络node管理 Swarm 节点plugin管理插件secret管理 Docker secretsservice管理服务stack管理 Docker stacksswarm管理 Swarm 集群sys…...
LeetCode题练习与总结:不同的二叉搜索树Ⅱ--95
一、题目描述 给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。 示例 1: 输入:n 3 输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,nul…...
idea SpringBoot + Gradle 环境配置到项目打包
一、前言 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。 面向Java应用为主。当前其支持…...
深入理解tengine的sysguard模块
目录 1. 引言2. 开启sysguard模块2.1 编译2.2 配置3. 源码分析3.1 配置参数分析3.2 模块的初始化3.3 ngx_http_sysguard_handler函数3.4 各项负载指标的获取3.4.1 load系统负载的获取3.4.2 cpu使用率的获取3.4.3 内存使用情况的获取3.3.5 请求平均响应时间的获取1. 引言 Tengin…...
探索多模态LLM作为驾驶的世界模型
24年5月MIT的论文“Probing Multimodal LLMs as World Models for Driving”。 主要对多模态大语言模型(MLLM)在自动驾驶领域的应用进行了审视,并挑战/验证了一些常见的假设,重点关注它们通过图像/帧序列推理和解释在闭环控制环境…...
掌握Vim:Linux系统维护的瑞士军刀 - 常用命令深度解析
在Linux的世界里,Vim编辑器犹如一位沉默的剑客,它的命令就是那锋利的剑刃,能够在代码的海洋中劈波斩浪。对于每一位Linux系统用户来说,掌握Vim的常用命令,就如同获得了维护系统的瑞士军刀。今天,让我们一起…...
C++数组和指针应用实例 -- 实现计算器
C 的数组和C 语言一样,C完全兼容C语言的指针,但是会多出一个this指针 用C实现计算器 case1: 基本实现: #include <iostream>using namespace std;int add(int a,int b) {return ab; }int minu(int a,int b) {return a-b; }int mul(int a,int b) …...
【多电压流程 Multivoltage Flow】- 5.特定工具使用建议(6.Formality)
使用Formality进行形式验证 Formality支持具有低功耗特性的功能等效性检查,如时钟门控、多阈值电压(multiple-Vt)、多电压供电、电源门控以及动态电压和频率缩放。Formality能够识别低功耗单元,例如隔离单元、电平转换器、始终开启单元、保持寄存器和电源门。 Formality支持…...
力扣 72. 编辑距离 python AC
动态规划 class Solution:def minDistance(self, word1, word2):size1 len(word1)size2 len(word2)dp [[0] * (size2 1) for _ in range(size1 1)]for i in range(1, size1 1):dp[i][0] dp[i - 1][0] 1for i in range(1, size2 1):dp[0][i] dp[0][i - 1] 1for i in…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...
