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

【测试开发】基础篇

在这里插入图片描述

文章目录

  • 【测试开发】基础篇
    • 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.mzph.cn/news/82191.shtml

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

相关文章

ChatGPT:URL编码问题——如何正确进行URL编码以处理特殊字符

ChatGPT:URL编码问题——如何正确进行URL编码以处理特殊字符 报错: URISyntaxException: Malformed escape pair at index 192: http://Center/Question/questionList.html?seaKey%E6%8D%AE%E7%BB%9F%E8%AE%A1%EF%BC%8C%E5%9B%A0%E7%81%AB%E7%81%BE%E6%…

服务器数据恢复-LINUX操作系统下各文件系统误删除/格式化数据的恢复方案

服务器数据恢复环境: 基于EXT2/EXT3/EXT4/Reiserfs/Xfs文件系统的Linux操作系统。 服务器故障: LINUX操作系统下误删除/格式化数据。 服务器数据恢复过程: 1、首先会检测服务器是否存在硬件故障,如果检测出硬件故障,交…

Linux之jar包之启动与停止脚本

Linux之jar包之启动与停止脚本 一、使用说明二、脚本代码 一、使用说明 启动 ./service.sh start关闭 ./service.sh stop二、脚本代码 #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAMEmxy_system-0.0.1-SNAPSHOT.jar # shellcheck disabl…

9.18算法

机器人重物1126 注意编号是方块的,而不是格点的 及如果为n*m的矩阵,需要开(n1)*(m1)的矩阵 //如果没有转向,就是走迷宫,结合记忆化,如果这个点之前走过就不走了 //又转向的话,就用一个变量记录当前转向&…

量化分析革新金融服务软件的三种方式

金融服务软件行业爱死量化分析了。 为什么呢?因为在这个本质上不可预测的行业中,量化分析提供了一种确定性,或者至少是类似于确定性的东西。 市场总是在变动,利润也起伏不定。交易达成了,然后落空,又再次…

Golang Linux 安装与环境变量配置

下载 Go 二进制包 wget https://dl.google.com/go/go1.21.1.linux-amd64.tar.gz 解压文件并将其移至 /usr/local 目录 sudo tar -C /usr/local -xzf go1.20.1.linux-amd64.tar.gz -C 选项解压文件到 /usr/local 目录,查看 /usr/local/go 目录的内容 将 Go 二进…

19 视图定义 union 是根据第一个 select 字段列表顺序,来进行 merge 的

前言 这个问题主要是 在之前存在这样的一个问题, 在生产环境上面 按照 我的直观理解, mysql 应该是根据 key 进行 merge, 所以 select 的顺序应该是 “不重要”??, 但是 结果我理解错了 然后 线上的查询也出现了问题, 发现很奇怪的问题, 明明 key01 列 是 id, 但是有一部…

深度学习——线性神经网络一

深度学习——线性神经网络一 文章目录 前言一、线性回归1.1. 线性回归的基本元素1.1.1. 线性模型1.1.2. 损失函数1.1.3. 解析解1.1.4. 随机梯度下降1.1.5. 用模型进行预测 1.2. 向量化加速1.3. 正态分布与平方损失1.4. 从线性回归到深度网络 二、线性回归的从零开始实现2.1. 生…

Java面试题整理(带答案)

目录 TCP和UDP的区别 get和post的区别 Cookie和session的区别 Java的基本类型有哪些? 抽象类和接口区别? 对于堆栈的理解 和equals区别 如何理解Java多态? 创建线程都有哪些方式 脏读、不可重复度、幻读都是什么? Jav…

数据治理-数据仓库环境

数据仓库环境包括一系列组织起来以满足企业需求的架构组件,从源系统流动到数据暂存区,数据可以在这里被清晰,当数据集成并存储在数据仓库或操作数据存储中时,可以对其进行补充丰富。在数据仓库中,可以通过数据集市或数…

多线程详解(上)

文章目录 一、线程的概念1)线程是什么2)为甚要有线程(1)“并发编程”成为“刚需”(2)在并发编程中, 线程比进程更轻量. 3)线程和进程的区别 二、Thread的使用1)线程的创建继承Thread…

[deeplearning]pytorch实现softmax多分类问题预测训练

写在前面:俺这两天也是刚刚加入实验室,因为之前的学习过程中用到更多的框架是tensorflow,所以突然上手pytorch多少有些力不从心了。 这两个框架的主要区别在与tensorflow更偏向于工业使用,所以里面的很多函数和类都已经封装得很完…

算法通关村-----链表中环的问题

环形链表 问题描述 给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中…

Reactor 第十二篇 WebFlux集成PostgreSQL

1 引言 在现代的应用开发中,数据库是存储和管理数据的关键组件。PostgreSQL 是一种强大的开源关系型数据库,而 WebFlux 是 Spring 框架提供的响应式编程模型。本文将介绍如何使用 Reactor 和 WebFlux 集成 PostgreSQL,实现响应式的数据库访问…

【chrome扩展开发】消息通讯之onMessage消息监听

前言 chrome.runtime.onMessage.addListener 是 Chrome 扩展程序中用于监听其他模块发送的消息并做出响应的 API 当从扩展进程 (by runtime.sendMessage) 或内容脚本 (by tabs.sendMessage)发送消息时触发 语法 chrome.runtime.onMessage.addListener(callback: function, )ca…

使用Scrapy构建高效的网络爬虫

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 Scrapy是一个强大的Pyth…

python虚拟环境(venv)

一、什么是python环境 首先要知道什么是python环境? Python环境主要包括以下内容: 解释器 python.exe (python interpreter,使用的哪个解释看环境配置) Lib目录 标准库 第三方库:site-pakages目录,默认安装第三方…

题目:2859.计算 K 置位下标对应和

​​题目来源: leetcode题目,网址:2859. 计算 K 置位下标对应元素的和 - 力扣(LeetCode) 解题思路: 逐个计算下标是否符合要求即可。 解题代码: class Solution {public int sumIndicesWithK…

敏捷开发工具:提升软件研发效率的重要利器

在当今的软件开发领域,敏捷开发方法越来越受到推崇。敏捷开发的核心是灵活应对需求变化,以快速迭代的方式不断优化产品。为了助力敏捷开发的实施,各种敏捷开发工具应运而生。 本文将介绍几种常用的敏捷开发工具,阐述其特点、应用…

18 Python的sys模块

概述 在上一节,我们介绍了Python的os模块,包括:os模块中一些常用的属性和函数。在这一节,我们将介绍Python的sys模块。sys模块提供了访问解释器使用或维护的变量,以及与解释器进行交互的函数。 通俗来讲,sy…