遇到Bug漏测,不能总想着甩锅吧

news/2024/4/26 22:53:09/文章来源:https://blog.csdn.net/wx17343624830/article/details/128098345

背景

漏测Bug是指产品逻辑缺陷在测试过程中没有被发现(尤其是测试环境可以重现的缺陷),上线版本发布后或者在用户使用体验后发现并反馈回来的缺陷。

漏测Bug可能造成线上故障或者资损,在对产品测试过程中,自己也难免出现一些Bug的漏测,因此对Bug漏测进行一些思考,并进行总结。

原因分析

Bug其实是任何应用产品都会有的一个问题,不是所有的Bug都能被发现,包括资深测试,或多或少的会出现线上缺陷,谁也不能把软件所有的功能操作、运用场景想周全。

虽说不能做到完全零缺陷,但是每次发布的产品,我们需要追求缺陷越来越少,产品质量越来越高,减少线上问题的反馈。

为什么会出现缺陷漏测,主要有以下几点:

需求评审阶段,对业务需求细节理解不明确,设计存在不合理,未深入挖掘隐含拓展需求。

问题分析:

在实际产品研发过程中,产品需求其实处于一个细化、优化、下钻过程中,在需求PRD文档交互文档输出进行评审时,未能把一些产品细节问题、隐含需求暴露出来,而测试用例的编写是基于PRD、交互文档以及自己对该需求经验理解所涉及测试用例。

改进措施:

需求评审前,我们应该先仔细阅读PRD及交互文档,先形成自己对产品的思考,通过脑图的方式列出对产品设计的疑问点,从用户或者从行业角度找出产品设计缺陷点。

需求评审会议中,带着列出的疑问点向产品、开发沟通自己对产品的疑惑和质疑点。多提几个为什么?如何实现?数据获取来源?超出预期的数据怎么处理?缓存处理机制如何?数据保存何处?逻辑由前端处理还是后端服务?后端服务逻辑是否跟第三方关联?

需求评审完成后,按照一定的功能,将需求拆分成若干大模块,大模块拆分成小功能点,然后考虑功能点的具体实现流程,通过思维导图细分模块功能、从页面、交互、边界处理、接口逻辑、环境配置等维度进行梳理需求,尽可能挖掘隐含可拓展需求点,然后进行一次测试组内需求评审和技术复盘,让协作成员一起补充隐含需求,使得产品设计缺陷尽早且最大化地暴露出来。

在后期技术评审时,探讨逻辑交互以及上下游数据走向和消息发送流转,串联技术侧疑问点。

测试用例覆盖不全面,场景出现遗漏。

问题分析:

在测试用例设计过程中,容易出现思维受限或者需求盲区,我们不可能完全覆盖用户使用的所有场景,编写测试用例的时不可能把所有的场景都能想周全,把所有的场景下的情况都写成测试用例去模拟、去覆盖这也是不太现实的。

改进措施:

用例设计开始之前,列思维导图。通过思维导图列出业务流程,前、后端接口逻辑。然后按照PRD和交互文档,依照UI界面切分成大的功能块,然后在大功能块,然后在大功能块再切成小功能块,最后到功能点,每个功能点通过UI、基本功能、边界、内存、数据、交互、接口逻辑等维度开展用例设计导图,并列出需找产品、开发确认的疑点。

用例设计完成后组织用例评审。

a. 组织开发、产品进行测试用例评审,并抛出用例设计时的疑问,通过产品实现角度、数据存储、用户、产品体验角度对用例进行评审完善补充。

b. 组织测试组内提前预审测试用例也是非常必须的,对于正式用例评审前会组内进行预审,在版本结束后组织全量用例集合也会进行串讲用例,特别是一些经验老道或者业务熟悉的老司机们,可以在用例评审上快速的帮忙指出用例的遗漏点,有助于测试人员打开思路,尽可能多的覆盖用户场景,值得注意的是用例评审上遇到不确定的,应立即记录下来作为待办项,结束后及时找相关人员确认,避免猜测不确定。

总结用户反馈、完善测试用例流程-下钻测试用例构建以有备无患。

a. 产品测试发布上线后,对于用户反馈的缺陷,如果缺陷是因为场景设计不全引起的,我们先分析出现问题的场景是必现还是偶现,如果是必现,我们可以通过和技术同学沟通,确认该场景的一些具体复现步骤,确认引入原因,解决方案。

b. 对于线上如果出现缺陷需要对测试用例完善:除了补充该场景case外,考虑一些和该场景相关联的场景,将多种场景下测试用例及时完善、评审,增加到用例库中去。

c. 针对线上缺陷分析其具体原因做复盘总结,关注线上问题反馈群,及时发现问题、定位问题、分析原因,判断是否为老逻辑引入还是新功能引发问题,精准化补充对应的用例,针对特别场景补充接口自动化、防资损数据狗校验、全量用例集合BVT用例。

测试阶段未严格按照测试用例执行。

问题分析:

按照测试用例执行测试,可以让我们尽可能不出现遗漏一些测试点。不能因为某一个人或者对某一块业务熟悉简化其测试用例,不严格按照测试用例来执行测试,这样出现了一些遗漏Bug实在是不应该。

改进措施:

测试用例不一定能保证所有的场景和功能点都能覆盖到,但是严格按照测试用例执行测试,能最大程度上保证产品质量,尽量避免出现缺陷。

养成测试记录习惯:对于测试阻塞用例、测试Fail用例,应该重点关注并记录,在回归测试阶段进行精准回归测试,确保修复Bug导致关联功能引入的新Bug也能被发现。

虽然测试流程很规范,但是软件质量还是不如意。

图片

测试环境、测试资源受限,导致缺陷漏测。

问题分析:

对于现阶段的测试环境问题是极其复杂的,业务系统不是孤立存在的,关联方环环相扣,而且关联系统常常出现不稳定的情况,另外涉及身份证、银行卡等稀缺资源的使用有限,往往测试完一个有效数据废弃一个有效数据,所以我们可以尽可能通过mock、还原客户的实际环境问题。

现实毕竟不是真实的环境,由于环境的差异,可能出现很多意想不到的问题,例如:配置问题、数据源问题、以及数据同步问题,这些都是可能只在特定的环境、特定的操作步骤下才会暴露出来,在我们的测试环境还原不出来,只能基于预发环境或者生产环境来验证问题,导致质量可能出现风险隐患。

改进措施:

引入灰度发布测试。测试组在预发布环境上进行回归测试,能基本模拟真实环境执行测试环境无法测试的用例,又不影响线上用户的正常使用。

生产验证环节做好case筛选。首先进行生产验证case梳理,生产验证case除了筛选p0+p1级别case进行回归外,还应该包含测试环境mock or 挡板阻塞的测试case,以及后端接口对前端响应的case,在生产回归阶段严格按照生产验证case执行去覆盖真实线上环境场景。

加强后端以及关联方业务逻辑的了解。前端不仅需要了解前端与后端接口的交互业务逻辑,还需了解后端接口与其它关联方的接口交互逻辑,校验判断其给的接口数据是否正确,对测试环境测试用例的覆盖程度有整体的把控度,以确保生产环境的测试用例覆盖做到全面性。

开发人员引入的新Bug。

问题分析:

有一些开发人员只会针对你所提交的Bug中问题的描述步骤解决,并不会去排查该问题有可能涉及的所有点,有可能出现解决了这个问题,而引入了一个新的问题。一个不熟悉功能模块的开发人员来修复Bug,因为业务不熟悉,考虑不周全导致无意识的引入新的Bug。

改进措施:

代码review。从代码管理层面:开发修复一个Bug提交代码自测通过准备提测时,开发团队提交代码进行代码review,引入新Bug的可能性概率就会较小,降低风险存在。

精准回归测试。从测试自我修养层面:在开发提测后,了解代码改动点,精准分析改动点对相关联的功能点的影响,将开发人员修复的Bug确认验证,并将相关联的功能点尽可能的遍历回归测试。

找开发聊聊开发是如何修复这个功能。跟开发聊实现很容易从开发的设计中你可以把握到测试的注意点,并记录体现在用例中。例如A开发曾经用某种方式做了B功能,出现了某个Bug,现在B功能用了同样方式实现,那么极有可能之前的Bug还会出现在C功能。

覆盖率的实践和应用。增加开发冒烟执行代码覆盖率,根据覆盖率数据分析有哪些冒烟用例未覆盖到,是方法未覆盖到、还是类未覆盖到或者是异常逻辑的校验未回归到,用开发自测和覆盖率的方式降低其新Bug的引入。

探索性测试环节欠缺。

问题分析:

我们发现的很多Bug都不是按测试用例执行发现出来的,都是在测试过程中随意测试发现的,而这些步骤在测试用例中并未体现,我们的测试用例不可能覆盖所有的场景。

改进措施:

准入测试通过后进行ET测试。在测试准入测试完成进入SIT测试阶段:一般来说,ET测试是最容易发现Bug的,所以在测试准入测试完成进入SIT测试阶段,先进行一轮探索性测试,使得大部分的Bug先在测试前期暴露出来,让Bug累计数量达到一定的峰值,尽早发现Bug,质量越高。

UAT测试之前进行组内ET测试。SIT测试进入尾声,UAT测试之前组织一次组内ET测试,让组内不同的测试用不同的测试方式、测试思维、测试经验、测试习惯进行探索测试,能发现一些由于思维定势局限原因导致漏测的Bug、诡异的Bug或者使用不合理的地方。

精准化测试。精准测试的测试用例聚类分析功能,可以有效地发现“测试的错误”。例如一个用例执行步骤错误,它的聚类结果必然会发生变化,管理者通过系统分析的结果就可以发现并纠正这一类的错误,而之前可能需要在现场回归反复的确认。

精准测试的核心技术要点是测试用例与代码的追溯技术。这项技术简单来说就是当功能执行完成以后对应的整体代码执行情况就会立即产生,即当点击一个测试用例,就立即追踪到对应的代码和模块。

精准测试测试漏洞分析功能,适用于敏捷测试。它可以基于程序静态数据和动态运行数据,自动分析软件缺陷最高风险的位置,引导首先对于高风险的模块完成覆盖,在有限时间内完成最具有风险的模块的覆盖测试。

图片

对于开发角度侧思考

自测背景。

开发人员做好自测,非常必要,也是大趋势。前期都是开发自测,后期才是用户体验方面的测试。从成本和时间上分析,Bug越晚发现修复成本越高;从修改的效率来讲,越早处理会越快。一个优秀的开发者,自测的Bug一定会多于测试发现的Bug,也就是轮到测试的时候Bug数量相当少。

疑难问题思考。

时间和进度太紧张,排期紧凑。

对自己代码过于自信,自认为有很强的健壮性,不忍心去修改。

认为这是测试的责任,多度依赖测试。

不知如何有效地做好自测,覆盖全面。

开发冒烟测试对于QA创建指定的用例理解不透彻,执行简约。

思维转变。

代码质量、项目质量均是我们的责任。

测试和开发人员思考问题不同,开发是在制造软件,测试是在破坏软件,想办法去找出问题。

任何功能都有正常场景和异常场景,多数使用等价类和边界值去选择数据,覆盖全面。

不要相信任何开发的代码是无Bug。

走出具体实现用的开发思维,站在需求和用户的角度去自测是否通过,假如自己是用户去测试你的功能。

不仔细认真自测带来的痛处和隐患。

需求遗漏:一旦被用户发现此问题,用户印象会大打折扣,可能直接从开始使用即放弃使用,将带来非常大的客户流失。

功能事故:主流程功能没有测试到位,或者异常场景没有测试到位,导致线上频繁报错,体验极度不好,直接认为就是事故。

需求延期上线:如果自测不充分,测试花大量的时间去沟通低等级bug,甚至主流程走不下去,这样无疑会给开发带来返工、重复测试、耗时、需求延期、项目延期等一系列问题。

制定自测报告规范。

功能模块介绍及背景介绍:

功能、背景介绍

使用用户群体介绍

环境信息:

版本号

Hosts、代码发布分支

预发or正式

功能设计文档以及UI设计图等

数据库数据同步、环境配置、开关设定等

梳理好的自测点:

编写代码时候记录的业务点和测试点

需求变更的自测点

正向、逆向、异常场景测试点

兼容性

开发此功能是否会对其他功能造成影响,一行代码是否会引发新的问题出现

自测实际结果:

高等级Bug数量、影响冒烟核心流程

中等级Bug数量、串联流程链路

低等级Bug数量、页面展示UI效果

开发冒烟自测阶段覆盖率

一轮、集成阶段覆盖率

期望结果:

符合测试SOP规定准出标准

冒烟自测以及集成阶段覆盖率标准

测试阶段Bug数量的控制

上线后Bug数量的控制,质量月复盘满足数量控制标准

总结

缺陷漏测发生后我们需要深入分析漏测的Bug,思考哪方面做的不够,是业务逻辑理解误差?用例评测遗漏?技术方案存在不合理?思考设计用例方向出现了偏差?

多问一些几个为什么,换位思考角度想问题,合理设计评测。确保类似的Bug能被预防提前发现暴露出来,从而尽可能降低缺陷的产生,提高产品质量。

在每个不同阶段做好用例测试计划执行,增加精细化测试以及探索性测试环节,需要开拓新的测试思想思维,走出惯用常规的测试思想。

同时也要站在开发侧、编写代码设计的思维逻辑去考虑,降低可能在测试阶段出现Bug漏测、遗漏的出现,开发侧也需严格执行自测和覆盖率SOP要求准出。

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以加入我们的QQ群:746506216,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。


资源分享

下方这份完整的软件测试视频学习教程已经上## 标题传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

品优购项目案例制作需要注意的内容笔记

个人在做的时候遇到的,自己觉得需要注意的内容 模块化 1.有些样式和结构在很多页面会出现,比如页面的头部和底部,大部分页面都有。此时可以把这些结构和样式单独作为一个模块,然后重复使用 2.这里最典型的应用就是common.css公…

Dubbo3入门实践,SpringBoot+Dubbo+Nacos+DubboAdmin

前言 学习Dubbo的过程中发现官网文章太过简单,而且没有提供完整的项目整合,导致入门门槛比较高,初学者不知从何下手。本文将在SpringBoot的基础上整合Dubbo,注册中心使用当下流行的Nacos,还将使用Dubbo-Admin来管理服务…

web前端-javascript-基本数据类型和引用数据类型(对象和基本数据类型保存到栈内存,对象保存在堆内存,比较两个基本数据类型或引用数据类型)

基本数据类型和引用数据类型 var a 123; var b a; a;/* console.log("a "a); console.log("b "b); */var obj new Object(); obj.new "孙悟空";var obj2 obj;//修改obj的name属性 obj.name "猪八戒";/* console.log(obj.name…

C. Strange Test(位运算或)

Problem - 1632C - Codeforces 伊戈尔正在读11年级。明天他将不得不写一份信息学测试&#xff0c;由学校最严格的老师帕维尔-杰尼索维奇负责。 伊戈尔知道测试将如何进行&#xff1a;首先&#xff0c;老师会给每个学生两个正整数a和b&#xff08;a<b&#xff09;。之后&…

BP神经网络详解,Python实现求解异或问题

BP神经网络 符号及其含义 nln_lnl​表示第lll层神经元的个数&#xff1b;f(⋅)f()f(⋅)表示神经元的激活函数&#xff1b;W(l)∈Rni∗ni−1W^{(l)}\in\mathbb R^{n_i*n_{i-1}}W(l)∈Rni​∗ni−1​表示第l−1l-1l−1层到第lll层的权重矩阵&#xff1b;wij(l)w_{ij}^{(l)}wij(l…

idea手动创建webapp(在main文件夹下)

SSM自学笔记 文章目录一、Maven使用正常情况首先不使用骨架创建好Maven项目然后选择Project Structure...选择要创建webapp的模块修改路径二、Maven不正常工作时一、Maven使用正常情况 首先不使用骨架创建好Maven项目 然后选择Project Structure… 选择要创建webapp的模块 选好…

python数据容器——列表

目录 一.数据容器 二.数据容器——列表 基本语法 注意 三.列表的下标&#xff08;索引&#xff09; 嵌套列表的下标&#xff08;索引&#xff09; 四.列表的常用操作&#xff08;方法&#xff09; 1.查询元素下标 2.插入元素 3.删除元素 4.统计元素 说明 一.数据容器 1&a…

传奇出现黑屏卡屏不动是怎么回事

在写这篇文章之前&#xff0c;先给给大家说一下&#xff0c;这篇文章写的是出现黑屏、卡屏不动是我们玩传奇的时候出现的&#xff0c;而不是在架设传奇时候出现的&#xff0c;所以要特别是注意一下&#xff0c;架设和玩出现黑屏是完全不一样的&#xff0c;所以解决方案也不一样…

H3C opsf/rip/ftp/telent/nat/acl综合

实验拓扑 拓扑下载 https://sharewh2.xuexi365.com/share/84b85b32-acb7-4f62-a389-6188680a19f3?t3 图 1-1 注&#xff1a;如无特别说明&#xff0c;描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备&#xff0c;R2 或 SW2 对应拓扑中设备名称末尾数字为 2 的设备…

【jmeter】windows下使用 (测试MQTT)

1. 添加线程组 二、添加如下请求 1. 添加创建连接请求-选中线程组&#xff0c; 点击右键&#xff0c;添加>取样器>MQTT Connect设置MQTT连接 本次使用本机开启的MQTT服务进行测试&#xff0c;默认ip为127.0.0.1&#xff0c;端口默认1883 2. 添加发布请求-选中线程组 …

软件测试之对于测试的反思及思考

1.针对一个页面&#xff0c;从页面的完整性(包括字段、输入框、功能点)出发 2.对于分页&#xff0c;考虑未在首页的时候的测试&#xff0c;末页的情况。 3.对条件的查询来说&#xff0c;要针对于单个输入框的测试、交叉输入框的测试 4.对于删除、修改等&#xff0c;要考虑你删除…

nablet Elements released处理视频的组件

nablet Elements released处理视频的组件 mediaEngine-一个转码工厂&#xff0c;为视频工作流从贡献到分发提供动力。 HeightScreen-AI驱动的工具&#xff0c;用于将视频转换为垂直屏幕&#xff0c;自动选择感兴趣的区域。 Shrynk-AI驱动的解决方案&#xff0c;可自动完成高亮编…

【站内题解】十六道csdn每日一练Python题解

文章目录题目一&#xff1a; 游乐园的门票1. 问题描述2. 输入描述3. 输出描述4. 示例4.1 输入4.2 输出5. 答案5.1 解法一5.2 解法二题目二&#xff1a;小桥流水人家1. 问题描述2. 输入描述3. 输出描述4. 示例4.1 输入4.2 输出5. 答案题目三&#xff1a;小艺读书1. 问题描述2. 输…

Wordpress模板主题中functions.php常用功能代码与常用插件(持续收集整理)

用Wordpress建站的初学者一定会需要用到的Wordpress模板主题中functions.php常用功能代码与常用插件。慢慢持续收集整理....... 目录 一、Wordpress模板主题中functions文件常用的代码 二、Wordpress自定义字段的设定与调用代码&#xff08;系统常规自定义字段&#xff09; …

ESP32基础应用之LVGL基础

文章目录1 实验目的1.1 参考文章2 实验工具3 准备工作3.1 搭建ESP32开发环境3.2 克隆lv_port_esp32工程4 配置lv_port_esp32工程5 实验验证6 使用过程遇到的问题6.1 触摸功能点击屏幕位置不对1 实验目的 本实验为使用ESP32实现LVGL&#xff08;轻量级的嵌入式图形库&#xff0…

消息队列概述与扩展

一、消息队列的特性 与业务解藕&#xff1a;一个具有普适性质的消息队列组件不需要考虑上层的业务模型&#xff0c;只做好消息的分发就可以了&#xff0c;上层业务的不同模块反而需要依赖消息队列所定义的规范进行通信。FIFO&#xff1a;先投递先到达的保证是一个消息队列和一…

计算机组成原理习题课第三章-2(唐朔飞)

计算机组成原理习题课第三章-2&#xff08;唐朔飞&#xff09; ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&…

梦开始的地方——C语言柔性数组

文章目录柔性数组什么是柔性数组&#xff1f;柔性数组的使用柔性数组的优点柔性数组 什么是柔性数组&#xff1f; 在C99中&#xff0c;结构体最后一个元素它允许是一个未知大小的数组&#xff0c;这就叫做柔性数组成员。 这个概念听起来可能有点不可以思议&#xff0c;但它的…

第三十九篇 自定义指令 - directive

前面讲了关于在Vue中如何来进行封装swiper组件的内容&#xff0c;本篇内容讲到使自定义组件&#xff0c;讲这块内容也是同样为了后续再次回顾封装swiper组件变化做铺垫内容&#xff0c;那么什么是自定义指令&#xff0c;在前面的内容讲过了好些常用的指令&#xff0c;如 v-modl…

【linux】环境基础开发工具使用

1.vim编辑器 vim中最常用的是三种模式&#xff1a;命令模式&#xff0c;底行模式&#xff0c;插入模式。 命令模式(Normal mode)命令模式是我们第一次vim打开文件的样子&#xff08;默认模式&#xff09;&#xff0c;这里控制屏幕光标的移动&#xff0c;字符、字或行的删除&…