PCon全球产品创新大会即将开幕,抢占最后的交流席位! 了解详情
写点什么

自动化错误报告:通往更高软件质量的大门

  • 2013 年 5 月 07 日
  • 本文字数:2315 字

    阅读完需:约 8 分钟

无知是福,但是在处理软件 bug 的时候,这句话并不适用。

软件质量专家会告诉我们,那些努力找出 bug 并且提高软件质量的公司可以得到客户更多的信任,得到更高的利润,降低开发和维护的费用,简化交付的流程,同时还可以避免客户的流失。

软件质量是个大工程

如果你觉得软件质量没有什么大不了的,那么就来看看 Capers Jones 在 2011 年 6 月软件质量杂志上发表的文章(这份杂志由美国质量协会主办):

  • 高质量软件的发布周期比低质量软件短 15%。
  • 高质量软件从第一个版本发布到之后五年的周期里花费的总费用比低质量软件低 30%。
  • 高质量软件每年的维护费用比低质量软件低 40%。
  • 规模越大的软件,质量越是一个重要的因素。

根据 Jones 的观点,软件测试在查找 bug 时的有效性有限,还不到 35%。

考虑到软件质量对公司业务的影响,开发团队都在寻找新的提高软件质量的方法。其中最有前景的方法就是自动化错误报告(Automated Error Reporting),这种方法以用户为基础来确定软件的错误和异常。

我们的目标是让错误报告变得易用、完整和可自定义

有许多让用户参与到软件纠错当中的方法,比如邮件和论坛社区,自定义的软件功能,Windows Error Reporting(WER)和各种现成的解决方案。

但是这些方法都不一定比自动错误报告有效:有的方法会让用户承担过多的责任;有的方法不能收集到精确的信息;有的方法不能捕捉关键的特征,如变量运行时的赋值可能就是一种关键特征;有的方法不能把错误提交到通用的错误跟踪系统里面。

我们的目标是让错误报告变得易用、完整和可自定义,这就要求用户可以方便地提交错误报告,开发人员也可以方便地理解错误报告。这可不是一件简单的事情,每个错误报告都应该包括完整的堆栈追踪信息和有助于查找、修复bug 的上下文信息。自动错误报告还应该可以和bug 追踪工具整合在一起。

Andrew Neville 表示:“自动化错误报告让用户可以十分方便地提交错误报告。只要用户按发送键,我们就可以收到修正错误所需的所有信息。使用了自动化错误报告之后,我们让用户可以更方便地与我们沟通。”Andrew Neville 是 Neville&Rowe 的一名资深软件工程师,在 Red Gate 的 SmartAssembly 中使用了自动化错误报告,从而使商业智能分析软件 ImpactEdge 可以很好地追踪 bug。

认识自动化错误报告

自动化错误报告的价值在于让开发团队了解到未知异常的详细信息。它从五个方面为软件开发带来了好处:

  1. 它为用户提供了一种有效的反馈途径,增加了用户和开发团队之间的沟通效率。
  2. 它让开发团队了解到哪些 bug 是最容易发生的,让开发团队可以根据事实情况而不是猜测来修正 bug。
  3. 它让开发团队可以更快的修复 bug。
  4. 它可以以更低的代价确认和修复 bug。
  5. 它可以让开发团队在发布软件之前获得更多的前期用户反馈。如果开发团队正在使用敏捷开发,自动化错误报告可以让开发团队根据用户的反馈快速制定出迭代的计划,从而缩短迭代的周期。

微软 MVP 和 IT 顾问 Ed Blankenship 解释说:“知道异常发生的频率对于修复异常来说是非常有帮助的。知道 bug 的详细信息对于修复 bug 也是必不可缺的。“

自动化错误报告是怎样工作的

一个理想的自动化错误报告系统可以让用户方便地告诉开发团队软件产品的问题在哪里。在理想状态下,当软件发生异常的时候,用户应该可以得到一个简单明了的错误提示并且可以通过用户界面发送错误报告。这可以大大节省用户花在描述和反馈错误上的时间。所有的必要信息都应该被自动收集,而不需要用户操心。

一个错误报告应该包括了完整的堆栈信息和异常上下文信息,包括运行时变量的值。

另外一个特性是用户可以在异常报告中添加额外的自定义信息。这些信息包括日志文件,截图,或者是用户的联系信息。

隐私问题和不合理的错误报告

发送错误报告的时候经常会出现下面三个问题:

  1. 错误报告会附带用户的隐私信息。
  2. 用户反复遇到相同的错误,但是每次系统都要求用户重新发送一次错误报告。
  3. 开发团队不停地收到相同的错误报告。

第一个问题涉及到用户的信任程度。再好的错误报告系统也不可能保证绝对不会把用户的隐私信息传送给开发团队。好的错误报告系统应该考虑到敏感信息的问题,这样可以尽量避免发送敏感信息。如果开发团队没有能够控制敏感信息的传送与否,那么错误报告系统应该可以让用户选择是否信任开发团队并且把敏感信息发送给开发团队。

第二个问题的解决方法是用户应该可以自定义错误报告发送系统。

Red Gate 的程序员 Alex Davies 说他总是会在合适的时候才显示错误报告提示,并且给用户“不要再提醒了。总是发送报告。”的选项。

针对第三个问题,开发团队应该把错误报告进行分类。Davies 告诉我们应该把收到的错误报告与 bug 追踪系统进行同步以甄别是否是一个有效的错误报告。

使日常工作更加方便

随着时间的推移,自动化错误报告的好处就会显现出来。其中有一条是最重要的,那就是可以让用户和开发团队都可以更方便地工作。一个 IT 决策者讲的话很好的概括了这一点:

“用户只需要点一下按钮就可以把信息反馈给开发团队。这避免了不停地电话或者邮件以及不完整的错误报告。这的确可以让用户和开发团队都更方便地工作。“

作者简介

Laila Lotfi 就职于 Red Gate Software 的.NET 工具组,同时也是 Simple-Talk 网站的贡献者之一。Red Gate 开发的软件工具在全球有超过 50 万个用户,主要是.NET 开发者和 SQL Server 专家。该公司通过自由的网络社群网站、技术刊物以及会议赞助等行为进行市场活动,每年影响到上百万人群。

查看英文原文 Automated Error Reporting: The Gateway to Better Quality


感谢杨赛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013 年 5 月 07 日 03:493221

评论

发布
暂无评论
发现更多内容

一个基于PoS共识算法的区块链案例

Regan Yue

区块链 共识算法 11月日更 细讲区块链

你不知道的开源分布式存储系统 Alluxio 源码完整解析(上篇)

腾源会

大数据 开源 数据湖

你不知道的开源分布式存储系统 Alluxio 源码完整解析(下篇)

腾源会

大数据 开源

1 分钟学会 30 种编程语言

AlwaysBeta

你现在可以在元宇宙里 “打工”了!

CECBC

【LeetCode】重新排序得到 2 的幂Java题解

HQ数字卡

算法 LeetCode 11月日更

新能源汽车补贴没了,行业还能快速发展吗?

石云升

学习笔记 新能源汽车 11月日更

请问软件测试和渗透测试的区别是什么?

喀拉峻

网络安全 渗透测试

验证码

卢卡多多

图片验证码 11月日更

在华为云专属月,找到开启互联网第二增长曲线的一把钥匙

脑极体

NodeJs 深入浅出之旅:V8 内存分配🧙‍♂️

空城机

大前端 Node 11月日更

识别AI换脸!百度这项技术夺冠了!

百度大脑

人工智能 百度

监管打压加码!虚拟货币挖矿再遭围堵 “漏网之鱼”当休

CECBC

数据同步:教你如何实时把数据从 MySQL 同步到 OceanBase

OceanBase 数据库

数据库 开源 oceanbase 分布式,

赢在2022,面试官常问的软件测试面试题总结

六十七点五

软件测试 面试题 自动化测试 经验总结 测试工程师

范学雷的专栏《深入剖析 Java 新特性》

IT蜗壳-Tango

11月日更

Ubuntu系统下《汇编语言》环境配置

codists

汇编语言

浏览器的几种防护策略

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

jodconverter实现在线预览

小鲍侃java

11月日更

在线假单词随机生成器

入门小站

工具

中央银行、不平等和新技术:使用分布式账本、可编程合约和密码学的蓝图

CECBC

这一次,Google 终于对 Web 自动化下手了!

星安果

chrome 自动化

一起听、一起看、一起唱掀起Z世代青年社交浪潮

声网Agora

人工智能 算法 音视频

科技热点周刊|马斯克套现 440 亿;苹果推出数字身份证;Meta 与微软合作;华为捐赠欧拉

青云技术社区

云计算 物联网

Android C++系列:JNI操作Bitmap

轻口味

c++ android jni 11月日更

直接破防了,阿里大咖DDD(领域驱动设计)不破不立,GitHub直接霸榜,今天share给大家~

编程 程序员 领域驱动

linux下清理系统缓存并释放内存

入门小站

Linux

架构设计

AHUI

「架构实战营」

15 K8S之容器安全上下文

穿过生命散发芬芳

k8s 11月日更

【算法技术专题】如何用Java实现一致性 hash 算法( consistent hashing )(上)

浩宇天尚

算法 一致性hash 11月日更

何止一个惨字形容,水滴Java面试一轮游,壮烈了,问啥啥不会,数据库血崩,我该怎么办?

Java 编程 程序员 面试

自动化错误报告:通往更高软件质量的大门_架构_Laila Lotfi_InfoQ精选文章