当前位置: 首页 > news >正文

软件测试如何推进项目进度?

在软件研发中,有一种思想叫TDD,即测试驱动开发,TDD是敏捷方法中的一项核心实践,其原理是在开发功能代码之前,先编写单元测试用例代码,对要编写的函数或类明确测试方法后,再进行设计与编码。

本篇不是讲如何来实践TDD,而是利用这种思想来推进项目的进度。大部分人可能都有这样的感受“别人催着自己的工作往前赶,心里贼反感”,“而自己催着别人往前赶,心里只有快感”。

在大部分项目都在走敏捷模式的情况下,项目经理已经被弱化,而产品经理更多关注设计、客户,使项目团队经常出现一团散沙的情况。作为下游的测试团队就贼难受,上游的设计、开发掉了链子,如延期,在时间截点已被卡死的情况下,测试团队很难顺利完成项目测试并交付。

项目没有顺利交付,不管什么原因,板子必将指向测试。所以,此时活用“TDD”显得很有必要,精髓是“驱动”。而测试要驱动设计、开发,根据小酋的实践,需要从计划、需求、用例、转测四点着手。

计划

不管项目如何变化,都需要一个大家共同确定的计划。不用出一个非常详细的计划,可以是一个一个的时间节点,比如A模块什么时候完成设计,什么时候交付测试,什么时候完成测试。

当这些节点确定的情况下,我们才能去驱动项目进度。不论是产品经理做设计变更,还是开发人员落地搬砖,测试才有一个底,应对其中的变化,是力争调整计划,还是协调加大测试资源投入,亦或是调整测试策略,才能做到有理有据,有条不紊。

否则只有截点的情况下,可能产品经理说对不起,客户有了新的需求,设计要多花点时间,大家后面紧一紧;开发人员说对不起,这个技术超出了预期,或者又加了新需求,那只有辛苦测试后面加加班;最后轮到测试,截点在望,只能边吐槽边熬夜,搞得身心憔悴。

需求

需求,大家都知道非常重要,但问题常常还是出在上面。比如,大家理解不一致,场景、业务考虑不全,脱离实际无法实现等。

作为测试,我们必须认真啃需求,产品经理知道的,我们一定要知道,而产品经理不知道的,我们还得指出来,做好跟踪,确认解决。如果判断极可能出现理解偏差的地方,要与产品经理确认,理解一致后把信息同步给对应的开发人员。核心要点:尽可能早地发现需求中的问题,并跟踪、确认解决,减少开发歧义和后期出现的设计缺陷。

用例

用例越快完成越好,越早完成评审越好。

要推动项目进度,测试用例的设计也要提效。在敏捷项目中,我不倡导教条主义,即一定要按照XXX标准模板去编写,而应该积极探索更加快捷的方式,如测试思维导图,测试点列表等。用例,我们应花精力在设计思想,业务逻辑上,而不应该过分追求形式,除非时间允许,或者有其它需要(如后续作为客户验收用例)。

用例出来后,要做评审。可以根据版本大小,确定参与者的范围,但一定要有产品经理。评审通过后的用例,我们可以分享给开发人员,这也是开发人员可以查漏补缺,消除需求理解偏差的重要途径之一。

转测

要想测试顺利,转测(即开发提测)质量也关键。

测试最不能忍受的情况,可能就有:提测后,明显的功能都出错。如转测登录模块,输入账号、密码,点击登录报错了!

那怎么能保证转测质量呢?这里有三个实践:

1、提高开发人员的质量意识

这可能很难做到,所以退而求次,提高开发leader(或者主导开发人员)的质量意识,只有开发leader去强调、去推动,转测质量才有明显的改善。

我们要做的就是,平时和开发leader搞好关系,多交流项目中的看法,潜移默化中达成对软件质量的统一看法。

2、开发自测

我们可以寻求上面的支持,引入开发自测的环节。在开发提测前,我们可以提供自测用例,这些用例应尽可能精简,能覆盖提测内容的主要功能,如登录模块“输入账号、密码登录成功”。

3、冒烟测试

同样,我们为了保证转测质量,引入冒烟测试环节。即开发转测后,只有当我们把主干测试用例(与上面开发自测用例同理)通过后,才进一步做后续的系统测试。否则,有主干用例执行失败,就视为冒烟测试失败,打回开发责令其整改后再提测。

通过上述四个方面,我们基本上就能很好地驱动项目了,但实际情况远不如文字这么简单、明了。具体执行效果还得依赖于我们的沟通能力,协作能力,以及人格魅力;不管是能力、还是魅力,都建立在我们不断总结、思考、学习的基础上。

2023最新Jmeter接口测试从入门到精通(全套项目实战教程)

相关文章:

软件测试如何推进项目进度?

在软件研发中,有一种思想叫TDD,即测试驱动开发,TDD是敏捷方法中的一项核心实践,其原理是在开发功能代码之前,先编写单元测试用例代码,对要编写的函数或类明确测试方法后,再进行设计与编码。 本…...

首次尝试鸿蒙开发!

今天是我第一次尝试鸿蒙开发,是因为身边的学长有搞这个的,而我也觉得我也该拓宽一下技术栈! 首先配置环境,唉~真的是非常心累,下载一个DevEco Studio 3.0.0.993,然后配置环境变量这些操作不用多说&#xff…...

前端面试题-react

1 React 中 keys 的作⽤是什么? Keys 是 React ⽤于追踪哪些列表中元素被修改、被添加或者被移除的辅助标识在开发过程中,我们需要保证某个元素的 key 在其同级元素中具有唯⼀性。在 React Diff 算法中 React 会借助元素的 Key 值来判断该元素是新近创建…...

EIP-2535 Diamond standard 实用工具分享

前段时间工作对接到了这标准的协议,于是简单介绍下这个标准分享下方便前端er使用的调用工具 一、标准的诞生 在写复杂逻辑的solidity智能合约时,经常会碰到两个问题,升级和合约大小限制。 升级目前有几种proxy模式,通过delegateca…...

【LangChain】向量存储(Vector stores)

LangChain学习文档 【LangChain】向量存储(Vector stores)【LangChain】向量存储之FAISS 概要 存储和搜索非结构化数据的最常见方法之一是嵌入它并存储生成的嵌入向量,然后在查询时嵌入非结构化查询并检索与嵌入查询“最相似”的嵌入向量。向量存储负责存储嵌入数…...

Debian/Ubuntu 安装 Chrome 和 Chrome Driver 并使用 selenium 自动化测试

截至目前,Chrome 仍是最好用的浏览器,没有之一。Chrome 不仅是日常使用的利器,通过 Chrome Driver 驱动和 selenium 等工具包,在执行自动任务中也是一绝。相信大家对 selenium 在 Windows 的配置使用已经有所了解了,下…...

[SQL挖掘机] - 窗口函数 - 合计: with rollup

介绍: 在sql中,with rollup 是一种用于在查询结果中生成小计和总计的选项。它可以与 group by 子句一起使用,用于在分组查询的结果中添加附加行。 with rollup 的作用是为每个指定的分组列生成小计,并在最后添加一行总计。这样,…...

远程控制平台一之推拉流的实现

确定框架 在选用推拉流框架的时候,有了解过nginx+rtmp/rtsp,Janus,以及其他开源的推拉流框架,要么是延迟严重(延迟一分多钟),要么配置复杂,而且这些框架对于只是转发远程画面这个简单需求来说,过于庞大了。机缘巧合之下,我了解到了一个简单易用的框架,就是ZeroMQ的…...

RTT(RT-Thread)线程管理(1.2W字详细讲解)

目录 RTT线程管理 线程管理特点 线程工作机制 线程控制块 线程属性 线程状态之间切换 线程相关操作 创建和删除线程 创建线程 删除线程 动态创建线程实例 启动线程 初始化和脱离线程 初始化线程 脱离线程 静态创建线程实例 线程辅助函数 获得当前线程 让出处…...

你真的会自动化吗?Web自动化测试-PO模式实战,一文通透...

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

C# 使用堆栈实现队列

232 使用堆栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(、、、):pushpoppeekempty 实现 类:MyQueue void push(int x)将元素 x 推到队列的末尾 int pop()从队列的开头移除并返回元素 in…...

git操作:修改本地的地址

Windows下git如何修改本地默认下载仓库地址 - 简书 (jianshu.com) 详细解释: 打开终端拉取git时,会默认在git安装的地方,也就是终端前面的地址。 需要将代码 拉取到D盘的话,现在D盘创建好需要安放代码的文件夹,然后…...

【以图搜图】Python实现根据图片批量匹配(查找)相似图片

目的:可以解决在本地实现根据图片查找相似图片的功能 背景:由于需要查找别人代码保存的图像的命名,但由于数据集是cifa10图像又小又多,所以直接找很费眼睛,所以实现用该代码根据图像查找图像,从而得到保存…...

【无标题】JSP--Java的服务器页面

jsp是什么? jsp的全称是Java server pages,翻译过来就是java的服务器页面。 jsp有什么作用? jsp的主要作用是代替Servlet程序回传html页面的数据,因为Servlet程序回传html页面数据是一件非常繁琐的事情,开发成本和维护成本都非常高…...

【Linux】进程间通信——system V共享内存 | 消息队列 | 信号量

文章目录 一、system V共享内存1. 共享内存的原理2. 共享内存相关函数3. 共享内存实现通信4. 共享内存的特点 二、system V消息队列(了解)三、system V信号量(信号量) 一、system V共享内存 1. 共享内存的原理 共享内存是一种在…...

CentOS实现html转pdf

CentOS使用实现html转PDF,需安装以下软件: yum install wkhtmltopdf # 转换工具,将HTML文件或网页转换为PDFyum install xorg-x11-server-Xvfb # 虚拟的X服务器,在无图形界面环境下运行图形应用程yum install wqy-zenhei-fonts #…...

【C++】基于多设计模式下的同步异步日志系统

✍作者:阿润021 📖专栏:C 文章目录 一、项目介绍二、项目实现准备工作1.日志系统技术实现策略2.相关技术知识补充2.1 不定参函数设计2.2 设计模式 三、日志项目框架设计1.模块划分2.各模块关系图 四、详细代码实现1.实用工具类设计2.日志等级…...

防火墙监控工具

防火墙监控是跟踪在高效防火墙性能中起着关键作用的重要防火墙指标,防火墙监控通常应包括: 防火墙日志监控防火墙规则监控防火墙配置监控防火墙警报监控 防火墙监控服务的一个重要方面是它应该是主动的。主动识别内部和外部安全威胁有助于在早期阶段识…...

组合模式——树形结构的处理

1、简介 1.1、概述 树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单、办公系统中的公司组织结构等。如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题。组合模式通过一种巧妙的设计方案使得用户可以一致性地处理整个树形…...

从实体按键看 Android 车载的自定义事件机制

作者:TechMerger 在汽车数字化、智能化变革的进程中,越来越多的车机设计或部分、或全部地舍弃了实体按键,进而把车主操作的入口转移到了车机 UI 以及语音助手。 但统一、高效的零层级 UI 颇为困难,语音的准确率、覆盖率亦不够完善…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...