修复和预防Bug的成本的量化对比

ChatGPT自动修复Bug:多轮对话策略实现低成本高效程序修复 自动程序修复(APR)是软件工程中提升代码质量与开发效率的关键技术,其核心原理是通过自动化工具识别并修正代码缺陷。传统APR方法依赖预定义规则或符号执行,常面临泛化能力弱、补丁质量低等瓶颈。随着大型语言模型(LLM)的发展,基于语义理解的智能修复成为可能,其技术价值在于模拟人类调试的迭代推理过程,显著提升修复的准确性与通用性。在实际应用场景中,结合多轮对话与反馈循环的策略,能够将LLM的代码生成能力转化为高效的Bug修复工作流。本文以ChatGPT为例,深入探讨如何通过提示词工程、成本控制与自动化验证,构建 阅读详情
当我们打算提高软件质量的时候,首先考虑到的可能就是购买新工具的成本和实施新工具的人力成本,以及可能会因为增加了新的测试过程而“延长”的开发生命周期。但实际上,首先我们应该考虑从现在的产品生命周期中查找和修复问题产生的成本。除了这些直接的成本之外,我们有没有考虑过因为错过发布日期而错失的机会成本,以及由于客户不满意或者产品召回而造成的信誉损失?

在《Google如何测试软件 —— 帮我像Google一样测试》(“How Google Tests Software –Help me test like Google”)一书中,作者介绍了从开始到现在,Google™软件的测试流程是如何演变的。因为测试不够全面而产生的问题曾严重阻碍了Google的成功之路。Google根据参与修复问题的工程师的数量来计算出由于质量不过关而增加的成本。于是他们立刻制定了一个计划,决定通过持续测试来提高软件质量,并且尽量在软件开发生命周期的早期进行测试,这样就能够把那些修复问题的工程师解放出来,去研发新功能,从而在市场中取得竞争优势。

下面的例子有点像一个中型汽车项目一年的数据,其中使用了一些数字来源于Google:


表1:Google的度量表


表2:自己的度量表


我们在做这个测试的时候,很可能会发现,我们的团队将30%-50%的时间都花在了修复bug上面,这些都是直接成本。想象一下,如果我们将这些修复bug的时间更多地用在产品的研发和新功能的实施上,会怎么样?如果我们的用户碰到的bug越来越少,因而我们在用户支持方面的成本也越来越低,又会怎么样?


如果客户对我们越来越满意,那么他们很可能会向我们购买更多的产品!


很多机构和 Google一样,成功地采用了持续的软件质量控制方法,他们已经发现在开发生命周期中进行自动化测试会会带来巨大的回报。而采用这种方法的关键在于,尽量在开发早期建立查找bug的测试平台 —— 也就是说尽量在修复成本最低的时候发现bug。


下面的数据是Google提供的样例成本,表示的是在不同的测试阶段发现bug并进行修复所需要的成本。这些数据清楚地说明:在开发过程中越早发现问题,修复这些问题所耗费的成本越低。


表3:Google修复问题的成本

既然我们已经知道了修复什么样的bug最耗时耗力了,我们就应该知道怎么做最能有效地减少bug,提升质量。发现和修复bug的平均成本并不会随着时间的过去而降低,但是通过改善测试流程并实现测试的自动化,能够总体降低维护成本。下面的图表说明,制定一个更加完善的测试流程是如何降低软件的维护成本的。

图:软件的维护成本随着软件测试流程的不断成熟而不断下降

不同的组织机构的测试流程的成熟度可能是不同的。有些机构可能根本没有正式的测试基础框架,而有些组织,比如Google,却有完善的测试框架和流程。大多数组织可能都处于这两个极端之间。

我们应该从哪里开始着手来提高质量呢?和大多数工程任务一样,最有效的方法就是制定一个有规则的、按步实施的流程。所有的改变都要以前面所做的改进为基础,如下图所示。


图:软件测试流程可以逐步完成

通过采取注重预防bug,而不是修复bug的方法,企业或机构就能解放更多宝贵的工程师资源,来研发新产品,从而开拓出更大的市场。

要减少修复bug的成本,最好先引进静态分析和代码覆盖率工具。实施这些工具的时候,不需要改变开发团队的工作流程,只是会生成一些可操作的指标来帮助提高质量。VectorCAST/Lint静态分析工具会报告有问题的以及难以维护的编码结构。VectorCAST/Cover代码覆盖率工具会报告源代码中哪些代码已经经过检测,以及哪些尚未经过检测。

各个研发机构要先确定他们的软件测试流程的成熟度,并能够和他们的团队一起了解他们所面临的挑战,帮助他们改进测试方案,在产品发布前减少bug,加快投放市场的步伐,提高投资回报率。


BUG分析 建议从以下几点分析总结BUG,尽量用数据去量化和证明  1.   BUG分布图(可明确知道哪些模块存在BUG多),及对应rd的开发质量、qa漏测情况  2.   BUG严重性(BUG严重性,严重错误和次要错误占有比例大,相对系统的功能不稳定)  3.   严重BUG打开和严重BUG总数(比例越大,说明开发修复bug的效率偏低,代码不稳定,发布后出现bug的几率增加)---bug重复打开率  4. ... 阅读详情

相关推荐

质量改进与项目风险管理:如何提前预防问题?

想象一下:你精心准备了一场生日派对,却在客人到来前发现蛋糕没烤好、气球没充气、音响坏了——这时候手忙脚乱的"救火",远不如提前一天列好清单逐项检查来得从容。项目管理也是如此:根据PMI(项目管理协会)的数据,缺乏预防措施的项目中有73%会出现范围蔓延,平均需要多消耗27%的成本。本文的目的,就是帮你建立一套"派对前检查清单"式的预防体系,将质量问题和风险消灭在萌芽状态。质量改进的核心方法论(不是事后检验,而是过程预防)项目风险的全周期管理(从识别到监控的闭环)

项目管理的博客 900

各阶段修改BUG所需成本

PONC是Price of Nonconformance的缩写,是指由于没有第一次做对或做错事而造成人财物的额外浪费。简称:质量成本。质量成本在软件工程里可衡量缺陷代价,如果后期项目出质量问题,后期投入的成本会随着阶段不同而呈指数上升。下面的图可以很清晰看出不同阶段发现BUG,需修复的成本! 通过上面的图表,我们可以清晰看出: 1. 通过Code Review发现并修复BUG,付出

杰瑞的专栏 1万+

修复软件缺陷的成本

对于发现和修复缺陷,我们有不同的看法和策略。关于选择是否修复和什么时候修复缺陷,取决于很多因素,其中最容易理解的一个因素是修复一个缺陷的实际成本。   今天,测试专家JohannaRothman将和大家分享一个关于计算系统测试中修复缺陷的成本的方法,以及如何将这个方法纳入项目的大框架中。   Dan在一个有着其他四个成员的项目中做开发人员。他们在项目开始的前八个月只开发产品,不修复任何缺陷,除非缺陷阻塞他们继续开发。Dan和他的团队认为同时修复所有缺陷是更节省成本的。因此在第九个月,即预期发布的前一个月,他们觉得是时候修复缺陷了。   Avery在一个与市场实际同步的公司当项目经理。由于受到限

软件缺陷修复的成本为什么是早期的100倍

在《质量内建的最大价值是降本增效》里,我们分析的结论是,上海惠艾质量内建实践能大幅减少返工成本,从而直接支持“降本增效”。中间提到缺陷应尽早修复,后期修复的返工成本是早期的100倍(Boehm博士,注1), 有些同学反馈询问,同一个缺陷修复,为什么尽早修复和后期修复的差距这么大?多出来的成本具体有哪些?

weixin_68153586的博客 2991

STM32F4XX软件模拟I2C实现MPU6050姿态数据采集

本文详细介绍了在STM32F4XX平台上通过软件模拟I2C驱动MPU6050传感器实现姿态数据采集的完整方案。内容涵盖软件I2C的GPIO配置、核心通信函数实现、MPU6050寄存器配置详解以及数据读取处理流程,为硬件资源受限的嵌入式应用提供了灵活的解决方案,并分享了调试技巧与常见问题处理方法。

butter的博客 678

Unity插件-Mirror使用方法(一)Mirror介绍

Unity Mirror 是一个专为 Unity 引擎设计的开源、社区驱动的网络库,主要用于简化多人联机游戏的开发。它最初是为了替代 Unity 原生的 UNet 系统(已被官方弃用)而创建的,因其轻量、灵活和高效的特点,成为 Unity 开发者构建多人游戏的热门选择。

qq_44501691的博客 4099

谷歌:修复0day漏洞的平均耗时比3年前减少28天

聚焦源代码安全,网罗国内外最新资讯!编译:代码卫士谷歌 Project Zero 团队表示,在2021年报告的漏洞的平均修复耗时要比2019年少28天。去年,硬件和软件厂商平均花费52天...

smellycat000的专栏 467

声纹识别实战:用Python从零搭建一个简易声纹验证系统(附完整代码)

本文是一份详细的声纹识别实战指南,教你使用Python从零搭建一个简易的声纹验证系统。文章涵盖了从音频采集、预处理、MFCC特征提取,到基于高斯混合模型(GMM)的建模与验证全流程,并提供了完整的代码实现,帮助开发者快速掌握这项生物特征识别核心技术。

ik6789012的博客 231

测试必要性:缺陷修复成本相差640倍!一张图说明软件测试的价值!

然而在当今实际的互联网项目中,基于需求不断变更成本投入项目营收等现实因素,人们更愿意聚焦在需求设计研发测试上线等这些中间的过程节点上,并且设计方法也由传统的面向过程演化为面向对象即OOP,因此往往是需要将软件生命周期(Software Life Cycle)视为从左到右的连续体或无限循环的过程,当然这不是特别新鲜的看法,只不过当下的软件研发迭代以及研发过程中,可以使用的工具比较多,让人们能够有更高的效率做事情,并且在不同环节可以用自动化的形式链接,从而达到一种无感知的丝滑效果,

我的博客 2737

手把手教你用支付宝密钥工具生成RSA2密钥对(含Windows/Mac操作截图)

本文详细介绍了如何使用支付宝密钥工具生成RSA2密钥对,包括Windows和Mac平台的操作步骤与截图。从工具下载、安装到密钥生成、配置支付宝平台,再到开发环境集成实战,手把手教你完成支付宝支付接口对接。特别强调密钥安全管理和最佳实践,帮助开发者避免常见安全隐患。

mongodb5scout的博客 257

从0到1做AI漫剧:即梦+豆包+剪映+红果全流程实战

AI视频生成正在重塑内容创作的生产方式,它让原本高门槛的影视制作,变成了一条由文本、画面、剪辑与分发环节协同的流水线。理解其底层原理,在于将大模型的语义理解、图像生成与视频合成能力,与工程化的流程管理相结合,从而实现从创意到成片的自动化输出。这种技术的价值,不仅体现在降低制作成本,更在于让个人创作者能够独立完成高质量短剧,并快速迭代内容。在短剧、短视频、广告营销等场景中,利用即梦生成画面、豆包编写剧本、剪映完成剪辑、红果进行分发的组合,已成为一种被广泛验证的实践路径。本文聚焦AI漫剧制作,从环境准备、分镜设

weixin_34072637的博客 382

单元测试用例_如何编写优秀的单元测试用例

优秀单元测试的定义单元测试:一段 自动化 的代码 ,这段代码调用被测试的 工作单元 ,之后对这个工作单元的 单个最终结果 的某些假设进行检验。单元测试几乎都是用 单元测试框架进行编写。单元测试容易编写,快速运行,可自动化,可靠,可读,可维护,结果稳定。集成测试:对一个工作单元进行的测试,这个测试对被测试的工作单元没有完全的控制,并使用该单元的一个或多个真实依赖物,例如数据库、系统时间、系统文件等。...

weixin_39817347的博客 949

Plant Simulation新手入门:从零开始搭建工厂布局仿真模型(附完整代码)

本文为Plant Simulation新手提供了一个从零开始搭建工厂布局仿真模型的完整实战教程。通过一个玩具工厂车间布局优化的具体案例,详细讲解了从数据准备、模型构建、核心逻辑编程到连接遗传算法进行自动优化的全流程,并附有完整代码示例,帮助读者快速掌握这一工业仿真软件的核心应用。

metal的博客 553

Bug修复与受益递减法则

  如果问100个软件公司的CEO,问他们是否愿意发布含有bug的软件。他们会说什么?50个根本不愿意回答,会说一些软件bug是这个行业中一个需要解决的大问题等不着边的话;40个会说“当然不会!”,并立即给他们的投资者打电话说这是诬陷,会追究法律责任。9位会低着头说“无能为力”。而这最后一位会直盯着你的眼睛说“当然会。”   我不知道这最后一位是如何领...

weixin_33790053的博客 235

Visual Studio 2022+Qt6.5.3安装教程+环境配置+创建Qt项目+乱码插件+运行很完美(16岁孩子也能看懂)

Visual Studio 2022+Qt6.5.3安装教程+环境配置+创建Qt项目+乱码插件+运行很完美(16岁孩子也能看懂)

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 1190

2025华为od面试手撕代码【求字符串表达式结果】

2025华为od面试手撕代码【求字符串表达式结果】

MISAYAONE的博客 1352

技术债务的量化、偿还与预防:从代码坏味道到架构腐化的度量与治理框架

技术债务的管理需要从「感觉代码很乱」升级为「量化、排序、预防」的工程机制。静态分析工具自动发现代码坏味道并赋予债务分值,优先级矩阵(影响 × 频率 / 成本)客观排序修复顺序。20% 时间法则和债务冲刺将债务偿还从「有空就做」变为「强制分配的开发时间」。债务预防比债务偿还更高效。Linter 门禁(100% 通过率)、架构约束(CI 中自动检查)、Branch Protection(Review + CI 必修)三层防线在代码到达主分支之前拦截新增债务。

iymei4986533030的博客 2628

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

在Bug爆发前“排雷”:预防性测试

摘要:预防性测试通过"测试左移"策略,在软件开发早期介入质量保障,显著降低缺陷修复成本。其核心在于将测试从被动检测转变为主动预防,结合TDD、BDD等方法,通过需求评审、自动化测试和数据分析预测潜在风险。实际案例显示,该方法可降低40%缺陷逃逸率,但也面临资源分配、技能缺口等挑战。实施建议包括渐进式推广和持续学习新技术,以构建更健壮的质量保障体系,推动测试人员从"找Bug专家"向"质量建筑师"转型。

2501_94456679的博客 929

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Bug转化资产:从成本中心到价值创造者的范式跃迁

《从缺陷管理到知识资产:Bug价值的范式革命》摘要:传统观念将Bug视为纯粹负面产物,而现代敏捷开发揭示了其作为战略资产的新维度。文章提出三大转变:1)Bug成为流程优化的诊断工具,通过模式分析揭示研发薄弱环节;2)缺陷案例转化为组织知识库,形成技术风险"免疫记忆";3)用户反馈类Bug成为产品设计校准器。测试团队可通过"收集-分析-转化"闭环,将缺陷数据转化为预防清单、测试工具和培训材料,实现从"问题发现者"到"质量赋能者"的

2501_94449311的博客 214

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

软件测试Bug分类与自动化预防策略详解

软件测试是确保软件质量的关键环节,其中Bug分类直接影响缺陷管理效率。从技术原理看,代码错误、界面优化和用户体验问题是三大核心类型,每类问题对应不同的测试方法与工具链。在工程实践中,通过静态代码分析、契约测试和可视化回归测试等技术手段,可有效预防常见缺陷。特别是在微服务架构和敏捷开发场景下,自动化测试与持续集成(CI)的结合能显著提升问题发现效率。对于测试工程师而言,掌握Valgrind内存检测、Selenium自动化测试等工具,以及建立可量化的用户体验评估体系,是提升测试覆盖率和准确性的关键。本文通过金融

weixin_28841265的博客 294

缺陷预防分析:从根因分类到流程改进

文章旨在系统说明如何通过数据驱动的缺陷根因分析 (Root Cause Analysis, RCA)、缺陷分类与趋势监控,从而将“发现‑修复‑重开‑重复”的被动模式,转化为“过程持续优化 + 预防为主 + 体系演进”的主动质量工程能力。

测试者家园 1516

EcoPaste 深度 Bug 复盘方法论:用 trellis-break-loop 技能打破“修复—遗忘—重复“循环

> 本指南基于 EcoPaste 仓库中 AI 辅助开发技能 `.claude/skills/trellis-break-loop/SKILL.md` 展开,结合仓库 `.trellis/` 知识体系与真实 Rust/React 源码,完整讲解一套可落地的深度 Bug 分析框架:五维根因归类、修复失败复盘、预防机制设计、贝叶斯证据推理,以及将分析沉淀为 Spec 文档的闭环动作。读者学完即可在排查

gitblog_01053的博客 443

告别“亡羊补牢”:如何从发现缺陷,真正走向预防缺陷?

从“发现缺陷”到“预防缺陷”,绝不是一句口号,而是一场涉及思维、流程和技能的全方位变革。它要求我们走出舒适区,主动向前一步在需求评审时,像产品经理一样思考业务,像用户一样挑剔体验。在代码审查时,像架构师一样关注设计,像侦探一样预判风险。这个转变过程,是将测试工作从价值链的末端提升到前端,从被动的“质检员”转变为主动的“质量守护者”。这不仅能极大地提升产品质量和团队效率,更能让你在职业道路上,获得无可替代的核心竞争力。从今天起,别只满足于找到下一个 Bug,去尝试预防下一个 Bug 的发生吧!

m0_59598970的博客 645

电竞游戏碰撞检测Bug:从栅栏硬控到赛场事故的预防与处理

碰撞检测是游戏物理引擎的核心技术,通过实时计算物体间的交集来模拟真实互动。其原理涉及边界体积检测和运动预测,在电竞场景中直接影响比赛公平性。物理引擎的误判可能导致角色卡死等硬控bug,这类小概率事件在职业选手的极限操作下可能触发。游戏开发需建立冗余校验机制,如位置回退和强制位移,确保体验流畅。应用场景涵盖竞技游戏稳定性保障,通过电竞专用测试框架预防栅栏硬控等问题,结合实时监控实现快速回滚,维护赛事品牌价值。

weixin_34321753的博客 359

Bug的时间属性:周期特点与非规律性

在上一篇文章中,我说明了“技术性 Bug 可以从很多维度分类,而我则习惯于从 Bug 出现的 ‘时空’ 特征角度来分类”。并且我也已讲解了Bug 的特征:程序对运行环境的依赖、反应及应对。接下来我再继续分解 Bug 的特征。Bug 有了时间属性,Bug 的出现就是一个概率性问题了,它体现出如下特征。

qq_33240556的博客 824

(个人复习用)软件测试与质量重点(待补充)

一、概述1.1软件测试(以需求为中心,通过设计测试用例,保证系统满足需求)阶段执行方法人工动态测试人工静态测试自动动态测试方法评价标准具体流程1.2软件缺陷(功能超过需求规格说明中指出的范围,即用户不满意)常见情况1.3测试用例(时间、成本、质量)输入数据操作步骤1.4软件质量(反映软件具有明确或隐含需要能力的特性总和,可以通过软件测试验证,但不能通过它提高)二、黑盒测试(只知道输入和预期输出、...

因为一无所有,所以拥有无限可能。 2734
上一篇: 经过时间考验的成功的测试方法
下一篇: 如何开发高质量的软件 - 通过测试集中型的软件开发方法来提高软件质量
Trinitytec
博客等级 码龄11年 165粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值