三年功能测试,测试工作吐槽
概述
大家好,我是洋子。有很多粉丝朋友目前还是在做功能测试,日常会遇到很多繁琐,棘手的问题,今天分享一篇在testerhome社区的帖子《三年功能测试,测试工作吐槽》
原文链接https://testerhome.com/topics/38546
这篇文章基于中小公司的工作经验,中小厂的测试流程往往没有大厂那么规范,也会遇到很多挑战,来看下他是怎么解决的
问题一:测试时间评估
这是一个工作日常经常需要回复的问题,理论上 测试这边要做出较科学合理的回复,那就要将
【需求变更】
【开发进度延误】
【bug 修复不稳定】
【复杂业务流程】
【测试环境不稳定】
【上下游服务依赖】
【人员资源】
【是否引入新技术】
【回归范围】
等等不确定因素考虑进去,再多方沟通确定才能获得相对合理的答案。但现实里 一个功能测试会同时测试几个项目,通常是最晚得知新需求的内容,需求评审会议都是被冷不丁拉入,然后产品劈里啪啦讲完后就让你给个测试时间,方便他安排工作。
- 临时进入会议,需要你马上给个估计时间场景:
- 【解决方法】询问开发所用的时间,将测试时间设定为开发时间的 50%、70% 或 80%(根据现场氛围说自己的百分比)
- 流程较规范,测试先拿到需求文档进行评估:
- 【解决方法】编写完测试点,根据一条用例平均 5 分钟的时间,然后根据一天实际能干活的时间,例如用 6 小时去粗劣计算天数,越多越好(测试时间肯定会被压缩)
注意:如果觉得系统很复杂,自己无法正确评估,拉上你的领导/组长一起判断,千万别不好意思或者觉得这样显得自己很差,我们是功能测试,要学会哭惨!,任务太难或者太多就让组长拉多一个人来帮忙。同时测试这边投入的人力数量需要告知下产品,防止那种一旦看到时间有盈余,就疯狂后期加需求的产品。
问题二:同一时间需要完成多项测试任务
大多数功能测试的现状应该差不多,通常是测试着 A 任务,就接到 B 任务的需求评审,已上线的 C 任务现网出现了些问题反馈需要你跟进,然后测试组自动化的任务 D 也要完成进度,最后 C 任务根据用户的一些反馈做了功能整改,拉你评审和排期
- 需要当天确定的任务:
- 紧急且重要、紧急但不重要、不紧急但重要、不紧急且不重要。四个级别分类任务,虽然老套,但是真的有用,事情一多时,人特别容易烦躁,这时候就需要一个指导思想
- 多个周期任务:
- 依据截止日期, 根据任务的截止日期制定计划。先处理最紧急的任务,确保不会因为延误而影响项目进度
注意: 任务多顶不住就求救,别硬撑,看过应届生一个人测试着吃力不说,搞得老同事接锅加班的
问题三:需求不明确
这应该几乎是所有功能测试都会遇到的问题,主要分为三种:
- 一句话需求,甚至需求文档写在 txt 里,就一句话,eg:【充值满 XX 元获得奖励】(本人真实经历)
- 抄袭的需求,同为差不多的功能,拿了其他产品的需求文档适当做了修改就发出给研发
- 全文字需求,无流程图 无交互稿
情况一:一句话需求
老实说这种类型的产品一般都是愣头青,你要是把需求文档打回去,通常情况下只是从一句话需求变成十句话需求,解决不了问题,你还是要在时间内完成测试
- 测试这边辛苦些,拿上述一句话的例子【充值满 XX 元获得奖励】,列出不清晰的点:缺乏详细活动规则说明、奖励类型不明确、具体数值、活动触发条件、用户资格验证条件、界面展示交互、奖励发放的触发时机等
- 与产品经理电话沟通,询问有关背景、业务目标、关键功能、用户期望等方面的问题,然后将列出的不清晰点发到大群并 @ 开发和产品,让其在文档里做补充
- 千万别和产品私聊然后自己一个人确认需求,全部互动都要在大群
情况二:抄袭需求
通常拿来主义的产品都是很懒的,同时没啥主见,甚至他会叫你去找他抄袭的那个产品聊,麻烦的点主要在于实际转测后发现功能实现与文档不一致,开发给的原因是其中的业务逻辑或用户需求不适用于当前项目
- 转测后,让产品提前先体验,让产品先满意后再测试
- 其他参考情况一
情况三:全文字需求
通常这类产品还挺固执,认为自己描述得很清楚
- 解决方式基本和情况 1 一致
注意:以上三种情况,务必都要告知自己的直属领导,同时减少和产品的私聊,多在大群里聊,多留刷锅的证据
问题四:线上出现 bug
线上出现 bug 时,大多第一时间会很慌,生怕是自己的锅,所以步骤很重要,一方面防止非自己的锅被人甩在身上,一方面要显得自己是个负责的成熟测试
通常都是群里忽然炸锅,截图出 bug 点,然后产品们叽叽喳喳
- 冷静点,群里先发一句:“我定位下,看能不能复现”
- 现网尝试复现 bug,如果 bug 能百分百复现,@ 相关开发排查,并发出便于定位的相关的日志和信息
- 测试环境尝试复现,若能复现,查询下测试用例有无覆盖当前的场景【确保不是测试用例执行遗漏,执行遗漏和覆盖遗漏是两个不同的锅,执行遗漏是态度问题,很严重的】
- 如果是自己的锅,记得表现出积极解决问题的态度,配合开发检查修复状态,并同步到大群,要将 bug 出现的原因和修复方法了解清楚,方便后续做复盘和回答领导的询问。
- 如果是他人/环境的锅,要表现出超级积极解决问题的态度,将 bug 原因和修复情况实时同步到大群
注意: 遇到线上 bug,一定不要急着疯狂甩锅和叠buff(这个在测试阶段时就要上的护甲,测试报告提示风险和大群聊天记录),要表现出先解决问题的态度,同时搜索对自己有利的条件。
问题五:测试报告风险规避
主要有几点:
- 测试日报中,阻塞测试进度 bug、偶现 bug、p0 级未解决 bug 需要标红加粗放在测试报告醒目的地方
- 对于测试环境无法完美模拟现网环境的测试场景,需要在报告中标红加粗体现(风险多说不亏)
- 测试进度根据测试用例执行的百分比来写
问题六:测试时间不足
造成测试时间压力的通常有以下几种:开发时间延期、产品上线日期提前【大 boss 给的压力】、需求变更、测试人力资源变动、测试物料阻塞、复杂的业务逻辑。通常遇到时间不足,最好的解决方式还是加人,其他的只能前期进行预防```
-
开发延期:喜闻乐见的情况,鉴于经验通常都是延期 1-0.5 天,所以测试时间评估一般都要在自己评估的时间上至少 +1 天,同时保持在开发转测时间的前一天问下开发进度的习惯。如果开发给了进度不乐观,及时同步给产品和测试领导,看产品是否可以调整时间或者领导这边加测试人力。将测试压力尽量提前告知,给测试领导和产品有调整分配的时间,不要依赖开发去反馈
-
产品上线日期提前:没有任何方法预防,一般大老板开口了,测试领导比你还紧张,会积极询问你测试进度情况和风险,你这边要是没把握,可以提出增加人力的要求。
-
需求变更: 需求变更也是很常见的,特别是都转测了,产品那逼还在每天优化更新他的需求文档。这里需要预防一个坑:你要截图保存他转测前的最后一次需求文档并发到大群 @ 相关人,防止后面现网出现需求不一致情况时,产品拿着他未同步且更新过的文档来兴师问罪。到时你百口莫辩,特别是测试地位比较低的公司,产品修改需求是不跟测试及时同步的。 时间上也以每次变动的大小产生的影响,记录在测试报告上,规避背锅的风险。
-
测试人力变动: 原本两个人测试的任务,因为其他原因变成一个人。这也是很常见的情况,特别是两个人当初分好了测试范围,你这边只了解和评估了自己的范围,对其他人那部分并不了解,无形之中增加了后期的测试压力和时间。这种情况通常没啥好的解决方法,记得要哭惨,要让测试领导和产品去协调。别一个人傻傻的硬撑疯狂加班
-
测试物料阻塞:电商类型的项目通常涉及一些消费券的申请和配置,同时这些券的使用还带风控判断。测试这边要根据情况,转测前提前沟通准备好测试物料,申请需要用的白名单和权限,熟悉好对应的配置系统。防止正式转测前,被一堆权限和申请的事情严重拖延到进度。
-
复杂的业务逻辑: 具体情况具体分析,根据经验,面对复杂的业务逻辑,最好的方法就是编写清晰、详细的测试用例。对自己要有 B 数,评审阶段感觉吃力就求救兵
问题七:用例执行困难
- 用例执行困难,通常是开发质量差导致
目前感觉最好的办法:转测前,出一份冒烟用例给开发,通过冒烟用例后才能转测,否则主流程测试阻塞,只要代码有大改动,基本都要重新测。测试地位比较低的公司,可以把这个流程安利给测试领导和产品,让领导去推动
问题八:测试数据陷阱
常出现于前端开发,转测时给你的 mock 数据与实际现网数据结构不匹配,如果你是比较擅长 mock 数据和做代码 review 的,通常还挺容易踩这种坑,拿着这个错误的数据模板做了多个边界值和数据类型变化测试,代码对每个数据的处理逻辑也是正确的。然后发布到现网就报错无法交互
- 对开发要保持怀疑的态度: 验证环节需要接入现网数据去看测试页面的响应是否正确
问题九: 业务自动化实现
很多公司的业务通常都是未经探讨直接强行自动化的,UI 自动化能阻止就阻止,阻止不了就加入。对于接口/ui 自动化,老实说我一直觉得最好的提效方式就是找个市面上商业化的自动化平台工具,直接买来就用(面过一个国企,他们就是这样干的),都不用投入什么人力,付费工具那点钱对公司来说也不多,测试这边还能把精力放在业务上,有需求就给技术方提,这才是最好的提效方式。
可惜现在都要抽出一部分人力去搞这种做完很少人用且不好用的平台,搞笑的是这些平台的技术难点都集中在前后端框架业务实现,反而能在业务中起到多大作用的考虑倒是最低的,基本还是走的请求返回再断言那套,或者更魔幻点的 UI 自动化都给你加上 AI 赋能寻找控件。。。。。其实大部分都是把实现过程复杂化,然后起作用的还是你用最原始的 pytest+request 组合去断言那套
- 公司最好的方法就是跟随大众,自动化技术能力基本都是测试标配了,但是能把自动化设计好的估计没几个
相关文章:
三年功能测试,测试工作吐槽
概述 大家好,我是洋子。有很多粉丝朋友目前还是在做功能测试,日常会遇到很多繁琐,棘手的问题,今天分享一篇在testerhome社区的帖子《三年功能测试,测试工作吐槽》 原文链接https://testerhome.com/topics/38546 这篇文…...
0206-1-网络层
第 4 章 网络层 网络层提供的两种服务 虚电路服务 数据报服务 概要: 虚电路服务与数据报服务的对比 网际协议 IP 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有四个协议: 地址解析协议 ARP (Address Resolution Protocol)逆地…...
以 All-in-One 模式安装 KubeSphere时避坑
环境 ubuntu 18.04 准备 安装服务插件 socat 必须 可选但建议 conntrack 必须 可选但建议 ebtables 可选但建议 可选但建议 ipset 可选但建议 可选但建议 命令 sudo apt-get install socat安装docker 建议自行安装,不用KubeSphere 自带的 处理服务器配置 1…...
Android T 远程动画显示流程其二——动画的添加流程(更新中)
前言 接着上篇文章分析 Android T 远程动画显示流程其一 切入点——处理应用的显示过渡 下面,我们以从桌面点击一个应用启动的场景来分析远程动画的流程,窗口添加的流程见Android T WMS窗口相关流程 这里我们从AppTransitionController.handleAppTran…...
Pytorch-SGD算法解析
关注B站可以观看更多实战教学视频:肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) SGD,即随机梯度下降(Stochastic Gradient Descent),是机器学习中用于优化目标函数的迭代方法,特别是在处…...
物联网土壤传感器简介
物联网土壤传感器简介 物联网土壤传感器的工作原理基于多种物理、化学和生物原理,通过感应器等组成部件将土壤中的特征数据转化为电信号,从而进行采集、处理和输出。这些传感器主要包括土壤湿度传感器、土壤温度传感器、土壤酸碱度传感器和土壤颗粒物传…...
MySQL索引面试题(高频)
文章目录 前言什么时候需要(不需要))使用索引?有哪些优化索引的方法前缀索引优化索引覆盖优化索引失效场景 总结 前言 今天来讲一讲 MySQL 索引的高频面试题。主要是针对前一篇文章 MySQL索引入门(一文搞定)进行查漏补…...
SouthLeetCode-打卡24年02月第2周
SouthLeetCode-打卡24年02月第2周 // Date : 2024/02/05 ~ 2024/02/11 039.有效的字母异位词 (1) 题目描述 039#LeetCode.242.简单题目链接#Monday2024/02/05 给定两个字符串 *s* 和 *t* ,编写一个函数来判断 *t* 是否是 *s* 的字母异位词。 **注意࿱…...
Rust CallBack的几种写法
模拟常用的几种函数调用CallBack的写法。测试调用都放在函数t6_call_back_task中。我正在学习Rust,有不对或者欠缺的地方,欢迎交流指正 type Callback std::sync::Arc<dyn Fn() Send Sync>; type CallbackReturnVal std::sync::Arc<dyn Fn…...
Redis突现拒绝连接问题处理总结
一、问题回顾 项目突然报异常 [INFO] 2024-02-20 10:09:43.116 i.l.core.protocol.ConnectionWatchdog [171]: Reconnecting, last destination was 192.168.0.231:6379 [WARN] 2024-02-20 10:09:43.120 i.l.core.protocol.ConnectionWatchdog [151]: Cannot reconnect…...
css中选择器的优先级
CSS 的优先级是由选择器的特指度(Specificity)和重要性(Importance)决定的,以下是优先级规则: 特指度: ID 选择器 (#id): 每个ID选择器计为100。 类选择器 (.class)、属性选择器 ([attr]) 和伪…...
python3字符串内建方法split()心得
python3字符串内建方法split()心得 概念 用指定分隔符(默认是任何空白字符)将字符串拆分成列表。 语法 string.split(separator.max) 参数1.split(参数2,参数3) 参数1:string 字符串,需要被拆分的字符串。 参数2&a…...
html的列表标签
列表标签 列表在html里面经常会用到的,主要使用来布局的,使其整齐好看. 无序列表 无序列表[重要]: ul ,li 示例代码1: 对应的效果: 无序列表的属性 属性值描述typedisc,square,…...
【Pytorch深度学习开发实践学习】B站刘二大人课程笔记整理lecture04反向传播
lecture04反向传播 课程网址 Pytorch深度学习实践 部分课件内容: import torchx_data [1.0,2.0,3.0] y_data [2.0,4.0,6.0] w torch.tensor([1.0]) w.requires_grad Truedef forward(x):return x*wdef loss(x,y):y_pred forward(x)return (y_pred-y)**2…...
PyTorch使用Tricks:学习率衰减 !!
文章目录 前言 1、指数衰减 2、固定步长衰减 3、多步长衰减 4、余弦退火衰减 5、自适应学习率衰减 6、自定义函数实现学习率调整:不同层不同的学习率 前言 在训练神经网络时,如果学习率过大,优化算法可能会在最优解附近震荡而无法收敛&#x…...
10MARL深度强化学习 Value Decomposition in Common-Reward Games
文章目录 前言1、价值分解的研究现状2、Individual-Global-Max Property3、Linear and Monotonic Value Decomposition3.1线性值分解3.2 单调值分解 前言 中心化价值函数能够缓解一些多智能体强化学习当中的问题,如非平稳性、局部可观测、信用分配与均衡选择等问题…...
2 Nacos适配达梦数据库实现方案
1、修改源代码方式 Nacos 原生是不支持达梦数据库的,所以就要想办法让它 “支持”,因为是开源软件,我们可以从源码入手,在流行的 1.x 、2.x 或最新版本代码的基本上进行修改。 主要涉及到以下内容的修改: com/alibaba/nacos/persistence/datasource/ExternalDataS...
【Gitea】配置 Push To Create
引 在 Git 代码管理工具使用过程中,经常需要将一个文件夹作为仓库上传到一个未创建的代码仓库。如果 Git 服务端使用的是 Gitea,通常会推送失败。 PS D:\tmp\git-test> git remote add origin http://192.1.1.1:3000/root/git-test.git PS D:\tmp\g…...
关于postgresql数据库单独设置某个用户日志级别(日志审计)
前言: 很多时候我们想让数据库日志打印详细一点,但是又担心会对数据库本身产生一些不可控的影响,还会担心数据库产生的庞大的日志导致主机资源不太够用的影响。那么今天我们就通过讲解给单个用户设置 log_statement来解决以上这些问题。 注…...
阿里云ECS香港服务器性能强大、cn2高速网络租用价格表
阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品,中国电信CN2高速网络高质量、大规格BGP带宽,运营商精品公网直连中国内地,时延更低,优化海外回中国内地流量的公网线路,可以提高国际业务访问质量。阿里云服务…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
