自动化测试篇--BUG篇

目录

一.软件测试的生命周期

二.bug是什么?

三.如何描述一个bug?

四.bug的级别

五.bug的生命周期

六.测试与开发产生争执怎么办?(重要!!!)


一.软件测试的生命周期

软件测试人员不仅要具备开发能力、测试能力,最好具有一定的产品分析能力

需求分析:测试人员进行技术可行性的分析,业务是否会出现逻辑冲突导致用户的流失(例如购物车本来最多能存放50件商品,现在改成最能只能存放10件),再根据产品分析分析出购物车允许存放数量应该增加而不是减少

测试计划:顾名思义,计划时间内容

测试设计与开发:根据需求、技术文档等编写测试用例(方法+工具+形式)

测试执行:开始测试

测试评估:测试执行结束后,不能认为项目100%的问题都被发现了。评估一下当前项目测试是否通过,测试了项目的哪些方面,是否会有遗留的bug

运行维护:产品上线以后,及时发现问题,也正因此软件测试人员一般也是最了解产品的人员,一般演示会议也是由软测人员来进行


上线(本地写的代码提交到码云上/部署到服务器上,称为上线流程):

实际工作中,分为4个流程 “ 沙盒->小流量->全流量->全线上 ”

因为上线过程中可能存在问题,线下测试没有问题线上可能会出现问题(例如模块、单元的冲突)

  1. 沙盒:企业内部的线上环境测试,可以供内部人员进行测试
  2. 小流量:部分线上真实用户可以使用到,测试人员要在线上手动测试,还要观察有没有错误日志(游戏内测)
  3. 全流量:所有的真实用户都可以用到(游戏demo,未完全优化好的产品)
  4. 全线上:上线前的所有测试流程全部完毕,可以上架steam(doge)

二.bug是什么?

定义:⼀个计算机bug指在计算机程序中存在的⼀个错误(error)、缺陷(flaw)、疏忽(mistake)或者故障 (fault),这些bug使程序⽆法正确的运⾏。Bug产⽣于程序的源代码或者程序设计阶段的疏忽或者错误。

1.当且仅当规格说明是存在的并且正确,程序与规格说明之间的不匹配才是错误。

一切都要以需求出发,即验证软件产品的特性是否符合用户的需求;根据用户需求创造出的测试用例,如果测试执行后获得的结果与预期不符,那么就能称为一个bug

2.当需求规格说明书没有提到的功能,判断标准以最终⽤⼾为准:当程序没有实现其最终⽤⼾合理预期的功能要求时,就是软件错误。

就比如一个界面做得不好看,字体太小但用户群以老年人为主;这种时候倘若规格说明书中没有明确提到,那么我们还是以用户需求为主

三.如何描述一个bug?

bug描述:浏览器打开链接失败

该描述下,没有明确说明哪个浏览器,失败的具体表现是什么,对于开发⼈员来说⽆法捕捉到更多有效的信息,会造成沟通效率低下,⼯作质量低下等问题。

描述bug的基本要素:问题出现的版本、问题出现的环境、问题出现的步骤、预期结果、实际结果

版本和环境没有强区分,就算把浏览器版本写在环境里也是可以的,只要能够给上关键信息供工作人员去复现可以实现,但也不能说把软件版本写在环境里

四.bug的级别

通过定义bug的级别,能够明确看出问题的严重程度。⼯作中开发⼈员通常需要按照bug的级别来分配 优先级来处理bug,除此之外,通过bug级别也能够体现出开发⼈员的开发质量。

bug级别⼀般分为:崩溃、严重、⼀般、次要(有些公司可能会用P0、P1、P2、P3代替)

  • 崩溃:阻碍开发或测试的问题,造成闪退、死循环等……
  • 严重:主要功能部分丧失(例如一款购物软件,可以打开软件以及添加商品到购物车,但无法下单支付)
  • 一般:功能没有完全实现但是不影响使用(例如一款搜索引擎,必须完整打出想要搜索的内容才能搜索出结果,没有搜索关键词)
  • 次要:界面、性能缺陷(抢票的时候提示抢票的人太多了,无法进行抢票)

定义bug的级别意义在哪?

1)评估程序员的开发能力

2)年终奖评定

3)bug修复的优先级

五.bug的生命周期

测试⼈员在执⾏测试的过程中如有发现bug,需要在对应的bug管理平台来创建bug(bug⽣命起 源),创建好的bug需要被开发⼈员修复,以及测试⼈员的持续跟踪和测试。

  • New:新发现的Bug,未经评审决定是否指派给开发⼈员进⾏修改。
  • Open:确认是Bug,并且认为需要进⾏修改,指派给相应的开发⼈员。
  • Fixed:开发⼈员进⾏修改后标识成修改状态,有待测试⼈员的回归测试验证。
  • Rejected:如果认为不是Bug,则拒绝修改。
  • Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。
  • Closed:修改状态的Bug经测试⼈员的回归测试验证通过,则关闭Bug。
  • Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发⼈员重新修改。

无效的bug:open->closedopen->rejected->closed

如果时间急迫,bug又是次要级别的时候,可以和无效bug同样的处理方式

六.测试与开发产生争执怎么办?(重要!!!)

1.先检查⾃⾝,是否bug描述不清楚

反省自己,是不是测试的时候出现了误操作、bug描述不够清晰

2.站在用户角度考虑问题

功能正常只是测试的一部分,还需要考虑用户的使用感受

但也要三思而后行,如果钻牛角尖提出太多bug容易让开发人员恼火

3.bug定级要有理有据

一个次要bug定级定了严重,包会让开发人员感到难受的(毕竟和开发人员的年终奖有关)

4.提高自身技术,做到不仅能解决问题还能给出解决方案

5.bug评审

如果一个bug是会严重影响到用户体验的,但开发人员拒不修改,这个时候就可以召开bug评审了

至少要有测试代表、开发代表以及产品代表三方面参加

主要解决如何处理问题、分析缺陷产生的原因并找出预防对策

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

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

相关文章

Solidity智能合约基础

基础学习使用 remix:ide Remix - Ethereum IDE evm:ethreum virtual machine evm字节码 强类型脚本语言 compile >evm bytescode >evm hello的样例 声明的关键字:contract // SPDX-License-Identifier: MIT pragma solidi…

Unity跨平台超低延迟的RTSP/RTMP播放器技术解析与实战应用

✳️ 引言:为什么说 Unity 中的视频能力是“可视化神经元”? 随着“可视化 实时性”成为工业数字化的关键支撑,Unity 正从传统游戏引擎,演进为数字孪生系统、智能机器人中控、虚拟交互平台、XR 可视引擎等领域的底层核心。它不再…

python学智能算法(三十三)|SVM-构建软边界拉格朗日方程

【1】引用 在前序学习进程中,我们初步了解了SVM软边界,今天就更进一步,尝试构建SVM软边界的拉格朗日函数。 【2】基本问题 在SVM软边界中,我们已经获得此时的最优化几何距离的表达式: fmin⁡12∣∣w∣∣2C∑i1nξif…

【YOLOv5】

Focus模块:早期再yolov5版本提出,后期被常规卷积替换,作用是图像进入主干网络之前,进行隔行隔列采样,把空间维度堆叠到通道上,减少计算量。 SPPF:SPP的改进版本,把SPP的不同池化核改变为K 5 的…

Pytest项目_day05(requests加入headers)

headers 由于每个请求都需要加入一些固定的参数,例如:cookies、user-agent,那么将这些固定参数放入URL或params中会显得很臃肿,因此一般将这些参数放在request headers中headers的反爬作用 在豆瓣网站中,如果我们不加入…

安全引导功能及ATF的启动过程(四)

安全引导功能及ATF的启动过程(四) ATF中bl31的启动 在bl2中触发安全监控模式调用后会跳转到bl31中执行,bl31最主要的作用是建立EL3运行态的软件配置,在该阶段会完成各种类型的安全监控模式调用ID的注册和对应的ARM核状态的切换&am…

从手工到智能决策,ERP让制造外贸企业告别“数据孤岛“降本增效

在全球化竞争加剧的当下,制造型外贸企业正面临订单碎片化、供应链复杂化、合规风险上升等多重挑战。数字化转型已成为企业突破增长瓶颈、构建核心竞争力的必选项。然而,许多企业在推进过程中因选型不当陷入“系统孤岛”“数据失真”“流程低效”等困境。…

DMETL简单介绍、安装部署和入门尝试

一、DMETL的介绍1.1 概述我们先来简单了解一下DMETL。DMETL是什么?说的简单一点,DMETL一款数据处理与集成平台;从功能来说,那DMETL就是对数据同步、数据处理以及数据交换共享提供一站式支持的平台;从它的意义来说&…

NLP 人工智能 Seq2Seq、K-means应用实践

基于Java和人工智能的Web应用 以下是基于Java和人工智能的Web应用实例,涵盖自然语言处理、计算机视觉、数据分析等领域。这些案例结合了沈七星AI或其他开源框架(如TensorFlow、Deeplearning4j)的实现思路,供开发参考: 自然语言处理(NLP) 1. 智能客服系统 使用Java的Op…

Docker 从入门到实战(一):全面解析容器化革命 | 2025 终极指南

2025 年,全球容器市场规模突破 200 亿美元,超过 80% 的企业生产环境运行在容器之上。掌握 Docker 已成为开发、运维乃至架构师的核心竞争力。本文带你彻底搞懂 Docker 的底层逻辑与核心价值! 一、Docker 是什么?为什么它能改变世界? 想象一下:你开发时运行完美的 Pytho…

Lazada东南亚矩阵营销破局:指纹手机如何以“批量智控+数据中枢”重构运营生态

在Lazada以“超级APP”战略渗透东南亚6国市场的进程中,商家正陷入一个结构性矛盾:如何用有限人力高效管理10个国家账号,却不被数据孤岛拖垮营销效率,更不因账号关联风险引发平台封禁?传统多账号运营依赖“人手一台设备…

操作系统: 线程(Thread)

目录 什么是线程(Thread)? 线程与进程之间的关系 线程调度与并发执行 并发(Concurrency)与并行(Parallelism) 多线程编程的四大核心优势(benefits of multithreaded programmin…

Uber的MySQL实践(一)——学习笔记

MySQL 是Uber数据基础设施的核心支柱,支撑着平台上大量关键操作。Uber 拥有一套庞大的 MySQL 集群,如何构建一个控制平面来管理如此大规模的 MySQL 集群,并同时确保零宕机、零数据丢失是一个十分有挑战性的问题。下面重点介绍 Uber 的 MySQL …

腾讯云EdgeOne产品深度分析报告

一、产品概述腾讯云EdgeOne是腾讯云推出的新一代边缘安全加速平台,集成内容分发网络(CDN)、Web应用防火墙(WAF)、DDoS防护、Bot管理、API安全及边缘计算能力,致力于为企业提供一站式安全加速解决方案。该平…

Spring Boot 优雅配置InfluxDB3客户端指南:@Configuration + @Bean + yml实战

前言 想用Java玩转InfluxDB 3?要是还靠写main函数硬编码配置,那就像穿着睡衣开正式会议,实在有点不靠谱。现代Spring开发套路讲究配置和代码分离,讲究优雅和灵活。用@Configuration配合@Bean注解,再加上yml配置文件集中管理连接信息,简直是为代码打扮一身西装,既整洁又…

记录:rk3568适配开源GPU驱动(panfrost)

rk3568采用的GPU是Mali-G52,该型号的GPU已在5.10内核的panfrost驱动中被支持。下面记录下移植过程。 1.内核dts修改: kernel 5.10: arch/arm64/boot/dts/rockchip/rk3568.dtsigpu: gpufde60000 {compatible "rockchip,rk3568-mali", "ar…

SMBIOS详解:系统管理BIOS的工作原理与实现

1. SMBIOS概述 SMBIOS(System Management BIOS)是由DMTF(分布式管理任务组)制定的行业标准,旨在为计算机系统提供统一的硬件信息描述框架。它定义了计算机硬件组件(如处理器、内存、主板等)的标…

8.5 CSS3多列布局

多列布局 CSS3之多列布局columns CSS3中新出现的多列布局(multi-column)是传统HTML网页中块状布局模式的有力扩充。这种新语法能够让WEB开发人员轻松的让文本呈现多列显示。 设置列宽 column-width: | auto 设置对象的宽度;使用像素表示。 auto&#…

Chrome插件快速上手

目录 前言 一、浏览器插件的主要功能 二、插件的工作原理 插件结构 manifest.json icons background.js content-scripts 三、插件例子 popup popup.html popup.js styles.css background.js content-script.js manifest.json 四、其它 前言 本文不做特殊说明…

moment和dayjs

一:moment和dayjs 区别moment 大且可变、维护模式;dayjs 小且不可变、插件化、tree‑shaking 友好。antd v4 用 moment;antd v5 用 dayjs。请在同一项目中统一其一,避免混用导致组件报错。二: antd 4.24.16&#xff08…