【测试开发】基础篇 · 专业术语 · 软件测试生命周期 · bug的描述 · bug的级别 · bug的生命周期 · 处理争执

news2024/12/22 22:05:54

【测试开发】基础篇

在这里插入图片描述

文章目录

  • 【测试开发】基础篇
    • 1. 软件测试生命周期
      • 1.1 软件生命周期
      • 1.2 软件测试生命周期
    • 2. 描述bug
    • 3. 如何定义bug的级别
      • 3.1 为什么要对bug进行级别划分
      • 3.2 bug的一些常见级别
    • 4. bug的生命周期
    • 5. 产生争执这么怎么办(处理人际关系)
    • 6. 如何开始第一次测试
    • 7. 测试的执行和bug管理
    • 8. 如何发现更多bug

【测试开发】基础篇

1. 软件测试生命周期

1.1 软件生命周期

  1. 需求分析
  2. 计划
  3. 设计
  4. 编码
  5. 测试
  6. 运行维护
  7. 停服

博文链接:【测试开发】概念篇 · 测试相关基础概念 · 常见开发模型 · 常见测试模型_s:103的博客-CSDN博客

1.2 软件测试生命周期

  1. 需求分析

    • 需求是否完整,需求是否正确
  2. 测试计划

    • 确定软件由谁测试,什么时候测试,什么时候结束测试,测试哪些模块
  3. 测试设计、测试开发

    • 写测试用例(手工测试用例,自动化测试用例),编写测试工具
  4. 测试执行

    • 执行测试用例
  5. 测试评估

    • 测试人员产生一个测试报告

    测试报告:

    在这里插入图片描述

没有这个报告,项目是不能上线的,如果上线出了问题,一定是上线的那个人背锅!

2. 描述bug

博文链接:【测试开发】概念篇 · 测试相关基础概念 · 常见开发模型 · 常见测试模型_s:103的博客-CSDN博客

在这里插入图片描述

bug的描述是很重要的,如果你只是指出开发人员的代码的一个bug,让他现在就改,他不得骂死你,所以你应该描述清清楚楚这个bug

具体描述bug:

  1. 在哪个版本下发现问题
    • 开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障
    • 并且版本的表示也有利于统计和分析每个版本的质量
  2. 在哪个环境下发现问题
  • 博客系统 => 127.0.0.1访问,但是别人访问不了,我们要部署到服务器上,这样别人就访问到了,这就是两个不同的环境
  1. 重现故障

    • 要求测试人员描述好,bug的出现流程,否则开发可能会找不到bug,说你乱提bug
    • 描述问题重现的最短最清楚的步骤

    例如以下bug描述:

    1. 在短信列表中,选择短信,进行删除,删除失败了!
    2. 在短信列表中,选择一条短信,进行查看,在查看页面,进行删除,删除失败

    显然,后者的描述更加精准,因为列表页和详情页删除是不一样的地点!

    我们要准确描述bug如何出现的!

  2. 预期行为的描述

    • 要让开发人员指导怎么样才是正确的,尤其要以用户的角度来描述程序的行为是怎样的。如果是依据需求提出的故障,能写明需求的来源是最好的
    • 要相信:测试人员是最懂需求的。
  3. 错误行为的描述

    • 描述错误的现象。crash等可以上传log,UI问题可以有截图。
  4. 其他

    • 某些公司会有一些其他的要求,例如故障的分类:功能故障,界面故障,兼容性故障等
    • bug复现的前置条件、bug给谁…
    • 有些有==优先级的分类==,严重影响测试需要开发人员优先修改的,可以设置优先级为高
  5. 不要把多个bug放到一起

    • 在无法确认是同一段代码造成的故障时,不要将bug放在一起提交

3. 如何定义bug的级别

不同公司可能不一致~

3.1 为什么要对bug进行级别划分

现在有一个项目要在9点上线

此时还有三个bug,但是来不及了,三个bug不能都修复好,所以我们需要给bug进行级别划分,影响更严重的我们要优先处理~

3.2 bug的一些常见级别

  1. Blocker(崩溃)

    • 阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题
    • 如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等(该问题在测试中较少出现,一旦出现应立即中止当前版本测试)。
  2. Critical(严重)

    • 系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试
    • 功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题、稳定性等
    • 如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序接口错误,数值计算统计错误等(该等级问题出现在不影响其他功能测试的情况下可以继续该版本测试)。
  3. Major(一般/主要)

    • 功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性
    • 如:操作时间长、查询时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多等(该问题实际测试中存在最多)
  4. Minor(次要)

    • 界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等
    • 如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,用户体验感受不好,可以优化性能的方案等(此类问题在测试初期较多,优先程度较低;在测试后期出现较少,应及时处理)

强调:

  • 如果发现崩溃级别的bug,那么此时我们就需要停止测试,测试打回,测试打回特别恶劣!
    • 写一个报告,打回给开发,开发就需要进行修复,修复完之后自己得仔细地测试一下,不然想着再次被打回吗

4. bug的生命周期

bug状态转换图:

在这里插入图片描述

  1. 缺陷状态变更流程每个项目团队的实际做法可能不大一样
  2. 并且需要结合实际的开发流程和协作流程来使用

5. 产生争执这么怎么办(处理人际关系)

背景:某一天萌新测试人员(QA-- 测试(QUALITY ASSURANC)发现一个bug,提交给老油条开发人员(RD),但是开发脸皮很厚,一直没处理

前提:一定不能吵架

  1. 先从自身出发,测试人员要保证自己操作没有问题,确保自己对需求理解的没有问题
  2. 沟通层面,好好说话,高情商礼貌去交流
  3. 站在用户角度考虑问题
    • 应该让开发人员了解到Bug对用户可能造成的困扰,这样才能促使开发人员 更加积极地、高质量地修Bug。在争执时,可以问一句:如果你是用户,你可以接受么?
    • 例如,删除某一篇文章,但是却把所有的文章都删了,用户直接炸毛了呀!
  4. 不光要发现问题,提出解决问题的方案

如果你都做到这份上了,开发人员还是不好好处理,就可以这样:

  1. 拉上相关人(那个开发和他的领导、我的领导、产品经理PM…)开一个第三方会议
    • 开会之前:但是我(测试)一定要明确问题产生原因,问题是什么,解决方案是什么
    • 开会之后:问题要不要解决,如果要解决,何时解决,谁去解决,知道这些才能散会
    • 有时确实不得不开,否则自己的领导就要追责你了~

6. 如何开始第一次测试

能自己解决就尽量自己解决!

  1. 充分理解需求
    • 文档(产品文档+ 技术文档)
    • 项目功能问题可以去问产品,模块底层如何实现问开发
    • 尽可能多地参加各种项目会议
    • 阅读已有地测试方案和测试案例
    • 熟悉项目所使用的测试管理工具、配置管理工具、获取对应的地址和登录方式
    • 阅读旧有的bug库,了解系统功能,尤其是团队保持一致的bug优先级规定
    • 了解公司的规范要求,特别是用例编写,用例执行规范…
  2. 确定测试计划
  3. 执行测试
    • bug开发修复了之后一定要验收!
  4. 项目上线+ 维护

7. 测试的执行和bug管理

在这里插入图片描述

8. 如何发现更多bug

  1. 软件测试同样存在二八原则80%的故障集中于20%的模块
    • 如果某部分问题较多,加强测试广度和深度!
  2. 开发人员也存在二八原则80%的故障集中于20%的开发人员
    • 如果某些开发人员的bug较多,加强他开发模块的测试广度和深度!
  3. 多进行逆向思维和发散性的思维
    • 依赖测试人员的经验多去写测试用例,多看优秀的人写的测试用例
  4. 不要局限于用例和需求文档
  5. 尽早介入项目, 不要等到开发的差不多了再介入项目
    • 尽早介入需求,就会尽早理解需求

和深度!

  1. 多进行逆向思维和发散性的思维
    • 依赖测试人员的经验多去写测试用例,多看优秀的人写的测试用例
  2. 不要局限于用例和需求文档
  3. 尽早介入项目, 不要等到开发的差不多了再介入项目
    • 尽早介入需求,就会尽早理解需求

文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆
重点:软件测试生命周期 · bug的描述 · bug的级别 · bug的生命周期 · 处理争执


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

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

相关文章

启山智软/电商商城100%开源

介绍 想要了解代码规范,学习商城解决方案,点击下方官网链接联系客服 作者:启山智软 官网及博客:启山智软官网、CSDN、掘金、gitee 简介:启山智软目前开发了全渠道电商商城系统,本商城是基于SpringCloud的商…

阿里云配置炼丹环境全流程 (从购买云服务器到成功运行代码)

自己的小破笔记本实在炼不动高品阶的丹药, 不得已用了云服务器. 捣鼓了一天, 终于是成功把代码在云服务器上跑起来了. 将这一过程记录一下, 方便之后参考. 第一步, 创建云服务器实例 找到控制台, 点 “云服务器 ECS”, 然后点击创建实例. 会出现以下界面: 这里如何选择合适的…

竞赛 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计…

RocketMQ编程使用和应用场景

RocketMQ消息模型 一、RocketMQ客户端基本使用 引入RocketMQ依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>4.9.5</version> </dependency>ncy> RocketMQ…

哈希及哈希表的实现

目录 一、哈希的引入 二、概念 三、哈希冲突 四、哈希函数 常见的哈希函数 1、直接定址法 2、除留余数法 五、哈希冲突的解决 1、闭散列 2、开散列 一、哈希的引入 顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c;因此在查找…

【Java 基础篇】Java标准输入流详解:读取用户输入的完整指南

Java是一门流行的编程语言&#xff0c;常用于开发各种类型的应用程序&#xff0c;包括控制台应用、桌面应用、Web应用等。在这些应用中&#xff0c;与用户进行交互是一项重要的任务。本文将重点介绍Java标准输入流&#xff0c;它是Java程序中用于从用户获取输入的关键组成部分。…

【unity小技巧】Unity 存储存档保存——PlayerPrefs、JsonUtility和MySQL数据库的使用

文章目录 前言PlayerPrefs一、基本介绍二、Demo三、优缺点 JsonUtility一、基本使用二、Demo三、优缺点 Mysql&#xff08;扩展&#xff09;完结 前言 游戏存档不言而喻&#xff0c;是游戏设计中的重要元素&#xff0c;可以提高游戏的可玩性&#xff0c;为玩家提供更多的自由和…

【JavaScript】video标签配置及相关事件:

文章目录 一、标签配置&#xff1a;二、事件&#xff1a;三、案例&#xff1a; 一、标签配置&#xff1a; 标签名描述src要播放的路径地址autoplay是否自动播放&#xff0c;默认值是false,&#xff08;Boolean&#xff09;loop是否循环播放&#xff0c;默认值是false,&#xf…

Hbase工作原理

Hbase&#xff1a;HBase 底层原理详解&#xff08;深度好文&#xff0c;建议收藏&#xff09; - 腾讯云开发者社区-腾讯云 Hbase架构图 同一个列族如果有多个store&#xff0c;那么这些store在不同的region Hbase写流程&#xff08;读比写慢&#xff09; MemStore Flush Hbas…

arm day2(9.15)数据操作指令,跳转指令,特殊功能寄存器指令,+XMind

作业 1.求最大公约数&#xff1a; .text .global _start _start:mov r0,#0x9mov r1,#0x15bl Loop Loop:cmp r0,r1 比较r0寄存器和r1寄存器的中的值beq stop 当两数相同时,退出程序subhi r0,r0,r1 r0>r1 r0 r0 - r1subcc r1,r1,r0 r0<r1 r1 r1 - r0mov pc,lr 恢复现…

自动驾驶行业观察之2023上海车展-----整体发展趋势

1.行业趋势 新能源势不可挡。 本次车展上首发了150多款新车&#xff0c;约有100款是新能源车;跨国车企全面电动化&#xff0c;但日韩系布局相对缓慢&#xff1b; 2.自主品牌 品牌持续向上 本届车展自主品牌开始疯狂向高端内卷&#xff0c;高端化态度坚决 &#xff08;包括仰…

Modbus RTU(Remote Terminal Unit)与RS-485协议介绍(主站设备(Master)、从站设备(Slave))

文章目录 Modbus RTU与RS-485协议介绍一、引言二、Modbus RTU 协议介绍2.1 Modbus RTU 协议简介2.2 Modbus RTU 协议帧结构主站设备、从站设备与从站设备地址2.3 Modbus RTU 协议举例 三、RS-485 协议介绍3.1 RS-485 协议简介3.2 RS-485 物理连接方式3.3 RS-485 与 Modbus RTU …

代码片段的理解

1.后面的error直接走的是失败的回调 例如:权限不足,可以理解为服务器的一种形式 2.前面走的是成功的回调 但是也可能不对,例如在传过去的参数,在数据库查询不了这个值,传递过来的值不一样&#xff0c;这样它也是走的成功回调。

提升前端开发效率:基于vue的van-radio-group组件封装指南

前言 vant 作为一款流行的 ui 框架&#xff0c;其中&#xff0c;van-radio-group 组件是一个常用的单选框组件&#xff0c;但有时我们需要根据项目需求进行定制化封装。本文将介绍如何基于 vue 框架封装 van-radio-group 组件&#xff0c;让我们一起来探索吧&#xff01; 封装文…

Python网络编程:构建网络应用与通信

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 Python是一门强大的编程…

node查询七牛云上的文件信息

const qiniu require(qiniu) const {getQiNiuKey, } require(./tools)//#region 七牛云 const { accessKey, secretKey } getQiNiuKey() const mac new qiniu.auth.digest.Mac(accessKey, secretKey) let config new qiniu.conf.Config() // 空间对应的机房 config.zone …

目标跟踪方向开源数据集资源汇总

Temple Color 128 数据集下载链接&#xff1a;http://suo.nz/2dKEEL 本数据集包含一大组 128 种颜色序列&#xff0c;带有基本事实和挑战因素注释&#xff08;例如&#xff0c;遮挡&#xff09; NfS高帧率视频数据集 数据集下载链接&#xff1a;http://suo.nz/34o8df 第一个…

旺店通·企业奇门与金蝶云星空对接集成订单查询连通销售订单新增(旺店通销售-金蝶销售订单-小红书)

旺店通企业奇门与金蝶云星空对接集成订单查询连通销售订单新增(旺店通销售-金蝶销售订单-小红书) 接通系统&#xff1a;旺店通企业奇门 慧策最先以旺店通ERP切入商家核心管理痛点——订单管理&#xff0c;之后围绕电商经营管理中的核心管理诉求&#xff0c;先后布局流量获取、会…

react-route的路由

React-Router是一个基于React的强大路由库&#xff0c;它可以帮助我们在React应用中实现页面之间的跳转和路由管理。本文将详细介绍React-Router的路由功能、常用功能模块、路由传参和路由嵌套&#xff0c;并提供相关代码和解释。 路由功能 React-Router通过管理URL和组件的映…

Vue3 ~

变动 实例 const app new Vue({}) Vue.use() Vue.mixin() Vue.component() Vue.directive()const app Vue.createApp({}) app.use() app.mixin() app.component() app.directive()createApp 代替 new Vue 允许多个根标签 createStore 代替 Vue.use(Vuex) createRouter 代替…