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

材料收集

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

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

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

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

故障复盘

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

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’等。

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

再来一点思考

以上所说想必大多测试人员在工作中也是这样做的,但是可能缺少部分的思考和总结。现场反馈的问题和收集的资料对补充我们的测试用例、完善我们的测试工作具有很大的帮助,希望每一位测试人员都能好好利用能够接近“真实”的机会。


http://www.niftyadmin.cn/n/148456.html

相关文章

3D格式转换工具HOOPS助力甲骨文公司成功升级3D浏览器AutoVue

HOOPS SDK是用于3D工业软件开发的工具包,其中包括4款工具,分别是用于读取和写入30多种CAD文件格式的HOOPS Exchange、专注于Web端工程图形渲染的HOOPS Communicator、用于移动端和PC端工程图形渲染的HOOPS Visualize、支持将3D数据以原生3D PDF、HTML和标…

nacos架构和原理(二)——Nacos 内核设计之一致性协议

nacos架构和原理(二)——Nacos 内核设计Nacos⼀致性协议为什么 Nacos 选择了 Raft 以及 Distro从服务注册发现来看从配置管理来看为什么是 Raft 和 Distro 呢早期的 Nacos ⼀致性协议当前 Nacos 的⼀致性协议层Nacos 如何做到⼀致性协议下沉的⼀致性协议…

MySQL基本组件与存储引擎

文章目录一、MySQL基础架构1、Server 层基本组件介绍2、语句执行1)查询语句2)更新语句二、MySQL存储引擎三、InnoDB存储结构四、SQL执行计划一、MySQL基础架构 简单来说 MySQL 主要分为 Server 层和存储引擎层: Server 层:主要包…

PHP十个常见安全问题及实例讲解

PHP是一种非常流行的服务器端编程语言,被广泛应用于Web开发、互联网企业和移动应用等领域。然而,由于PHP应用程序的开发和部署较为容易,很多开发者在开发过程中忽略了安全问题,导致应用程序的安全性无法得到保障。因此&#xff0c…

计网实验A2:代理http服务器

文章目录计网实验A2:代理http服务器实验介绍实验环境相关背景介绍HTTP传输协议HTTP代理实验功能要求基本功能监听解析库解析URL从远端服务器获取数据返回数据到客户端测试代理程序配置Firefox浏览器以使用代理套接字编程总体设计详细设计数据结构函数分析调试设计运…

【Golang每日一练】总目录(不断更新中...)

Golang 2023.03 1. 两数之和 Two Sum 2. 两数相加 Add Two Numbers 3. 无重复字符的最长子串 Longest-substring-without-repeating-characters 4. 寻找两个正序数组的中位数 Median of two sorted arrays 5. 最长回文子串 Longest Palindromic Substring 6. Z字形变换 Zi…

git提交文件的时候与别人刚好修改的是同一个文件,进而导致冲突

案例场景 日常大家一个项目组中所有人共同维护一个项目,时常会有多人修改了同一个文件的情况,提交的时候又刚好在同一个时间段提交,先提交的修改发起merge request被合并,后提交的人发起merge request后就会产生冲突,…

打怪升级之如何接收UDP写入csv

面临的困难 如果你想做一个基于UDP包的数据处理问题的话,比较好的办法是使用csv文件来进行数据的保存(csv文件比较简单,方便进行各种处理)。 CSV文件格式简单,一方面它可以直接被excel处理,另一方面它完全…