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

如何更好的把控软件测试质量

如何更好的把控软件测试质量

在软件开发过程中,测试是确保软件质量、稳定性和用户体验的重要环节。随着需求的不断变化以及技术的不断进步,如何更好的把控软件测试质量已成为一个不可忽视的话题。本文将从几个维度探讨确保软件质量的方法和方案,帮助测试团队更好地把控软件质量。

1、建立知识库体系,文档资料整理与共享

在现代软件开发过程中,保障软件质量不仅仅依赖于技术本身,更需要团队之间高效的协作、知识的共享与积累。建立完善的知识库体系、进行文档资料整理与共享,能够极大提升软件开发与测试团队的工作效率,确保软件质量的一致性与持续性。

在软件质量保障方面,知识库体系扮演者至关重要的角色:

提高团队效率:通过集中存储常见问题、解决方案和技术文档,团队成员可以迅速找到参考资料,减少重复劳动。
减少知识流失:特别是在人员流动频繁的环境中,知识库有助于保存和传递关键信息,防止知识流失。
标准化工作流程:通过文档化和规范化各项流程,团队可以避免因经验差异导致的质量波动,保持一致性。
提升决策支持:团队成员可以利用已有的知识资源做出更加准确和快速的技术决策,避免重复试错。

知识库体系与软件质量之间有着紧密的联系,良好的知识库体系能够从多个方面保障软件质量:

1.1 减少缺陷与重复错误

知识库通过记录历史上的问题及其解决方案,帮助团队避免重复犯错。例如,测试人员可以查阅以前的缺陷报告,快速判断当前问题是否为已知问题,从而减少无效的排查工作

1.2 提高测试用例质量

测试用例是保障软件质量的重要手段之一。通过知识库,团队可以共享高质量的测试用例模板、常见功能的测试用例以及相关的边界测试策略。通过知识库的共享,测试人员可以快速找到合适的测试用例,避免遗漏重要的测试场景,确保测试的全面性。

1.3 优化开发和测试流程

通过文档资料的整理与共享,开发和测试团队可以更清晰地了解彼此的工作流程。例如,开发人员可以参考已建立的编码规范和设计文档,减少因开发不规范导致的质量问题;而测试人员则可以基于详细的需求文档和功能描述,编写更加精确的测试用例,提升测试的覆盖率和深度。

1.4 知识积累与持续改进

随着项目的推进,团队不断积累的知识和经验会逐渐丰富知识库。通过定期的回顾和总结,团队能够不断优化开发和测试流程,持续改进软件质量。

建立完善的知识库体系,通过文档资料的整理与共享,是保障软件质量的重要手段之一。它不仅帮助团队提高效率、减少重复工作,还促进了跨部门的协作与知识的持续积累。在实际操作中,团队需要注重文档的结构化、标准化管理,确保知识库的易用性与可访问性。同时,团队成员的主动参与和持续贡献,能够保持知识库的活力,从而为软件质量的保障提供坚实的基础。

2、质量保障行为贯穿软件整个生命周期

将质量保障行为贯穿整个项目生命周期:从专注于测试过程,拓展到了整个项目过程,从需求质量、设计质量、测试质量、线上质量这四个维度去把控项目质量;在整个项目过程中,qa都会深度的参与到各个环节,并调动各个角色共同对质量负责,实现测试左移和测试右移。

在这里插入图片描述
这里列举一个我们在某个项目中的应用实践的具体情况:
在这里插入图片描述
通过不同阶段的测试追踪,我们能够在每个阶段发现相关问题,并及时推动解决。

3、从用例设计转变为测试策略设计

在软件开发过程中,测试是确保软件质量、稳定性和用户体验的重要环节。随着软件应用变得越来越复杂,仅依靠测试用例已经无法满足高效、高质量的要求。因此,制定一套有效的测试策略显得尤为重要,测试策略是基于业务需求和技术实现的深入了解后,更全面的一种测试设计;那么一个有效的测试策略应该从哪几方面入手呢?

3.1 资源投入

首先就是需要根据需求明确资源的投入,资源的投入情况我们通过资源视图工具来明确核心模块、边界、以及责任人;当然也可以通过project工具来进行资源投入管理,因为project工具商业化,所以我们就自己通过资源视图的方式进行资源投入和核心模块的划分管理。
这里展示一张我们的资源视图
在这里插入图片描述

3.2 风险评估

在实际项目中,由于时间、预算和资源的限制,测试期间往往会出现各种各样的问题,所以就需要我们有风险评估和风险控制的能力,风险评估我们一般主要从5方面去考虑(人环时料法)。
在这里插入图片描述

3.2.1 人

人主要包括内因和外因,常见的内因主要包括疲惫和同化效应。
疲态:某一些功能点一直由某一位测试人员测试,经过多次回归后,测试人员对该功能点的测试显示出倦意和缺乏兴趣。
同化效应:经过和开发的长时间接触,往往会被开发的思维逻辑所同化,渐渐丧失从用户角度出发的测试观察点。
外因主要包括:
业务不熟:测试人员对被测系统的业务流程不熟悉,体现在对需求的理解上把握不准、理解不透侧、理解错误等。
测试人员变动:离职,岗位调动,请假等。
定位效应:测试过的可靠的功能,特别是在多次回归且没有发现问题,在此后往往会认为此功能是可靠的。

3.2.2 环

被测软件版本不统一;
测试软件环境不一致;
测试硬件环境不一致;
测试硬件未及时到位,环境不稳定等;
大家平时不知道有没有遇到过自己发现了一个bug,但是在开发机器上就复现不了。最后发现可能是触发的环境不一致,这种都是环的影响

3.2.3 时

时间不足,老板拍了上线时间,项目直接倒排期等等。

3.2.4 料

需求变更,这个应该在平时中经常会遇到。测试用例不够全面,造成漏测现象等等

3.2.5 法

场景缺失、方法缺失(比如测试某个新的系统或者架构框架,自己之前没有接触过,不知道怎么测试);测试用例实施不充分(用例写了,但是没有执行)等等

所在在进行项目风险评估时我们可以从这5方面去考虑,当然有些风险可以提前预估到,但是有些无法提前预估,那么对于预知的风险,我们就要去思考可解决的方法,尽量去规避,转移,减轻风险;对于未知风险,我们可以动用后备人、财、物来解决或者选择接受。
人风险:后备人力
环风险:提钱协调好或者准备好数据
时风险:做好排期评估
料风险:需求变更周知相关方人员,进行重新评估排期是否受影响,测试用例计划进行用例评审,尽量保证用例全面
法风险:做好测试计划,提钱了解调研测试中需要用到的方法
这些就是项目测试中风险评估的部分,提前预知风险,提前做好防范措施。

这里展示一张我们项目中进行的风险评估信息:
在这里插入图片描述

3.3 测试方案

测试方案部分是需要包括业务全流程,测试范围,测试方法,数据构造等几方面
业务全流程能够帮助我们更好的理解业务的数据流走向,能够更好的指导测试工作,一般情况可以以交互时序图的方式呈现
测试范围就是我们常说的测试用例,是需要明确到每个功能的测试点,并对测试用例进行必要的用例评审,从而确保用例覆盖全面
测试方法:通过时序图和用例就应该知道我们的项目应该如何进行测试,当然测试方法这部分推荐大家采用分层测试法,能够更全面的进行项目测试,
数据构造:明确项目中需要提前准备的环境,或者数据或者账号等,提前协调相关资源或者编写工具,来降低测试期间的数据构造成本。

3.4 测试过程

测试过程主要记录测试中使用的一些技巧,遇到的问题,测试的bug解决情况,以及测试过程中其他方面的问题记录,通过测试过程的记录,如果当前项目有二次迭代,能够更好的指导测试做好更全面,更快速的测试;对提高测试质量和测试效率有很大帮助

3.5 上线效果

项目测试完,就需要我们安排上线了,在我们的公司,上线是有测试同学进行操作的,所以我们需要进行上线list梳理,然后再按照要求进行上线,上线后我们也需要关注线上效果,对线上效果进行监控,做好项目总结,并且后续进行定期的日常巡检,发现问题,及时的跟踪解决。
在这里重点列一下我们上线list梳理时需要重点确认的几个点:

上线前建议提醒:
1、上线前需要开发配置好线上数据库字段配置 (db维度)
2、上线前需要开发配置好上线城市或者相关灰度配置 (wconfig维度)
3、如果有新增服务调用请记得申请服务调用 (服务调用维度)
4、前后端如果有写死的灰度配置记得修改(测试期间写死的代码维度配置)
5、为了方便测试,配合测试有做相关字段、参数、条件修改的地方记得修改回需求要求(测试期间修改的相关参数信息)
6、服务之间的上线依赖以及上线顺序

上线前,及时做好以上几点的校验确认,这样就能保证项目不会因为上线流程的问题而引起不必要的线上问题。

以上就是一个完整的测试策略要考虑的点,通过这几方面来形成一个标准化的作业模版,确保每个项目都能做到事前准备,事中跟进,事后总结。
对应测试策略详细模型如下:其中:资源视图表,人环时料法、交互时序图、分层测试法、数据构造等都是对应模块的操作工具
在这里插入图片描述这是我们测试策略在项目中的实际应用情况:
在这里插入图片描述

测试策略的制定是一个动态的过程。在实施过程中,测试团队需要根据项目的实际情况不断调整策略。例如,随着项目进度的推进,测试覆盖的范围可能需要调整,测试工具的选型可能需要更新,甚至测试方法和优先级也需要随时优化。

通过定期的回顾与总结,分析测试过程中的成功经验和存在的不足,可以不断提升测试策略的有效性。有效的测试策略将帮助团队高效交付高质量的产品,并降低后期维护成本。

测试策略不仅仅是一个文档,它是确保软件质量、稳定性和用户满意度的基石。在复杂的项目中,制定和执行合适的测试策略至关重要。通过从测试目标、类型、方法、工具等多个维度进行深入规划,测试团队能够更好地应对不同的挑战,为产品的成功发布提供强有力的保障。

4、基于需求特性驱动进行分层测试

在测试中,我们也需要基于需求特性所做的分层测试的探索,对业务特性做些测试方法的抽离;原始的分层测试方法可能就是每层进行每层的测试;
而我们是希望结合我们的业务特征,来去看当前哪种测试方法是可以帮助我们快速的去完成我们的测试任务,快速的让项目进行上线;
在体验类,运营类的需求上,我们更多的是关注功能以及页面的展示,所以我们更应该投入到功能测试和兼容性测试方面;
在一些跨部门协作的需求上我们会去重点关注交互接口的边界、异常等,来通过mock的方式来检验我们系统的健壮性,看看我们系统是否有容灾措施,在第三方服务出现问题时,我们系统是否可以做到降级处理或者补偿措施。
重构类的需求,需要我们大量去回归的,这时候我们需要通过对比测试,性能测试等进行重构类需求的测试;
基于不同的需求采用不同的分层测试策略,更会有针对性和侧重点,同时也提高了我们整个测试效率。

在这里插入图片描述这里是我们在项目中的实际应用:
在这里插入图片描述

总结

基于以上通过流程的把控,测试策略的设计、分层测试方法等维度来把控质量,业务线的线上质量也得到了显著提升,我们团队的线上bug数降低75%,累计沉淀的知识库也有200+,覆盖业务、系统、测试方法、测试依赖、项目总结、问题排查、总结规划等多维度,为团队留下了丰富的组织过程资产,也能够帮助更多的同学快速的掌握相关知识,更好的保障软件质量。
在这里插入图片描述

效率方面

当然除了质量,我们作为测试,还是需要考虑效率维度,在这里简单给大家分享几点我在效率方面做的几件事情
在效率方面我主要通过测试过程监控,发现问题,分析问题,并推动问题解决,从而达到降本提效的效果:
在这里插入图片描述

主要从四个方面入手:

(1)建立沟通机制并提供排查工具

首先和相关方同学建立沟通机制并提供排查工具,来降低无效bug数,降低bug修复时常;如果线上问题或测试问题中,大部分bug都是无效的,那么还是需要投入大量的人员去关注无效bug,进行bug解释和回答,无疑是一种人力成本的浪费,所以我们需要提供有效的沟通机制和培训方式,让使用者能够更好的理解产品,更方便的使用产品

(2)环境治理

对于测试和开发来说,测试环境的稳定性很重要,如果测试环境很稳定,那么测试起来就不会出现环境问题影响测试和联调进度,所以推动团队测试环境的搭建和使用是关键一环;另外上完线也是需要进行线上回归的,如果怕测试数据会对线上产生脏数据,这时候可以通过白名单的方式进行网络或者账号或者城市隔离过滤的方式,这样就可以避免对线上造成影响。当然具体的业务还是需要具体看用哪种方式更好

(3)建立流程规范

建立流程规范,明确提测标准,定期复盘,提高开发提测质量;开发的提测质量越高,那么测试起来越顺利,效率就会越快,另一方面,测试同学就有更多的时间和精力去考虑更细化的点,从而更好的保障项目质量。

(4)工具助力

工具助力,建立自动化任务体系,降低回归成本;说到效率肯定离不开自动化,那么我们就需要有这样一个自动化测试平台,可以把历史已有的功能集成上去,每次上线前让系统自动进行回归校验,这样就能大大的提高回归效率。

确保软件质量是一个系统化的过程,涉及到需求、设计、开发、测试、上线等多个环节。通过制定合理的质量控制策略,并结合自动化测试、性能优化、安全性测试等技术手段,测试团队可以有效地把控软件质量。同时,建立质量文化,培养团队的质量意识,能够确保软件质量持续稳定地提升。最终,只有通过全员的共同努力,才能交付出符合用户需求、功能完备、稳定高效的软件产品。当然,质量和提效方面都还有很多方法,这里我就简单列举了些我这边主要涉及的点,也欢迎大家留言反馈补充,让大家共同学习成长。

相关文章:

如何更好的把控软件测试质量

如何更好的把控软件测试质量 在软件开发过程中,测试是确保软件质量、稳定性和用户体验的重要环节。随着需求的不断变化以及技术的不断进步,如何更好的把控软件测试质量已成为一个不可忽视的话题。本文将从几个维度探讨确保软件质量的方法和方案&#xf…...

“漫步北京”小程序及“气象景观数字化服务平台”上线啦

随着科技的飞速发展,智慧旅游已成为现代旅游业的重要趋势。近日,北京万云科技有限公司联合北京市气象服务中心,打造的“气象景观数字化服务平台“和“漫步北京“小程序已经上线,作为智慧旅游的典型代表,以其丰富的功能…...

SOL链上的 Meme 生态发展:从文化到创新的融合#dapp开发#

一、引言 随着区块链技术的不断发展,Meme 文化在去中心化领域逐渐崭露头角。从 Dogecoin 到 Shiba Inu,再到更多细分的 Meme 项目,这类基于网络文化的加密货币因其幽默和社区驱动力吸引了广泛关注。作为近年来备受瞩目的区块链平台之一&…...

身份证实名认证API接口助力电商购物安全

亲爱的网购达人们,你们是否曾经因为网络上的虚假信息和诈骗而感到困扰?在享受便捷的网购乐趣时,如何确保交易安全成为了我们共同关注的话题。今天,一起来了解一下翔云身份证实名认证接口如何为电子商务保驾护航,让您的…...

【过程控制系统】第6章 串级控制系统

目录 6. l 串级控制系统的概念 6.1.2 串级控制系统的组成 6.l.3 串级控制系统的工作过程 6.2 串级控制系统的分析 6.2.1 增强系统的抗干扰能力 6.2.2 改善对象的动态特性 6.2.3 对负荷变化有一定的自适应能力 6.3 串级控制系统的设计 6.3.1 副回路的选择 2.串级系…...

YOLOv11融合针对小目标FFCA-YOPLO中的FEM模块及相关改进思路

YOLOv11v10v8使用教程: YOLOv11入门到入土使用教程 YOLOv11改进汇总贴:YOLOv11及自研模型更新汇总 《FFCA-YOLO for Small Object Detection in Remote Sensing Images》 一、 模块介绍 论文链接:https://ieeexplore.ieee.org/document/10…...

qt+opengl 三维物体加入摄像机

1 在前几期的文章中,我们已经实现了三维正方体的显示了,那我们来实现让物体的由远及近,和由近及远。这里我们需要了解一个概念摄像机。 1.1 摄像机定义:在世界空间中位置、观察方向、指向右侧向量、指向上方的向量。如下图所示: …...

day05(单片机高级)PCB基础

目录 PCB基础 什么是PCB?PCB的作用? PCB的制作过程 PCB板的层数 PCB设计软件 安装立创EDA PCB基础 什么是PCB?PCB的作用? PCB(Printed Circuit Board),中文名称为印制电路板,又称印刷…...

全球天气预报5天-经纬度版免费API接口教程

接口简介: 获取全球任意地区未来5天天气预报,必须传经纬度参数。可先调用【位置坐标】分类下相关接口获取地区经纬度坐标。 请求地址: https://cn.apihz.cn/api/tianqi/tqybjw5.php 请求方式: POST或GET。 请求参数&#xff1a…...

Shell编程8

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...

python语言基础-5 进阶语法-5.5 上下文管理协议(with语句)

声明:本内容非盈利性质,也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站,会尽量附上原文链接,并鼓励大家看原文。侵删。 5.5 上下文管理协议(with语句)(参考链接&#xff1…...

自动驾驶3D目标检测综述(三)

前两篇综述阅读理解放在这啦,有需要自行前往观看: 第一篇:自动驾驶3D目标检测综述(一)_3d 目标检测-CSDN博客 第二篇:自动驾驶3D目标检测综述(二)_子流行稀疏卷积 gpu实现-CSDN博客…...

【GESP】C++三级练习 luogu-B3661, [语言月赛202209] 排排

三级知识点一维数组练习,除了应用了数组以外,其余逻辑比较简单,适合初学者。 题目题解详见:https://www.coderli.com/gesp-3-luogu-b3661/ 【GESP】C三级练习 luogu-B3661, [语言月赛202209] 排排队 | OneCoder三级知识点一维数…...

【PPTist】添加PPT模版

前言:这篇文章来探索一下如何应用其他的PPT模版,给一个下拉菜单,列出几个项目中内置的模版 PPT模版数据 (一)增加菜单项 首先在下面这个菜单中增加一个“切换模版”的菜单项,点击之后在弹出框中显示所有的…...

大疆上云api开发

目前很多公司希望使用上云api开发自己的无人机平台,但是官网资料不是特别全,下面浅谈一下本人开发过程中遇到的一系列问题。 本人使用机场为大疆机场2,飞机为M3TD,纯内网使用 部署 链接: 上云api代码. 首先从github上面拉去代码 上云api代码github. 后…...

IDEA2023 SpringBoot整合MyBatis(三)

一、数据库表 CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT,gender ENUM(Male, Female, Other),email VARCHAR(100) UNIQUE,phone_number VARCHAR(20),address VARCHAR(255),date_of_birth DATE,enrollment_date DATE,cours…...

【Apache Paimon】-- 6 -- 清理过期数据

目录 1、简要介绍 2、操作方式和步骤 2.1、调整快照文件过期时间 2.2、设置分区过期时间 2.2.1、举例1 2.2.2、举例2 2.3、清理废弃文件 3、参考 1、简要介绍 清理 paimon (表)过期数据可以释放存储空间,优化资源利用并提升系统运行效率等。本文将介绍如何清理 Paim…...

C语言数据结构——详细讲解 双链表

从单链表到双链表:数据结构的演进与优化 前言一、单链表回顾二、单链表的局限性三、什么是双链表四、双链表的优势1.双向遍历2.不带头双链表的用途3.带头双链表的用途 五、双链表的操作双链表的插入操作(一)双链表的尾插操作(二&a…...

Shell脚本基础(4):条件判断

内容预览 ≧∀≦ゞ Shell脚本基础(4):条件判断声明导语基本的if语句结构数值比较运算符文件测试运算符扩展:使用elif和else使用&&和||结合条件判断小结 Shell脚本基础(4):条件判断 声明…...

在 Swift 中实现字符串分割问题:以字典中的单词构造句子

文章目录 前言摘要描述题解答案题解代码题解代码分析示例测试及结果时间复杂度空间复杂度总结 前言 本题由于没有合适答案为以往遗留问题,最近有时间将以往遗留问题一一完善。 LeetCode - #140 单词拆分 II 不积跬步,无以至千里;不积小流&…...

win10中使用ffmpeg和MediaMTX 推流rtsp视频

在win10上测试下ffmpeg推流rtsp视频,需要同时用到流媒体服务器MediaMTX 。ffmpeg推流到流媒体服务器MediaMTX ,其他客户端从流媒体服务器拉流。 步骤如下: 1 下载MediaMTX github: Release v1.9.3 bluenviron/mediamtx GitHub​​​​​…...

16. 【.NET 8 实战--孢子记账--从单体到微服务】--汇率获取定时器

这篇文章我们将一起编写这个系列专栏中第一个和外部系统交互的功能:获取每日汇率。下面我们一起来编写代码吧。 一、需求 根据文章标题可知,在这片文章中我们只进行汇率的获取和写入数据库。 编号需求说明1获取每日汇率1. 从第三方汇率API中获取汇率信…...

C#元组详解:创建、访问与解构

在C#中,元组(Tuple)是一种数据结构,用于将多个元素组合成一个单一的对象。元组可以包含不同类型的元素,并且每个元素都有一个指定的位置(索引)。元组在需要临时组合多个值而不想创建自定义类时非…...

wsl2安装

Windows Subsystem for Linux 2 (WSL2) 是 Windows 10 和 Windows 11 中用于运行 Linux 二进制可执行文件的兼容层。WSL2 是 WSL 的最新版本,提供了更快的文件系统性能和完整的系统调用兼容性。本教程将指导你如何在 Windows 系统上安装 WSL2。 前提条件 操作系统要…...

android studio无法下载,Could not GET xxx, Received status code 400

-- 1. 使用下面的地址代替 原地址: distributionUrlhttps\://services.gradle.org/distributions/gradle-6.5-all.zip 镜像地址: distributionUrlhttps\://downloads.gradle-dn.com/distributions/gradle-6.5-all.zips 上面的已经不好用了 https\://mirrors.cloud.tencent.c…...

RUST学习教程-安装教程

文章目录 参考文档安装教程更新卸载 参考文档 https://course.rs/first-try/installation.html 安装教程 Linux或者mac安装教程 curl --proto https --tlsv1.2 https://sh.rustup.rs -sSf | sh安装完成,当出现command not found的时候,需要source一下…...

redis6.0之后的多线程版本的问题

一、redis早期版本和新版本的讨论 这个问题其实有些废话,哪个版本肯定都有不同啊。其实这里主要是提到的网上的大家对Redis6.0中的多线程版本的不同即以前宣传的Redis是单线程程版的,之后变成了多线程版本的。网上对这个讨论非常激烈,反正各…...

python的 pandas.Dataframe 和 pandas.Series基础内容

目录 0 有一个比较麻烦琐碎的地方 1 python pandas.Dataframe 2 pd.concat() 可以合并 pd.Dataframe 2.1 pd.concat() 合并规则 3 pd.Dataframe.drop() 删除行列的操作 4 pd.Dataframe 列操作 5 pd.Dataframe 行操作 5.1 sample_dataframe2.head(n2) 取前面的n行&…...

golang学习5

为结构体添加方法 异常处理过程...

【C语言】11月第二次测试 ing

文章目录 1.输入n名同学的成绩和学号,对成绩排序,输出对应学号 要求重复的学号重新输入 计算n名同学的平均值,对小于60分的同学删除分数 大于60分的同学输出:优秀:几人,良好:几人,中…...