首页 > 其他分享 >测试过程效率的提升和演变

测试过程效率的提升和演变

时间:2023-10-13 14:23:48浏览次数:36  
标签:需求 测试 演变 质量 交付 迭代 提测 效率

昨天看到这样一个很有意思的问题:

一个月发布一个版本,核心需求经常变更,导致影响范围大不好评估,但对交付质量的要求比较高。

单元测试、自动化测试才开始建设,为了保障质量只能投入大量资源做回归测试验证,但每个版本留给测试的时间又不够充足。这种尴尬的阶段,该如何保障产品质量?

这是一个很典型的案例,在很多公司的研发团队曾经都存在类似问题,甚至现在依然存在。

它集齐了需求(频繁变更)、开发(代码经常修改)、测试(测试手段匮乏)这三大软件研发交付环节最严重的几点问题,要提升产品质量就势必要解决这些问题。

这篇文章,我会结合自己的实践经验和思考,尝试给出这个问题的一些解决方案。

 

软件研发交付的发展史

最早也是最为大家熟知的,应该是瀑布式的软件迭代交付模型,如下图:

PS:网图侵删。

在软件设计之初,就确定好要实现的需求,然后进行设计实现,工时资源预估,按顺序一步步实现并上线交付。

因为要实现的需求是稳定的,编码也只需要按照设计的方案来实现,测试要验证的范围以及边界更好评估。虽然瀑布模型的迭代周期一般比较长,但整个过程稳定可控,交付质量相对也比较高。

后来随着商业环境的变化速度不断加快,软件交付模型也在跟随着快速发展,进而衍生出了多种交付模型,比如V型、W型、双W型、版本火车、敏捷理念。

这些模型的出现,一方面提升了需求的交付效率,可以让需求更快的发布上线为用户提供服务;另一方面,对软件测试这一环节来说,也带来了很大的促进和改变。

 

提升产品质量的整体方案

在瀑布模型中,测试只是整个软件迭代交付中的一个环节,大家按部就班的分析需求,设计测试用例,执行用例跟进缺陷修复和验证即可。

但到了当下这种提倡快速迭代交付和敏捷的时代,大家对软件测试的定位已经不仅仅是其中一环,而是要贯穿整个软件迭代交付的生命周期,做全周期的质量保障工作。主要体现在如下几点:

需求和设计阶段

评估需求的合理性(是否有遗漏、描述不清、存在逻辑漏洞)、可测性(将大需求拆分为测试可介入的小需求)以及设计是否满足需求要求、是否美观、交互友好性等。

方案和编码阶段

针对技术方案进行评审(方案实现难易程度、可测性、是否需要更多资源),针对项目排期和发版计划评估对应的资源投入(资源/时间/成本三者需要根据对质量的要求做平衡抉择)。

测试活动的开展应该尽早介入,比如在编码和研发自测阶段,测试可以充当研发自测的辅助,提供测试用例、测试数据,让问题在编码自测阶段就充分暴露。

测试和交付阶段

该阶段我个人认为主要做好两点工作,质量门禁+测试计划。质量门禁(提测准时率、构建成功率、缺陷收敛率、缺陷reopen率)的作用在于避免风险向下游传递,放大影响范围和修复成本;测试计划的重要性在于通过合理可控的方式来逐步验证交付的软件是否符合需求设计和质量要求。

上面的内容出现了好几次评审,很多人会认为评审太过于虚浮,不真切。但评审真正的价值在于从用户使用场景角度出发,通过评审提问,把需求逐步澄清并形成验收条件,产、研、测三方共同确认,形成共识,以保证大家对需求的认知不发生偏差,为后续团队正确的做事提供有价值的指导。

上述的三个阶段要做的事情,其实近几年在很多公司已经有了落地实践,其实就是测试左移+测试右移。

详细内容请看我之前的文章《测试左移右移,到底是什么?》

 

提升测试过程效率的手段

回到文章开头的这个案例,面对需求(频繁变更)、开发(代码经常修改)、测试(测试手段匮乏)这种情况,我们该通过哪些具体的手段来解决问题,提升交付质量。

首先面对需求的频繁变更,在需求评审阶段就要将变更可能带来的风险列举出来,并对可能带来的影响准备应对预案。同时做好提测和发版计划,让问题更早暴露,将问题的影响范围控制在更小的范围内。

其次将大的版本需求拆分为小的测试可介入的需求,做好版本和分支管理分批提测。这样即使需求变更,所影响到的也只是变更的这部分,而不是影响整体的交付进度和效率。这样做还有一个好处是降低一次性提测带来的集成测试成本和难度。

当然,版本和分支管理,需要较好的持续集成流水线来支撑,并辅以一定的自动化测试加快验证,缩短信息反馈耗时。

对于不同批次提测的需求,如果彼此之间有调用依赖,则提前约定好兼容方式,最好是制定一个兼容规范。针对分批提测,还有一个辅助手段则是做好Mock,避免上下游依赖方未提测导致阻塞了当前批次的测试进度。

最后,做好监控告警(原则上每次上线的代码,与其匹配的监控手段也应该在线上发布时一同发布),即使出现问题也能及时的感知和修复,避免问题扩大。

当然监控告警是一个滞后手段,线上还可以通过自动化的方式进行关键流程与核心场景的巡检,实时检测。

 

很多时候影响测试过程效率的并不是技术手段的匮乏,而是在需求和计划阶段没有考虑周全。技术手段只能治标,要治本还是要在管理和流程,评估和计划方面尽早考虑。

 

标签:需求,测试,演变,质量,交付,迭代,提测,效率
From: https://www.cnblogs.com/imyalost/p/17761991.html

相关文章

  • BOSHIDA DC电源模块低温是否影响转换效率
    BOSHIDADC电源模块低温是否影响转换效率DC电源模块是一种常用的电源转换装置,其主要作用是将输入的电源信号变换成需要的输出电源信号。在实际应用中,DC电源模块的性能会受到多种因素的影响,其中低温也是一个重要的影响因素。本文将从转换效率的角度,探讨低温对DC电源模块的影响。......
  • [转载]jmeter - 如何在指定数量的线程失败后停止 Jmeter 测试
     原地址https://www.coder.work/article/7090277  我有一个事务Controller,它在我的Jmeter测试计划中有一个http请求。交易名称和url来自CSV文件。最后,总执行分为5个不同的事务。测试计划:测试计划-线程组-用户定义的变量总样本执行量为8000-10000。现在......
  • 标准工时制度通过多种方式提高生产效率
    标准工时制度在现代企业管理中扮演着重要的角色,它可以通过多种方式提高生产效率。在如今竞争激烈的市场环境下,企业需要持续提高运营效率以保持竞争力。以下是标准工时制度提高生产效率的一些主要途径:首先,标准工时制度可以帮助企业更准确地预测生产需求。通过对历史数据和市场趋势......
  • sql数据库怎么用:如何使用SQL数据库来提高业务效率
    SQL数据库是一种关系型数据库,它使用StructuredQueryLanguage(SQL)来存储、组织和检索数据。它可以被用来创建、修改和管理数据库中的表和数据。SQL数据库是一种关系型数据库,它使用StructuredQueryLanguage(SQL)来存储、组织和检索数据。它可以被用来创建、修改和管理数据库中的表和......
  • ubuntu server 网速测试
    ubuntuserver网速测试 speedtest-cli是一个用于测试网络带宽的命令行工具,可以快速测量下载和上传速度。你可以按照以下步骤安装和使用它:打开终端。安装speedtest-cli:sudo apt-get install speedtest-cli运行测试:speedtest-cli ......
  • Go语言中的性能测试
    单元测试测试单元的结果是否符合预期//go_test.goimport( "fmt" "testing")funcAdd()int{ fmt.Println("AAAAAAAAAAAAAA") return5}funcSub()int{ fmt.Println("SSSSSSSSSSSSSSSS") return5}funcTestFun1(t*testing.T){......
  • 云服务测试DPDK
    一、DPDK的系统要求1.1x86上的BIOS的设置先决条件1.1.1 对于大多数平台,不需要特殊的BIOS设置即可使用基本的DPDK功能;1.1.2为了获得额外的HPET定时器和电源管理功能以及小数据包的高性能,可能需要更改BIOS设置;1.2DPDK编译(Ubuntu22.04)......
  • 软件测试面试题-逻辑题【杭州多测师_王sir】
    1.你有不限量的水,还有两个罐子,容量分别是5升和3升,怎么取4升的水?先把3升的杯子装满,倒进5升的杯子;之后把3升的杯子装满,倒进5升的杯子,里面还剩1升。之后把5升的杯子里的水都倒掉,把3升的杯子里的1升倒进去。再把3升的杯子装满,倒进5升的杯子。2.房间内有三盏灯,房外有三个开关,只能......
  • Postman接口测试
    编写代码之前需手动提前创建并选择对应的环境!!!postman使用的是js语言1、自动关联数据描述:接口A的请求参数依赖于接口B的响应数据例如:接口调用需要登录校验,需要先调登录接口拿到token/cookie解决方法:①从接口B的响应数据中提取关联数据,保存关联数据在公共容器中pm对象的详......
  • 【安规测试之接地阻抗测试方法】
    接地阻抗测试:使用25A的电流,测试外壳到PE端的电阻要小于100mΩ使用工具:接地阻抗测试仪(如下图) 注意事项:1、强电流,要带绝缘手套操作。2、测试时别靠近触摸产品仪器。测试步骤:按下图进行接线,黑线连接产品PE端,红线固定在产品外壳金属部分,在接地阻抗测试仪上设置好25A电流,上限为100mΩ......