项目上线出Bug!为什么你作为测试没测出来?

news2025/2/23 23:00:19

材料收集

  你服务于一个数据库查询业务,某次客户现场反馈查询某个语句长时间未返回结果,耗时已经远远超过项目对外提供的性能报告承诺给用户最长查询时间。

                问题和相关日志已经传递回来,开发人员进行原因分析和故障修复,测试人员进行故障复盘和测试改进。

  这一切看起来都在正常的进行下去,但是作为测试人员的你是不是会不自主地冒出这么一句:为什么我没有测试出来呢?

  那么,为什么会没有测试出来呢?

故障复盘

  “没有测试出来”剖析最根本的原因无非可能有两点:

       1、缺少对应的测试用例;

  2、具有相应的测试用例,但测试环境与客户现场相差太大。

  那么,你可能还会继续问自己:为什么会缺少对应的测试用例呢?

缺少对应的测试用例

  至于测试用例的缺失,从客户需求——>需求方案设计——>开发方案设计——>开发实现——>需求测试——>需求交付。

  整个流程来看:缺失相应使用场景的客户需求,或者需求方案设计有误,或者开发方案设计有误,或者开发实现偏差等等都可能导致测试人员在设计测试用例时,缺少相应用例的设计和测试执行,从而未能发现类似故障。

  除此之外呢,有相应测试测试用例,还是因为测试环境与客户现场环境相差太大而未能发现类似故障。

测试环境与客户现场相差太大

  为什么会存在测试环境与客户现场环境相差太大?

  就数据库查询业务而言。测试环境的数据存储量有可能遥遥不及真实用户环境,也可能测试环境的测试数据与真实数据不一样(比如某个存储字段的长度设置;比如存储的字段内容解析后包含特殊字符、乱码等等)……这些都是测试环境与客户现场不一致的可能情况。

  梳理完测试缺漏后,下一步理所当然的是进入用例补充和模拟客户环境稳定性测试。

  可是,除了补充当前故障对应的测试用例之外,我们还能延展些什么呢?!

放大或复制用户行为

  不管是开发人员或测试人员,我们都应该珍惜接触现场日志的机会(当然首要的是需要保密不外传),因为我们可以从日志中窥探到用户使用习惯或产品使用方式,从而将这些行为或习惯复制到我们的测试用例中,亦或者在测试中放大用户行为或习惯。

复制用户行为

  什么是复制用户行为?如何复制用户行为?

  复制用户行为在这里指的是,直接将获取到的用户使用产品方式在内部测试环境重现。比如:复现用户的某个数据库查询行为,select * from xx where ……

  但是值得注意的是:

  1)测试环境数据和真实用户环境可能存在较大的差异(比如:测试环境的数据库不存在某个字段abc,而真实用户行为查询却使用到了该字段abc),我们需要根据自己的测试环境进行适当的调整。

  就数据库查询业务为例,这类调整包括但不限于:删除不存在的字段查询,修改对应的字段值为测试环境的值查询……

  2)获取到的用户行为有限,无法支撑大量的查询比对(比如性能查询,统计数据库某类查询行为的耗时均值)。

  这个问题应该是可以预见的,毕竟我们能够接触到的用户日志或采集到的用户行为是有限的。

  尤其是针对第2)个问题,放大用户行为就成了我们的可选项。

放大用户行为

  放大用户行为在这里指的是,将获取到的用户行为作为样本,复制多份或在用户行为中增删其他行为。

  比如:将select * from index where id=’123’的用户行为复制100份,替换其中的id值为测试环境中不同的值;或以select * from index where id=’123’为基础样本,增加行为数据如select * from index where id=’123’ or id=’456’等。

  复制或放大用户行为,对我们的测试有什么意义呢?!——可以让我们更接近用户的使用方式,产生更多的测试用例,扩大测试覆盖率。

再来一点思考

作为测试人员,由于项目的复杂性和时间的限制,可能会出现无法覆盖所有情况的情况,导致一些Bug被忽略或没有被发现。以下是我对于项目上线出现Bug的总结和反思:

  1. 测试用例不充分:在测试过程中,我们可能会漏掉某些测试用例,依赖于自己的经验和直觉来进行测试,从而无法发现潜在的问题。

  2. 不够细心:测试的时候,我们可能会因为疏忽而错过一些重要的细节,这些细节可能是关键的点或异常情况,所以我们需要更加专注和细心地进行测试。

  3. 系统环境不同:有时候,在测试环节中我们使用的软件、硬件环境与真实环境不同,有时甚至版本不同,从而导致无法完全模拟真实环境,因此应该尽可能逼近真实环境进行测试。

  4. 时间不足:在开发周期较短的情况下,测试时间也会很紧张,可能无法达到完整测试的目的,这时候我们可以采取优化测试用例的方法,将主要的测试场景放在前面进行测试。

  5. 沟通不畅:测试人员与开发人员之间的沟通不畅可能会导致一些问题被忽略或测试的方向不正确。所以,我们需要与开发人员随时保持有效的沟通,及时反馈问题和解决方案。

  6. 人为因素:有时候,测试人员的个人情绪或疲劳等因素也可能影响到测试效果,这时我们应该注意自己的心态,保持高效的工作状态。

总之,项目上线出现Bug是一件很正常的事情,我们需要从中吸取经验教训,不断完善测试方法和流程,提高测试质量和效率,确保项目成功上线。

最后:【可能给你带来帮助的教程】

 因此我建立了一个软件测试开发自学团,正在学习测试的小伙伴可以通过点击下面的小卡片

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

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

相关文章

Ubuntu系统denyhosts的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、denyhosts是什么?二、安装denyhosts1.下载安装包2.安装3.配置4.启动5.测试 总结 前言 今天服务器又被攻击了,防火墙也打开了&#…

劝退忠告:外包实在是太坑了,划水三年,感觉人都废了

先说一下自己的情况,专科生,19年通过校招进入杭州某个外包软件公司,干了接近3年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了3年的功…

Linux使用者必备-13款厉害到让人怒赞的工具大揭秘

本文介绍几款 Linux 运维比较实用的工具,希望对 Linux 管理员有所帮助。 1、查看进程占用带宽情况-Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。 下载:http://sourceforge.net/projects/nethogs/files/nethogs…

【MVS+DepthFilter】video-based real-time multi view stereo

1.SVO 半直接视觉里程计 2. SVO2系列之深度滤波DepthFilter 3. SVO(SVO: fast semi-direct monocular visual odometry) 4. svo_note 5. MVSDepthFilter: video-based real-time multi view stereo 6. 作者George Vogiatzis主页 video-based real-time m…

Java版Spring cloud 企业电子招投标系统源码

一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…

Pytorch版本的Ernie Health源码详解

Pytorch版本的Ernie Health源码详解 一、目录架构 二、尝试使用Ernie Health import torch # 查看torch版本 torch.__version__ 1.12.0cpu# 查看设备是否有GPU资源 # device torch.device(cuda:0 if torch.cuda.is_available() else cpu) device cuda if torch.cuda.is_ava…

I.MX6ULL_Linux_驱动篇(37) linux系统定时器

定时器是我们最常用到的功能,一般用来完成定时功能,本章我们就来学习一下 Linux 内核提供的定时器 API 函数,通过这些定时器 API 函数我们可以完成很多要求定时的应用。 Linux内核也提供了短延时函数,比如微秒、纳秒、毫秒延时函数…

Python selenium爬取影评生成词云图

文章目录 问题描述效果截图如下问题分析前期准备完整代码及解释字体素材 问题描述 通过中文分词、过滤停用词、生成词云图等步骤对评论数据进行处理和可视化。 效果截图如下 非常nice 问题分析 该程序需要使用 Selenium 库来模拟浏览器操作,因此需要下载安装 Chr…

@Autowired VS @Resource

一、两者的区别 首先,两者都是通过注解来实现依赖注入 。不同的话有以下几点: Autowired 是 Spring 提供的注解,所以只有 Spring 的 IoC容器 支持该注解。Resource 是 JSR-250 提供的(是 Java 的标准 ),我…

CnOpenData·A股上市公司标准数据

一、数据简介 按照《中华人民共和国标准化法》的定义,标准是指农业、工业、服务业以及社会事业等领域需要统一的技术要求。标准作为一种通用性的规范语言,在合理利用国家资源、保障产品质量、提高市场信任度、促进商品流通、维护公平竞争、保障安全等方面…

Hash算法的特点、应用和实现方法详解

什么是Hash算法?Hash算法,简称散列算法,也成哈希算法(英译),是将一个大文件映射成一个小串字符。与指纹一样,就是以较短的信息来保证文件的唯一性的标志,这种标志与文件的每一个字节…

企业数字化转型必看的6本书

导读 >> 2023年数据产业将为企业带来新的价值增量,成为企业数字化转型的重要突破口。数字化已经成为商业的一种基本常识,未来企业都将是数字化企业。然而在数字化转型话题热议的当下,真正成果显著的企业仍是少数,2023年企业…

如何阻止Windows Update更新Windows 10中的特定设备驱动程序

如果你想禁用Windows 10驱动程序的自动更新,那么方法有的是,但是如果你想禁用特定设备的驱动程序更新,该怎么办呢? 幸运的是,有一种替代方法可以禁用特定设备的驱动程序更新。你可以通过设置组策略“禁止安装与这些设备ID匹配的设备”来实现这一点。 根据微软的说法: …

在简历上写了“精通”后,我差点被面试官问到窒息....

前言 如果有真才实学,写个精通可以让面试官眼前一亮! 如果是瞎写?基本就要被狠狠地虐一把里! 最近在面试,我现在十分后悔在简历上写了“精通”二字… 先给大家看看我简历上的技能列表: 熟悉软件测试理…

阿里云服务器25565端口开通教程(ECS和轻量)

阿里云服务器25565端口怎么开通?ECS云服务器端口在安全组中开启,轻量应用服务器端口在防火墙中打开,我的世界mc服务器依赖25565端口,阿里云服务器网来详细说下云服务器ECS和轻量应用服务器开通25565端口的方法: 云服务…

学成在线项目note

目录 一、index.html 1、头部header 2、轮播图banner 3、精品推荐 4、精品推荐课程 5、footer 二、index.css 1、重要的代码 一、index.html <!-- 网站的首页, 所有网站的首页都叫index.html, 因为服务器找首页都是找index.html --> <!-- 布局: 从外到内, 从上到…

青岛科技大学|物联网工程|物联网定位技术(第三讲)|15:40

目录 物联网定位技术&#xff08;第三讲&#xff09; 1. 试简述C/A码的作用、构成 请画出C/A码生成电路简图并给予原理性的说明 2. 试简述 P码的作用、构成 请画出P码生成电路简图&#xff0c;并给予原理性的说明 3. GPS信号是如何进行伪码扩频与解扩 请画图给予说明 4…

Java的Object类和深拷贝和浅拷贝(面试题)

1.java.lang.Object类的说明 1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类&#xff0c;则默认父类为java.lang.Object类 3.Object类中的功能(属性、方法)就具通用性。 属性&#xff1a;无 方法&#xff1a;equals() / toString() / ge…

图片识别表格的方法有哪些?试试这几个好用的表格识别软件

随着数字化时代的到来&#xff0c;越来越多的公司和个人需要处理大量的表格数据。这些数据往往以图片的格式存在&#xff0c;而手动输入这些数据非常耗费时间和精力。因此&#xff0c;图片识别表格软件正在成为一个不可或缺的工具。那么&#xff0c;图片识别表格软件哪个好呢&a…

SAP从入门到放弃系列之CRP-Part1

从我学习CRP(Capacity Requirement planning)过程&#xff0c;应该能分三部分来总结。这篇就总结一下我学到的基本配置和概念。 温馨提示 &#xff1a;又臭又长的系统配置内容放在了最后的章节。本文分三个部分&#xff0c;工作中心数据和工艺路线创建&#xff0c;生产订单能力…