测试流程体系
目录:
- 软件测试基本概念
- 软件测试模型
- 软件测试工作流程
- 测试左移和测试右移
1.软件测试基本概念
- 通过手工或者工具对"被测对象"进行测试
- 验证实际结果与预期结果之间是否存在差异
软件测试作用
- 通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心。
- 测试可以降低同类型产品开发遇到问题的风险。
软件缺陷
- 软件缺陷被测试工程师和开发工程师们称作bug
- 软件缺陷会导致软件不能正常运行,它的存在会在一定程度上导致软件不能满足用户的需求,甚至有可能破坏或泄漏用户的重要数据
软件测试原则
软件测试基础概念_阿瞒有我良计15的博客-CSDN博客
- 测试显示缺陷的存在
- 穷尽测试是不可能的
- 测试尽早介入
- 缺陷集群性(2/8原则)
- 杀虫剂悖论
- 测试活动依赖于测试内容
- 没有错误是好是谬论
软件测试对象
- 需求分析阶段:需求文档、接口文档
- 编码实现阶段:源代码
- 系统功能使用:软件程序
测试用例
为特定的目的而设计的一组测试输人、执行步骤和预期的结果,以便测试产品否满足某个特定需求的文档
2.软件测试模型
V模型
软件测试V模型_阿瞒有我良计15的博客-CSDN博客
- V模型是瀑布模型的一种改进
- V模型标明了测试过程中的不同阶段
- 需求分析:需求文档
- 概要设计:系统架构、模块划分、模块与模块之间的接口
- 详细设计:模块内部实现的逻辑和方法
- 编码:用代码实现设计的内容
- 单元测试:测试代码中最小模块是否符合详细设计
- 集成测试:测试各个模块组成到一起后是否可以正常使用
- 系统测试:测试已经集成在一起的产品是否符合需求文档中的要求
- 验收测试: 测试产品是否符合用户的需求
优点
- 既有底层测试又有高层测试。
- 将开发阶段清楚的表现出来,便于控制开发的过程。
缺点
- 容易让人误解为测试是在开发完成之后的一个阶段。
- 由于它的顺序性,当编码完成之后,正式进入测试时,这时发现的一些bug可能不容易找到其根源,并且代码修改起来很困难。
- 如果需求变更较大,导致要重复变更需求、设计、编码、测试。返工量大。
W模型
软件测试W模型_阿瞒有我良计15的博客-CSDN博客
- W模型明确表示出了测试与开发的并行关系
- W模型中测试伴随着整个软件开发周期,并且测试的对象不仅仅是程序,需求和设计同样要测试
W模型的优缺点
优点
- 将测试贯穿到整个软件的生命周期中,且除了代码要测试,需求、设计等都要测试。
- 更早的介入到软件开发中,能尽早的发现缺陷进行修复
- 测试与开发独立起来,并与开发并行。
缺点
- 无法支持迭代的开发模型
- 对有些项目,开发过程中根本没有文档产生,故W模型无法使用
- 对于需求和设计的测试技术要求很高,实践起来很困难
H模型
- 软件开发中需求、设计、编码等活动被分阶段执行、但是实践中,他们并不是完全串行的,它们之间更多时候是交叉进行的,更多的是迭代执行
- 把测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来
H模型的优缺点
优点
- 软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行。软件测试活动可以尽早准备、尽早执行,具有很强的灵活性
缺点
- 测试就绪点分析困难
- 对于整个项目组的人员要求非常高
软甲测试H模型是软件测试中一种测试过程模型,其名称来源于其形状类似英文字母H。该模型是一种组合了瀑布模型、V模型和敏捷开发的测试过程模型。
软甲测试H模型包含以下几个阶段:
1. 需求分析阶段:在此阶段,测试团队与业务分析人员和项目管理人员合作,理解软件需求和业务规则。测试团队通过分析需求文档、原型等,生成测试需求和测试计划。
2. 系统测试阶段:在此阶段,测试团队根据需求分析阶段的测试计划设计系统测试用例,并开始执行测试。系统测试主要用于验证整个软件系统的功能、性能和稳定性。
3. 集成测试阶段:在系统测试阶段之前,需要进行集成测试。集成测试主要针对不同模块或组件之间的集成和接口进行测试。测试团队根据系统设计和组件之间的接口规范,设计和执行集成测试用例。
4. 单元测试阶段:在集成测试阶段之前,需要进行单元测试。单元测试主要针对软件中的单个模块或函数进行测试。测试团队根据模块设计和功能规范,设计和执行单元测试用例。
5. 验收测试阶段:在系统测试和集成测试完成后,进行验收测试。验收测试是由用户或业务代表来执行的,用于验证系统是否满足业务需求和用户期望。
6. 回归测试阶段:在软件修改或新功能添加后,需要进行回归测试。回归测试是为了确保修改或添加的功能不会影响到原有的功能。测试团队重新执行先前的测试用例,并添加新的测试用例来验证软件的稳定性。
7. 敏捷循环阶段:在软甲测试H模型中,敏捷开发的理念和实践被引入,允许团队在项目开发中进行迭代和增量式的测试。测试团队与开发团队合作,共同完成每个迭代周期内的需求分析、设计、开发和测试。
软甲测试H模型的优点包括:
- 综合了瀑布模型和V模型的优点,强调需求分析和早期测试阶段,提前发现和解决问题;
- 具有较高的可控性和可估计性,减少了后期问题的风险;
- 敏捷循环阶段使得团队可以更加灵活地应对变化,并实现快速交付;
软甲测试H模型的缺点包括:
- 需要充分的沟通和协作,团队成员之间的配合和合作对于模型的成功实施至关重要;
- 模型相对较复杂,需要更多的资源和时间来进行测试规划和执行;
- 不适用于所有开发项目,需要根据团队的具体情况和项目要求进行酌情选择。
总之,软甲测试H模型是一个结合了瀑布模型、V模型和敏捷开发的综合测试过程模型,提供了全面的测试覆盖和敏捷开发的灵活性,使团队能够更好地控制质量并满足业务需求。
3.软件测试工作流程
传统测试流程
-
单元测试:单元测试是针对软件中的单个模块或函数进行的测试。目的是验证单元的功能是否按预期工作。通常由开发人员编写和执行,以确保代码的正确性并尽早发现和修复潜在的问题。
-
集成测试:集成测试是针对软件的不同模块或组件之间的集成和接口进行的测试。它旨在验证模块之间的协作和数据传递是否正确,以及是否满足设计和规范。测试团队根据组件接口规范设计和执行集成测试用例。
-
冒烟测试:冒烟测试是一种简单的测试,用于验证软件的基本功能是否正常工作。它通常在每个新版本或构建之后进行,以确保软件在进行更详细的测试之前是可用和可靠的。冒烟测试目的是验证软件的核心功能,快速筛选出严重的问题。
-
系统测试:系统测试是针对整个软件系统进行的测试,以验证其功能、性能和稳定性是否满足需求。测试团队会根据需求分析阶段的测试计划设计系统测试用例,并执行测试。系统测试旨在模拟最终用户的操作环境和使用情况。
-
回归测试:回归测试是在软件修改或新功能添加后进行的测试,以确保修改或添加的功能不会影响到原有的功能。它重新执行先前的测试用例,并添加新的测试用例来验证软件的稳定性。回归测试旨在捕获由于修改引入的潜在问题。
-
验收测试:验收测试是由用户或业务代表来执行的测试,用于验证系统是否满足业务需求和用户期望。它确保软件按照预期工作,并且能够满足用户的需求。验收测试通常发生在软件的最终阶段,以确认软件的可交付性。
系统测试流程
- 需求分析:在系统测试流程的开始阶段,测试团队与业务分析人员和项目管理人员一起分析软件需求和业务规则。通过仔细审查需求文档、原型等,测试团队能够理解系统所需的功能和性能要求,并确保对系统需求的充分理解。
- 测试计划:测试计划是制定整体测试策略和测试方法的重要文档。在测试计划阶段,测试团队根据需求分析和项目要求,确定测试目标、范围、时间、资源和进度等。测试计划还包括定义测试环境和提供测试的输入数据等。
- 测试设计:在测试设计阶段,测试团队根据需求分析和测试计划,制定具体的测试策略和测试方案。测试设计包括选择合适的测试技术和方法,确定测试用例的优先级和范围,以及规划测试数据和测试环境的准备工作。
- 用例评审:在测试设计阶段,测试用例需要经过评审来确保其质量和有效性。用例评审是测试团队和相关利益相关者共同审查测试用例的过程,以确保测试用例的准确性和完整性。评审期间,团队成员提出意见和建议,确保测试用例满足预期的测试目标。
- 测试执行:在测试执行阶段,测试团队根据测试计划和测试设计中定义的测试用例,按照预定的测试策略和方法执行测试。测试执行包括准备测试数据和测试环境,执行测试用例,记录测试结果,以及检测和报告任何发现的问题或缺陷。
- Bug管理:在测试执行阶段,测试团队会发现和记录测试中发现的问题或缺陷。通过使用专门的缺陷跟踪工具,测试团队能够管理和追踪缺陷的状态、修复过程和验证结果。优秀的缺陷管理可帮助团队及时解决问题并确保质量。
- 发布维护:一旦经过充分测试并修复缺陷,系统测试阶段结束,软件可以准备发布部署。在发布维护阶段,测试团队与开发团队合作进行最终的功能测试和验证,以确保软件在生产环境中正常运行并满足用户需求。同时,团队也负责对软件进行后续维护和支持。
Bug管理流程
4.测试左移和测试右移
测试左移
- 左移是往测试之前的开发阶段移
- 测试团队在软件开发周期早期就开始介入
- 对代码进行测试
- 从发现bug到预防bug
测试左移-质量保障手段
- 代码评审(code review)
- 代码审计
- 单元测试
- 自动化冒烟测试
- 研发自测
测试右移
- 右移是往发布之后移。
- 产品上线后进行线上监控。
测试右移-线上监控
- 闭环的线上问题反馈-检查-解决-更新流程
- 更便捷的日志查看、回传服务
- 丰富有效的log,便于问题的快速定位
- 丰富的监控指标(例如业务异常点指标)
- 业务监控(例如短信发送等)
- 关键指标每日监控(服务器指标)
- 生产数据监控(警报)
相关文章:

测试流程体系
目录: 软件测试基本概念软件测试模型软件测试工作流程测试左移和测试右移 1.软件测试基本概念 通过手工或者工具对"被测对象"进行测试验证实际结果与预期结果之间是否存在差异 软件测试作用 通过测试工作可以发现并修复软件当中存在的缺陷ÿ…...

Linux下CentOS KVM 虚拟化
介绍: KVM(Kernel-based Virtual Machine)是一种开源的虚拟化技术,它是基于Linux内核的虚拟化解决方案。KVM可以将一台物理服务器分割成多个虚拟机,每个虚拟机都可以运行不同的操作系统和应用程序,从而实现…...

< vue + ElementUi 组件封装:实现弹窗展示富文本数据,允许全文搜索高亮显示搜索内容 >
实现弹窗展示富文本数据,允许全文搜索高亮显示搜索内容 👉 前言👉 一、效果演示👉 二、实现思路👉 三、实现案例👍 卷王必胜!往期内容 💨 👉 前言 在 Vue elementUi 开…...

MATLAB 之 低层绘图操作和光照及材质处理
这里写目录标题 一、低层绘图操作1. 曲线对象2. 曲面对象3. 文本对象4. 其他核心对象4.1 区域块对象4.2 方框对象 二、光照和材质处理1. 光照处理2. 材质处理2.1 图形对象的反射特性2.2 material 函数 一、低层绘图操作 MATLAB 将曲线、曲面、文本等图形均视为对象,…...

LLM-Client一个轻量级的LLM集成工具
大型语言模型(llm)已经彻底改变了我们与文本交互的方式,OpenAI、Google、AI21、HuggingfaceHub、Anthropic和众多开源模型提供了不同的功能和优势。但是每个模型都有其独特的体系结构、api和兼容性需求,集成这些模型是一项耗时且具有挑战性的任务。 所以…...

leetcode动态数组vector实现杨辉三角
链接: leetcode动态数组vector实现杨辉三角 由题意可易得,从第三行开始,除了开始和末尾的位置上的元素,其余位置上的元素都是由上方的元素以及上方左侧的元素相加得到的,此时就很容易的到从第三行开始状态转移方程为vv[i][j] vv[…...

第二十三章_Redis高性能设计之epoll和IO多路复用深度解析
before 多路复用要解决的问题 并发多客户端连接,在多路复用之前最简单和典型的方案:同步阻塞网络IO模型 这种模式的特点就是用一个进程来处理一个网络连接(一个用户请求),比如一段典型的示例代码如下。 直接调用 recv 函数从一个 socket 上读…...

基于OpenCV-车辆检测项目(简易版)
车辆检测 1.项目介绍2. 读取一段视频3.通过形态学处理识别车辆4.描画轮廓5. 车辆计数并显示 本项目使用的视频地址链接 1.项目介绍 对一个视频进行车辆数量的检测,用到的知识有视频的读取,滤波器,形态学,添加直线、文本ÿ…...

用python获取海康摄像机视频
要调用海康摄像机视频,需要使用海康SDK提供的API。以下是一个简单的示例代码,可以连接到海康摄像机并获取视频流: python import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel from PyQt5.QtGui import QPixmap from PyQ…...

【Linux】遇事不决,可先点灯,LED驱动的进化之路---2
【Linux】遇事不决,可先点灯,LED驱动的进化之路---2 前言: 一、Pinctrl子系统重要概念 1.1 重要概念 1.1.1 pin controller 1.1.2 client device 1.1.3 补充概念 二、GPIO子系统重要概念 2.1 在设备树指定GPIO引脚 2.2 在驱动代码中…...

【计算机网络】数据链路层--点对点协议PPP
1.概念 2.构成 3.封装成帧 - 帧格式 4.透明传输 4.1字节填充法(面向字节的异步链路) 4.2.比特填充法(面向比特的同步链路) 5.差错检测 6.工作状态 7.小结...

【⑦MySQL】· 一文了解四大子查询
前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL标量/单行子查询、列子/表子查询的讲解✨ 目录 前言一、子查询概念二、标量/单行子查询、列子/表子查询三、总结 一、子查询概念 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从My…...

ValSuite报告可以帮助改善您的验证过程的6种方式
热验证工艺是一项复杂而微妙的工作,但它是确保制药和生物技术产品的安全性和有效性的重要组成部分。同时,管理整个验证过程中产生的数据可能很费时,而且容易出错——这就是ValSuite的意义。 这款直观的验证软件简化了数据分析和报告…...

【机器学习】机器故障的二元分类模型-Kaggle竞赛
竞赛介绍 数据集描述 本次竞赛的数据集(训练和测试)是从根据机器故障预测训练的深度学习模型生成的。特征分布与原始分布接近,但不完全相同。随意使用原始数据集作为本次竞赛的一部分,既可以探索差异,也可以了解在训…...

ADB usage
查看手机设备的信息 获取设备的Android版本号 adb shell getprop ro.build.version.release 获取设备的API版本号 adb shell getprop ro.build.version.sdkAdb 获得 sdk版本 adb shell getprop ro.build.version.sdk27 Adb 获得Android版本 adb shell getprop ro.build.vers…...

利用有限元法(FEM)模拟并通过机器学习进行预测以揭示增材制造过程中热场变化:基于ABAQUS和Python的研究实践
1. 引言 增材制造(Additive Manufacturing,AM)近年来引起了大量的研究关注,这主要是因为它可以提供定制化、复杂结构的零件制造解决方案。在AM过程中,热场的分布和变化直接影响了零件的质量和性能。对此,采…...

Kafka与Flume的对比分析
Kafka与Flume的对比分析 一、Kafka和Flume1. Kafka架构2. Flume架构3. Kafka和Flume异同点 二、Kafka和Flume的性能对比1. 数据处理性能对比2. 大规模数据流处理的性能对比 三、性和稳定性对比1. 高可用集群的搭建KafkaFlume 2. 数据丢失和重复消费的问题处理KafkaFlume 四、适…...

docker启动redis哨兵报错(sentinel.conf is not writable: Permission denied)
Sentinel config file /usr/local/sentinel/sentinel.conf is not writable: Permission denied. Exiting… 用这个命令不报错:docker run --net host -p 6666:6666–name redis-sentinel -v /usr/mcc/redis/conf:/usr/local/sentinel/ -v /usr/mcc/redis/data/sent…...

如何编写优秀代码
最近在阅读别人写的代码,进行相应功能的修改。发现很多不规范或者比较绕的地方,总有那么几句看着多此一举,阅读别人的代码就是这样,有时候真的不懂写代码的人当时怎么想的。 例如有这么一段: 用户输入一个名字&#…...

信道编码:Matlab RS编码、译码使用方法
Matlab RS编码、译码使用方法 1. 相关函数 在MATLAB中进行RS编码的过程可以使用rsenc()函数或者comm.RSEncoder()函数。 1.1 rsenc()函数使用方法 在MATLAB中帮助中可以看到有三种使用形式,分别为 code rsenc(msg,n,k) code rsenc(msg,n,k,genpoly) code rs…...

数据结构第六章 图 6.1-6.3 错题整理
6.1 6.C 加上一个点实现非连通 去除每个边都是一颗不同的生成树 一共n条边 13.C n个顶点、e条边的无向图,森林。树的角度看,除了根节点没有一条边与其对应,其他顶点都对应一条边,用顶点-边得出有多少颗树 14.A II 等于 也可以…...

12 MFC常用控件(一)
文章目录 button 按钮设置默认按钮按下回车后会响应禁用开启禁用设置隐藏设置显示设置图片设置Icon设置光标 Cbutton 类创建按钮创建消息单选按钮多选按钮 编辑框组合框下拉框操作 CListBox插入数据获取当前选中 CListCtrl插入数据设置表头修改删除 button 按钮 设置默认按钮按…...

Springboot搭配Redis实现接口限流
目录 介绍 限流的思路 代码示例 必需pom依赖 自定义注解 redis工具类 redis配置类 主拦截器 注册拦截器 介绍 限流的需求出现在许多常见的场景中: 秒杀活动,有人使用软件恶意刷单抢货,需要限流防止机器参与活动 某 api 被各式各样…...

php中的双引号与单引号的基本使用
字符串,在各类编程语言中都是一个非常重要的数据类型 网页当中的图片,文字,特殊符号,HTMl标签,英文等都属于字符串 PHP字符串变量用于存储并处理文本, 在创建字符串之后,我们就可以对它进行操作。我们可以直接在函数中使用字符串,或者把它存储在变量中 字…...

【Neo4j教程之CQL命令基本使用】
🚀 Neo4j 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,C…...

Apikit 自学日记:发起文档测试-TCP/UDP
进入某个TCP/UDP协议的API文档详情页,点击文档上方 测试 标签,即可进入 API 测试页,系统会根据API文档的定义的求头部、Query参数、请求体自动生成测试界面并且填充测试数据。 填写/修改请求参数 1.1设置请求参数 与发起HTTP协议测试类似&am…...

坚鹏:中国邮储银行金融科技前沿技术发展与应用场景第1期培训
中国邮政储蓄银行金融科技前沿技术发展与应用场景第1期培训圆满结束 中国邮政储蓄银行拥有优良的资产质量和显著的成长潜力,是中国领先的大型零售银行。2016年9月在香港联交所挂牌上市,2019年12月在上交所挂牌上市。中国邮政储蓄银行拥有近4万个营业网点…...

HBase分布式安装配置
首先 先安装zookeeper ZooKeeper配置 解压安装 解压 tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt 改名 mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7 在根目录下创建两个文件夹 mkdir Zlogs mkdir Zdata配置zoo.cfg文件,在解压后的ZooKeep…...

Microsoft365有用吗?2023最新版office有哪些新功能?
office自97版到现在已有20多年,一直是作为行业标准,格式和兼容性好,比较正式,适合商务使用。包含多个组件,除了常用的word、excel、ppt外,还有收发邮件的outlook、管理数据库的access、排版桌面的publisher…...

结构体的定义与实例化
结构体的定义与实例化 在Go语言中,结构体是一种用户自定义的数据类型(复合类型,而非引用类型),可以用来封装多个不同类型的数据成员。结构体的定义和实例化分别如下: 结构体的定义 结构体的定义使用关键…...