【软件测试】测试人我明明测了,生产环境还出问题?又出幺蛾子......

news2025/1/23 17:35:18

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

测试人对于线上问题!
对测试人员来讲,什么事情比较尴尬?线上出问题。
再尴尬一点儿呢?没测到,线上出问题。
最尴尬呢?明明测到了,线上还是出问题。
测试人,我…此时省略N多个****号

场景一:没测到,生产环境出问题

意料之内情理之中,这太正常了。没测到出了问题不该惊讶,没出问题才该烧香。此时不应指责出问题,而应思考没测到的原因是什么。第一反应是测试人员遗漏了,好像也没更多原因。但当我们把视角切换到真实研发过程中,就会发现没测到的原因实在太多了!

没考虑到,测试漏测了
这真是测试的锅,测试人员确实应该全面理解业务,设计高效覆盖的用例集。但在功能设计时如有良好规划,可以减少没想到造成的漏测。

考虑到了,但还是没测
一般是时间紧任务急,来不及测,但又没向团队暴露风险。多半也是测试的失职。

不可抗力必须上线,来不及测
大家清楚的知道风险,但遇到不可抗力,如法律法规等,无法完成全部测试就必须上线,这种情况我们且上且观察,共同承担风险,并充分思考线上事故的紧急预案。

流程问题,未经测试就上线
开发自己上线了功能,没经过测试人员测试,也没有充分自测。这种鬼故事在过去的职业生涯中我至少见过5次。还是不能寄希望于人的专业性,应更多依赖于可控可追溯的流程体系来保证。

大家认同不需要测,直接上
比如修改文案,或做简单的图片替换等。越是认为没问题的,往往越出幺蛾子。就好比我们埋头苦干往往没人看,刚要划水,抬头就是老板清静如水的目光。软件就跟成精了一样,分分钟教你做人,质量工作真是一丝都不能倦怠。

所有人都没想到,就没测
之前的一个项目上,既有常规功能的迭代上线,又有特殊功能只迭代不上线,为了好区分,我们为不上线的功能做了开关,其实代码都上去了,只是Feature没打开。

一次规模稍大的常规上线部署完成后,按照惯例验证生产环境,测试人员惊讶地发现本该关着的功能被打开了,不该出现的功能出现了。于是连忙把开关关掉,并排查原因,发现是有一个数据库脚本把开关数据导到生产环境了。从此以后,每次上线我们都会检查所有Feature Toggle的状态。

以上列举了一些原因,可能还有其他更多原因。不管什么原因没测到,终究还是让缺陷逃逸到生产了。但只要我们找到没测到的原因,有针对性地改进,还是比较容易避免这类问题的。

场景二:明明测了,生产环境还出问题

常在河边走哪有不湿鞋,测了还出事儿,这才是该怀疑人生的场景。这种情况往往问题也不好排查,通常是先赶紧排查问题,一定时间窗内找不到问题或无法快速解决,哪怕先回滚呢,事后我们再仔细复盘。测了还出事儿其实并不少见,原因也同样有很多。

以为测了,其实没测
由于测试人员对业务理解不够充分,或者测试设计能力不足,以为已经充分测试了,但其实遗漏了比较关键的测试用例。这类问题可以直接等同于场景1中的某种情况。

环境差异性
由于生产环境和测试环境的差异性导致测试结果的失效。不妨脑洞一下,都有哪些因素造成了环境差异?比如软件配置上的差异:数据库账户、接口配置、服务和端口、第三方插件、集成服务、不同的应用渠道等……

或者其他硬件上的差异。这种情况下可能并不是被测软件本身的缺陷,但由于环境差异性导致了测试环境通过的用例,在生产环境下得到了不同的结果。

数据差异性
由于测试数据的差异性导致的生产环境缺陷并不少见。在测试环境,测试人员选取典型的测试数据进行测试,或许是批量生成的有一定规律的测试数据。这些数据可能用着顺手每次都会被复用,也可能形成了针对特定业务的测试数据集。

这是好事儿,但往往就像耐药性一样,这些被测软件用习惯的数据不利于揭示新的或隐藏的缺陷。而在生产环境,由于用户量大、操作不规范、真实业务的复杂性等原因,使得生产环境的数据更具备多样性,这就给测试结果的准确性带来更大的挑战。

用户量级/业务量级差异性
这其实也是数据差异性的一种,单提出来是因为引发的缺陷不同,上一种情况引发的是特定测试用例的结果不准确,或者说是普通的缺陷。

而由于业务量级不同引发的往往是性能缺陷,高并发、大量堆积的业务数据造成服务中断等,这些情况引发的缺陷往往业务影响更大,定位、修复和性能调优的难度也更大。哪怕在测试环境进行了充分的性能测试,也极有可能在生产环境并行大量其他业务的条件下,造成灾难般的性能缺陷。

其他集成问题
与集成方约定的上线时间、切换动作、兼容方式、集成验证等,都有可能在测试环境和生产环境有所不同。因此,在上线后与集成方一起验证集成功能的正确性非常必要。毕竟相比于自己的软件缺陷,集成引起的缺陷可控性更差,修复周期也更长。应尽早发现这类缺陷,以免造成更大的损失。

上线不完全
这就更诡异了,软件功能完全没问题,各种差异性也已排除或修复,但仍然可能因为发布问题死在线上。由于发布本身的复杂性、上线功能较多、服务间功能耦合、或是上线步骤繁琐、手动操作过多等原因,都有可能引起上线不完整,一部分关键代码没有上线。这类问题好发现好排查,但着实恶心人,本不应发生。

测试到底该解决什么问题?

先上结论,相比于发现更多缺陷,我认为测试最应该解决的问题是:
排除用户或客户对软件的预期和软件真正的表现在生产环境上的差异。

具体怎么做呢?

逐步递进地完善实践:
充分了解被测业务;
提升测试设计能力;
在测试环境,确保软件业务功能没问题;
充分思考环境差异性;
排除数据差异性,用多样化的数据进行测试;
排除或尽力约束集成方问题;
在预生产环境进行完整的回归测试和发布演练(在发布过程复杂或对发布时间限制较严格时可选);
对发布后可能出现的风险进行预判,确认快速恢复机制;
采用自动化流程、发布预演等实践,确保软件完全发布;
完成上线后,立即对生产环境进行允许的测试和检验;
投产使用后,持续监控服务日志和业务数据。

下面是我整理的2022年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每一个人在成功之初都会碰到各种困难。但失败是成功之母,只有历经失败的洗礼,才可以有丰富的成功。要珍惜每一个人的态度,再平凡的人也有自己的主见,也会决定你的质量。

人生就像一出自导自演的戏剧,随时都有可能改变里面的戏节,只不过到头来的结局不同了。

当你孤独时,风儿就是我的歌声,愿它能使你得到片刻的安慰;当你骄傲时,雨点就是我的警钟,愿它能使你获得永恒的谦逊。

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

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

相关文章

大数据_数据中台建设与架构

目录 一、持续让数据用起来的机制框架 二、数据中台建设方法论 三、数据中台架构 一、持续让数据用起来的机制框架 数据中台的使命就是持续让数据用起来,它的根本性特点就是把“数据资产”作为基础要素独立出来,让成为资产的数据作为生产资料融入业务…

【SVM分类】基于matlab鸽群算法优化支持向量机SVM分类【含Matlab源码 2242期】

⛄一、鸽群算法简介 基于鸽群在归巢过程中的特殊导航行为,Duan等提出了一种仿生群体智能优化算法———鸽群优化算法.在这个算法中,通过模仿鸽子在寻找目标的不同阶段使用不同导航工具这一机制,提出了2种不同的算子模型: 1)地图和指南针算子(map and compass operator).鸽子可…

ElasticSearch入门

1. ELASTICSEARCH 1、安装elastic search dokcer中安装elastic search (1)下载ealastic search和kibana docker pull elasticsearch:7.6.2 docker pull kibana:7.6.2(2)配置 mkdir -p /mydata/elasticsearch/config mkdir -p…

day01 Redis

day01 Redis 第一章 非关系型数据库的简介 第一节 技术发展线路 第二节 互联网发展所面临的问题 1. Web1.0 时代 2. Web2.0时代 3. 互联网三高问题 3.1 高并发、大流量 大型网站系统需要面对高并发(QPS)用户,大流量访问。Google日均PV数35亿,日均IP…

centos8.4下搭建 rocketmq集群部署 4.9.4

1.简单介绍 搭建rocketmq集群,nameserver至少3个节点,brokerserver采用2主2从同步,服务器资源多的,可以至少部署在7台服务器上,资源少的可以准备至少3台服务器 172.16.4.15nameserver172.16.4.16nameserver172.16.4.17nameserver…

三维种子点生长算法(以及Python递归深度问题)

前言 种子点生长算法是从一个种子点向周围的遍历图像的每个像素的图遍历算法。 通常在二维中有8邻域方法,三维中有6邻域与26邻域方法。 本文实现了三维种子点生长的6邻域算法。 种子点生长算法本质上是对图像的连通部分进行遍历,因此可以分别利用深度优…

spring initializr脚手架搭建详解

前段时间,我在「基于start.spring.io,我实现了Java脚手架定制」一文中讲述了敝司的微服务脚手架落地过程中的前世今生,并提到了基于 spring initializr 的搭建了 2.0 版本的脚手架。今天我打算和你分享一下这其中的实现过程与细节&#xff0c…

Vue3 如何实现一个全局搜索框

前言:自从学习 vue 以来,就对 vue 官网全局的 command K 调出全局关键词搜索这个功能心心念念。恰好最近项目也是需要实现一个全局搜索的功能,也正好可以正大光明的带薪学习这个功能的思路。网上的教程水平参差不齐,而恰好之前的…

qmake 与 配置文件

用qmake生成makefile的时候,背后会先执行一堆用qmake language编写的库文件(配置文件),用于初始化一些环境相关的工作,为后续解析pro文件做准备。 下面是qmake解析一个新建的qt工程的pro文件背后所解析的配置文件的文件…

2022-11-27阿里云物联网平台 MICROPYTHON记录

之前写过EMQX在阿里云的云服务器上搭建流程,近期云服务器到期了,而且由于没有业务支撑短期也不打算再开云服务器了,但是物联网还是要用的,于是开了这个阿里云物联网的记录。 这个是比较详细的已有的博客记录 这个博客居然还有配套…

从ABNF读懂HTTP协议格式

定义 HTTP(Hyper Text Transfer Protocol)超文本传输协议 HTML( Hyper Text Markup Language)超文本标记语言 URI(Uniform Resource Identifier)用于标识某一互联网资源名称的字符串(uri 包括了…

自动控制原理1~3章课后练习题

1.适合于应用传递函数描述的系统是线性定常系统 2.某0型单位反馈系统的开环增益为K&#xff0c;则在 r(t)1/2*t^2 输入下&#xff0c;系统的稳态误差为 无穷 3.动态系统 0 初始条件是指 t<0 时系统的 输入、输出以及它们的各阶导数为 0 4.若二阶系统处于无阻尼状态&#…

毕业设计-opencv图像视频质量评价分析

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

二级域名配置以及nginx解析二级域名到html页面

此文章适合发布前端项目使用&#xff0c;如果想要配置二级域名到后端服务&#xff0c;可以查看这篇文章&#xff1a;nginx配置二级域名 - 简书 在阿里云上配置二级域名&#xff0c;就是添加一条记录就可以了&#xff0c;超级简单&#xff0c;不懂的可以看后面的解释说明&#…

05.深入理解JMM和Happens-Before

JMM都问啥&#xff1f; 最近沉迷P5R&#xff0c;所以写作的进度很不理想&#xff0c;但不得不说高卷杏YYDS。话不多说&#xff0c;开始今天的主题&#xff0c;JMM和Happens-Before。 关于它们的问题并不多&#xff0c;基本上只有两个&#xff1a; JMM是什么&#xff1f;详细…

[附源码]计算机毕业设计JAVA社团管理系统

[附源码]计算机毕业设计JAVA社团管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

c语言实现三子棋

目录 一、三子棋玩法 二、需要实现的游戏功能 三、拆分代码 3.1游戏菜单 3.2初始化棋盘 3.2.1函数调用 3.2.2函数体实现 3.3打印棋盘 3.3.1函数调用 3.3.2函数体实现 3.4玩家下棋 3.4.1函数调用 3.4.2函数体实现 3.4.3效果展示 3.5电脑下棋 3.5.1函数调用 3.5…

强大博客搭建全过程(1)-hexo博客搭建保姆级教程

1、 前言 本人本来使用国内的开源项目solo搭建了博客&#xff0c;但感觉1核CPU2G内存的服务器&#xff0c;还是稍微有点重&#xff0c;包括服务器内还搭建了数据库。如果自己开发然后搭建&#xff0c;耗费时间又比较多&#xff0c;于是乎开始寻找轻量型的博客系统。 此时hexo…

苹果系统(macos)code with me 控制端下载不下来,下载缓慢,解决办法

jetbrains的插件,依赖包,或者是工具之类的下载通常都比较慢,尤其是大文件等很久后可能还断开了.又要重头下.比如 code with me,以下简称cwm curl: (56) Recv failure: Connection reset by peer 如果你曾用sh安装时提示这个,多数就是网络连接不行了. 简单说就是用下载工具下…

redis集群搭建教程及遇到的问题处理

这里&#xff0c;在一个Linux虚拟机上搭建6个节点的redis伪集群&#xff0c;思路很简单&#xff0c;一台虚拟机上开启6个redis实例&#xff0c;每个redis实例有自己的端口。这样的话&#xff0c;相当于模拟出了6台机器了&#xff0c;然后在以这6个实例组建redis集群就可以了。 …