哎呀,当时怎么没有想到 | 京东云技术团队

在我们的测试工作中,是不是经常遇到这样的情形,发生了线上问题,产品、研发或者测试同学一拍脑袋:当时怎么没有想到,怎么给漏掉了呢?明明是一个非常简单的事情,用大拇指都能想到的验证场景,为何当时就漏测了呢?但实际情况是,逃逸到线上的缺陷,疑难杂症式的极端异常的问题很少,大部分都不复杂且可以在设计和开发中规避,或者在测试过程中被识别出来。针对此类问题,从测试覆盖度的角度,本文试图解释一下为何会发生这样的事情,以及如何有效规避。

一. 为什么经常会发生测试场景覆盖不全的问题

高质量的测试覆盖率是确保产品质量和用户体验的关键因素,但为何会经常发生测试场景覆盖不全的问题,这里面既有主观因素的缺失,也有客观因素的限制,具体包括:

1. 主观原因

粗心大意:认为需求非常简单,没有认真分析验证场景及异常流程、分支流程,没有识别隐藏的细节,或者对于存在的风险,存在侥幸心理,不去进一步求证或验证。

经验主义:思维固化,认为老办法同样可以解决新问题,没有进一步思考对测试场景、测试数据、验证方式的不同之处。

需求理解不充分:测试用例只覆盖到了产品PRD里的显式功能,没有覆盖隐性需求,只进行了黑盒测试或者黑盒测试覆盖的场景不足。

业务知识不足:只看到了需求本身,没有看到背后隐藏的业务的真正诉求,知其然不知其所以然。

开发知识欠缺:无法熟读代码,无法通过参加代码评审识别出研发代码改动之处及可能影响的范围,望码兴叹,无法熟练进行白盒测试,或者自动化测试代码健壮性较差,无法起到自动化回归的作用。

信息互通不到位:与项目组其他成员沟通不到位,遗漏重要信息或没有对齐颗粒度,你以为的实际不是你以为,导致遗漏重要验证场景。

用例颗粒度太大:编写用例的过程也是自己梳理信息的过程,用例颗粒度大,自然梳理的过程就不会太精细,自然遗漏验证场景的几率就会更大_(虽然探索式测试的理念是不要求编写详细的测试用例,而是在测试过程中不断调整、优化或细化,但目前我们目前的环境不太适合探索式测试,因为绝大部分需求都要求快速上线,大部分需求都存在挤压排期的现场,在测试阶段很难有充足的时间进行探索式测试)_。

测试专业技能薄弱:测试专业技能、经验不足,力所不及,自然无法保证测试的充分性及验证场景的全面性。

2. 客观原因

项目周期紧凑:目前很多需求都无法按照研发测试的正常排期进行交付,倒排期和赶工是常态,测试很难有充分的时间思考验证场景,新功能的测试往往只能覆盖主要路径,而忽略了一些边界情况和异常情况。

需求变更频繁:迭代快、变更快也是产品常态,往往一期还没有上线,二期三期就要评审了,没有经过线上真实环境、数据和客户的反馈,产品方案、技术方案存在的缺陷可能无法识别到。

投放渠道众多:尤其是针对C端用户的拉新和促活活动,投放渠道非常多,涉及到不同在不同的环境运行,如App环境(iOS、安卓、鸿蒙)、H5环境、小程序环境,同时涉及到不同设备、不同环境、不同操作系统版本、不同浏览器的打开、回流、引导下载等操作,兼容性测试覆盖不足可能导致在某些环境下出现问题。

流量情况悬殊:各个投放渠道流量差异较大,若上线前没有对各渠道的流量有充分的预估,没有进行压测,在高并发、大数据量或复杂业务场景下,性能问题可能无法被及时发现,从而导致线上问题。

测试环境仿真度低:目前普遍存在系统之间测试环境不联通、测试环境数据不全等问题,导致测试环境的仿真度较低,可能出现测试环境无法模拟真实环境,或测试环境无法覆盖全部验证场景的情况。

二. 如何提升测试覆盖度

为了解决测试场景未覆盖导致线上问题的情况,进一步提升测试覆盖度,需要针对以上客观原因及主观原因进行分析,形成有针对性的对策。总结来说,在测前、测中及测后,提升"内因",把控“外因”,避免“三拍”。

1. 内因

提升测试覆盖度,“内因”是关键,即可以通过积极的质量策略以及专业能力的提升,大大减少测试覆盖度不足的情况。

•**测前:****充分理解,**不盲目拍胸脯保证

◦测试工作不是始于测试执行之时,而应前置到需求阶段,测试同学应具备基本的业务Know-How,充分理解业务逻辑及研发逻辑,面对具体的业务需求,不仅停留在功能实现层面,更应理解此需求背后的业务诉求。在前置编写及评审测试用例的时候,与产品、研发充分沟通产品逻辑及技术实现方案是否与业务逻辑及真正的业务诉求保持一致,充分讨论业务风险和技术风险。总之,绝不能不求甚解、掉以轻心,应不懂就问,多沟通,多讨论风险,敢于发问,敢于质疑。

◦在测试专业能力方面,采用灵活的质量策略,如进行代码覆盖率分析,实时精准测试和探索式测试,贴近生产的测试环境和测试数据、更高覆盖率的的自动化测试,以及适合业务特点的测试工具等等。

•**测中:充分识别,**不草率拍脑袋决策。在测试执行阶段,按照我们前置测试用例的逻辑,此时应该大部分需求的测试用例已经编写完毕,但随着交付进度的进行,各方对需求的理解不断加深,可能会识别出新的范围、风险或问题,因此,在进行测试用例评审时,应再次就验证范围、风险、异常场景等进行确认,并标注出核心验证点,注测试过程中的问题和风险,及时调整和改进测试策略。还应共识双向的影响范围,即该需求是否影响了其他业务功能或技术模块,其他功能或技术模块是否影响该需求。

•**测后:充分总结,**不惊慌拍大腿懊悔。测试完成及上线不是终点,除了配合业务进行线上验证及观察线上数据、进行线上巡检之外,还应花点时间回顾一下交付的过程,总结经验教训,主动分享。对于核心的用例,看能否沉淀为自动化的回归及巡检用例。万一出现了线上问题,先尽快恢复业务,再分析原因,进行复盘,总结教训和改进方案。

2. 外因

提升测试覆盖度,“外因”是基础,即通过流程机制的约束及全流程的质量把控,层层把关,互相补位,从机制上降低测试场景遗漏发生的概率。通过规范化的质量活动对需求交付的各个阶段进行质量准入和准出,步步为营,形成强制性的“七道关卡”,只要是严格遵守这套流程机制,上一道关卡遗漏下来的问题,可能会被下一道关卡识别出来,因此,遗漏验证场景的从而导致缺陷逃逸到线上的概率会被大大降低。

总结一下,针对如何提升测试覆盖度,“内因”是关键,基本可以解决上述“主观原因”导致的测试覆盖不足的问题,“外因”是基础,基本可以解决上述“客观原因”导致的测试场景覆盖不足的问题。

三. 综述

总结来说,防止线上问题不能停留在口头上,或者简单粗暴地要求测试同学提升测试覆盖度,应该给与更加具体的要求、指导及评价的标准。其关键要素是流程机制确保基本的质量,专业能力进一步增进质量,主观能动性构建持续的高质量,只有不断提升“内因”并把控好“外因”,才能有效防范“漏测”问题的发生,持续交付稳定可靠的产品,并提供更好的用户体验。

作者:京东科技 王先科

来源:京东云开发者社区 转载请注明来源

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

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

相关文章

Linux-ls命令

目录 ls:查看目录下文件/文件夹 ls -l:列表显示文件 ls -a:显示所有文件正常情况下‘ . ’开头的文件是隐藏的 ls -la:以列表形式显示所有文件包括隐藏文件 ls -lt:按时间倒序查看文件 ls -R:递归方式…

c++中浮点类型比较的理解

为什么浮点类型存在误差 带有小数的表示: 25.3 整数通过除2取余法表示: 25/2…1 12/2…0 6/2…0 3/2…1 1/2…1 倒过来:25(十进制) 11001(二进制) 小数部分通过乘2取整法: 0.3 * 2 …

OpenCV DNN 活体检测项目环境配置等各阶段tips

date: 2020-09-22 14:53 资料来源《OpenCV深度学习应用与性能优化实践》第八章。 在复现这个项目的时候发现一些可以调整的小tips。 环境配置阶段 使用conda 创建python 工作环境时,注释掉requirems.txt 里的opencv-python-inference-engine4.1.2.1,安…

【JavaEE】_线程与多线程的创建

目录 1. 线程的概念 2. 创建与使用多线程 2.1 方式1:继承Thread类 2.2 方式2: 实现Runnable接口 2.3 以上两种创建线程方式的对比 3. 多线程的优势-增加运行速度 1. 线程的概念 进程的存在是由于系统的多任务执行需求,这也要求程序员进…

NLP深入学习:《A Survey of Large Language Models》详细学习(七)

文章目录 1. 前言2. 应用场景2.1 LLMs 对研究界的应用2.1.1 经典 NLP 任务2.1.2 信息检索2.1.3 推荐系统2.1.4 多模态大语言模型2.1.5 知识图谱增强型 LLM2.1.6 基于 LLM 的智能体2.1.7 用于评估 2.2 特定领域的应用 3. 参考 1. 前言 这是《A Survey of Large Language Models…

人力资源智能化管理项目(day10:首页开发以及上线部署)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/humanResourceIntelligentManagementProject 首页-基本结构和数字滚动 安装插件 npm i vue-count-to <template><div class"dashboard"><div class"container"><!-- 左侧内…

二.重新回炉Spring Framework:Spring Framework主要组件概览

1.写在前面的话 这里主要简单说一下Spring Framework的几个核心组件的总体情况。为了比较直观&#xff0c;这里使用了ClassPathXmlApplicationContext的类图来进行说明。它基本上包含了 IoC 体系中大部分的核心类和接口。类图如下图所示&#xff1a; 2.Resource 组件体系 R…

⭐北邮复试刷题429. N 叉树的层序遍历(按层入队出队BFS)(力扣每日一题)

429. N 叉树的层序遍历 给定一个 N 叉树&#xff0c;返回其节点值的层序遍历。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;。 树的序列化输入是用层序遍历&#xff0c;每组子节点都由 null 值分隔&#xff08;参见示例&#xff09;。 示例 1&#xff1a;输入&a…

SG3225EEN晶体振荡器规格书

SG3225EEN 晶振是EPSON/爱普生的一款额定频率25 MHz至500 MHz的石英晶体振荡器&#xff0c;6脚贴片&#xff0c;LV-PECL输出&#xff0c;3225封装常规有源晶振&#xff0c;具有小尺寸&#xff0c;轻薄型&#xff0c;高稳定性&#xff0c;低相位抖动&#xff0c;低电源电压&…

【算法】基础算法002之滑动窗口(一)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.长度最小的子数组…

找图片、壁纸就上这6个网站,高清无水印,免费下载~

推荐6个高清无水印图片、壁纸网站&#xff0c;质量非常高&#xff0c;还能免费下载&#xff0c;赶紧收藏一波~ 1、wallhaven https://wallhaven.cc/ 一个提供优质电脑高清壁纸搜索引擎&#xff0c;壁纸高清如画&#xff0c;使用后都会爱上彻底不能自拔。 Wallhaven 提供超过7…

labelme篇---批量修改用labelme标注的标签

labelme篇—批量修改用labelme标注的标签 labelme标注后的标签格式如下图&#xff1a; 我们要改的就是label 所以代码如下 # -*- coding: utf-8 -*- import os import jsonjson_dir # JSON文件所在文件夹的路径 old_label # 要修改的旧标签名 new_label # 修改后…

C#上位机与三菱PLC的通信06--MC协议之QnA-3E报文测试

1、A-3E报文回顾 1、存储区分类及访问规则 2、命令类型 命令由主命令子命令组成 3、报文结构 2、启动mc服务器 3、创建VS项目 这节继续使用上节的VS2022的项目&#xff0c;增加一个方法 MCTestA3E()&#xff0c;具体怎么创建项目&#xff0c;见上节的过程。C#上位机与三菱…

three.js 3D可视化地图

threejs地图 可视化地图——three.js实现 this.provinceInfo document.getElementById(provinceInfo); // 渲染器 this.renderer new THREE.WebGLRenderer({antialias: true }); this.renderer.setSize(window.innerWidth, window.innerHeight); this.container.appendChild…

GZ036 区块链技术应用赛项赛题第6套

2023年全国职业院校技能大赛 高职组 “区块链技术应用” 赛项赛卷&#xff08;6卷&#xff09; 任 务 书 参赛队编号&#xff1a; 背景描述 近年来&#xff0c;食品安全问题层出不穷&#xff0c;涉及到各种食品类别&#xff0c;如肉类、水果、蔬菜等。食品安全事…

SQL32 截取出年龄(substring_index函数的用法)

代码 select substring_index(substring_index(profile,,,3),,,-1) as age ,count(device_id) from user_submit group by age知识点 substring_index(FIELD, sep, n)可以将字段FIELD按照sep分隔&#xff1a; (1).当n大于0时取第n个分隔符(n从1开始)之前的全部内容&#xff1…

【Vision Pro 应用分享】Make It Spatial——将普通照片转化为Spatial空间照片,以在Vision Pro视界眼镜上观看3D效果

该应用目前在Mac App Store上免费提供 下载地址:‎Make It Spatial on the Mac App Store Read reviews, compare customer ratings, see screenshots, and learn more about Make It Spatial. Download Make It Spatial for macOS 14.0 or later and enjoy it on your Mac.h…

BUGKU-WEB 变量1

题目描述 题目截图如下&#xff1a; 进入场景看看&#xff1a; flag In the variable !<?php error_reporting(0); include "flag1.php"; highlight_file(__file__); if(isset($_GET[args])){$args $_GET[args];if(!preg_match("/^\w$/",$args…

Airtest-Selenium实操小课:爬取新榜数据

1. 前言 最近看到群里很多小伙伴都在用Airtest-Selenium做一些web自动化的尝试&#xff0c;正好趁此机会&#xff0c;我们也出几个关于web自动化的实操小课&#xff0c;仅供大家参考~ 今天跟大家分享的是一个非常简单的爬取网页信息的小练习&#xff0c;在百度找到新榜网页&a…

前端工程化面试题 | 09.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…