文档章节

你还在等着用户反馈BUG?

Fundebug
 Fundebug
发布于 2017/08/30 14:45
字数 1720
阅读 7
收藏 0
点赞 0
评论 0

译者按: 等待用户反馈BUG,一切都晚了!实时监控线上应用才是王道。

原文: Why relying on your users to report errors is the dumbest thing you’ll ever do

译者: Fundebug

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

我们热爱coding。

当我们coding的时候,就如同从零建造一栋大楼。新的特性、新的功能、绝佳的设计都在每一次更新后被用户所使用,期待他们的喜爱和赞美。这样的一个过程让我们感到心灵上的慰藉和拥有为数不多的成就感。

然而,现实并没有想象中美好。

如果debug是移除bug的流程,那么编程就一定是将bug放进去的流程。

软件工程师将大量时间花在了其它事情上。他们需要参加各种会议、讨论需求、制定计划、将现有的冗余代码重构,以及还有一项花费时间很多的工作:修复bug。

我还没有遇到过一位喜欢在代码中去找bug的工程师,大概因为查找和复现一个bug往往要花费很多时间。

一直以来,debug就像大海捞针一样。他们需要亲自去发现问题的原因然后寻找解法,而不是依赖于用户的截屏反馈。

用户的截屏并不能告诉你足够的信息,往往你会问更多。

你用的哪个浏览器,什么版本,操作系统是哪个,可以具体一点告诉我刚刚你是怎么操作的吗,你之前在哪个页面,你是怎么到这个页面的?

就算问了用户这么多问题,也不一定能解决问题。

Debug总是要花很多时间,然而还是一头雾水。

坐等用户反馈真的好吗?

很多开发团队依然依靠用户反馈来改进产品,这其实是很荒谬的。

在快餐连锁店,客户用餐完毕之后,需要自己将没吃完的食物和用过的餐巾纸扔到垃圾桶。快餐店的食物可能一点也不好吃,客户没吃几口就扔到垃圾桶然后直接走掉。除非客户真的是一个爱抱怨的人而且恰好有时间,才会如实评价。否则,你只会认为一个客户吃完饭满意的离开了。

然而,他再也不会来这里吃了!

一些开发者会这么认为:如果没有用户反馈问题,那就代表我们的产品棒棒哒,对不对?认为“如果用户使用产品遇到问题,用户就会反馈”是比较局限的。最终你会发现只有1%的用户会反馈问题,然而事实上多得多。

开发者依靠很有限的信息去尝试debug一个问题,往往不能解决。

你开发的软件并没有你想象的那么完美!

一个在大型线上零售店工作的朋友跟我聊过他们解决公司线上订单系统的一个重大问题的故事。他们经过好几天的排查,都没有发现问题所在。最后决定使用一个专用工具来监控和诊断应用错误。

最终的发现令人惊恐!

八个服务器中的一个内存不足然后报错,导致用户的订单流程失败。也就是说:“每八个用户中有一个收到影响”。

发现和解决这个问题使得一个月的销售额提高了2万美元。事后评估发现总共影响了5000名用户,但是只收到2个用户反馈。虽然解决了bug大家都很开心,但这个错误导致了10万美元损失。

不建议这么做:一出错就给自己发邮件报警

你可以坐在电脑面前盯着错误日志流。当你休息的时候,可以雇一个小伙伴这么做。或则,当异常出现的时候,给自己发报警邮件(貌似是个不错的主意)。直到你真的这么做了,你就不会这么想了!

你需要意识到:对于小的个人项目,一有错误就通过邮件报警还可以。但如果业务量起来了,访问量打了,事情就会变得一团糟:

  • 由于版本以及兼容性,很多错误信息不完整
  • 很难去指定一个报警规则,报警变成噪音
  • 如果一个错误刚好在循环里面,可能一晚上给你发5万封邮件
  • 错误没有优先级或则严重性区别,混在一起
  • 当你查看了超过100封邮件以后,你再也不回去读它们了

你会开始忽略这些邮件,甚至把它们归类到一个单独的文件夹然后发现无从下手而很少去碰。毕竟,从几千封邮件中找到严重的问题并解决很不容易。

ELMAH - 记录程序异常

ELMAH (Error Logging Modules and Handlers) 是一个错误记录服务。它可以动态地加入到一个ASP.NET项目中,而不需要重新编译或则重新部署。ELMAH不支持所有的程序语言,他提供的功能也有点局限。ELMAH适用于小型的个人项目。

专业BUG监控

如果你想认真对待应用BUG,可以使用一个专业的BUG监控服务,比如国外的Raygun(或则我们Fundebug)。一个专业的BUG监控服务可以帮你:

  • 通过过滤和排序来定位严重错误
  • 配置多种报警方式,比如邮件、Slack、或则HipChat
  • 使用一个监控服务来追踪多语言多平台
  • 相似错误自动聚合
  • 团队协作齐力解决BUG

如果你使用简单的方案(直接邮件报警),那么你需要停下手头的工作,花费两三个小时去复现一个bug。这是非常浪费时间,非常低效的做法!如果一个团队注重快速迭代,那么他们会愿意为开发者节省花费的debug上的时间,去开发产品的新功能、新特性。

总结

我们希望技术实现自动修复软件BUG。不过,软件自愈依然还有一段距离。你可以使用一些错误监控服务来使得整个debug更加简单和高效。

<!-- 如今持续集成逐渐被广泛使用,你可以几分钟内快速定位bug、修复bug并发布到生产环境,而不需要等待几周一度的产品更新。 -->

在你的用户发现问题之前发现,并且不要单纯依赖用户反馈问题!

版权声明:

转载时请注明作者Fundebug以及本文地址:

https://blog.fundebug.com/2017/08/30/rely-on-users--to-report-error-is-not-good/

© 著作权归作者所有

共有 人打赏支持
Fundebug
粉丝 3
博文 70
码字总数 95391
作品 0
厦门
拥抱高效、拥抱 Bugtags 之来自用户的声音 2

遇见 bugtags 之前那点事 那些年,我们单车娱乐 App,自研发到上线,苦逼的在友盟,bugly,bughd 等各种 bug 反馈的工具来来回回踩坑,然而让 QA 和 PM 以及最身同感受的我们这些一线开发工程...

张磊
2015/12/04
61
0
云帮社区版 10 月升级包,新增 17 项特性

17 项新功能、12 个bug修复、8篇文档更新、云帮社区版 迎来10月份更新档 Cloudbang(云帮) 云帮是好雨科技研发的一款基于容器技术的应用管理平台。社区版针对个人、企业完全免费,您可以自由...

好雨云帮
2016/10/26
1K
3
go.image/tiff 的一些问题

最近给 go.image/tiff增加了 Tile/Gray/Gray16/RGB16bit 等格式的支持.还有一些特性以后会陆续完善. Go语言图像库的基本思路是能尽量提供完善的解码功能(当然只支持文件的第一个图像).而编码...

chai2010
2013/09/20
0
1
小米首发支持 Android 4.0 新内核 内测图赏

新闻来源:驱动之家 Android 4.0,Ice Cream Sandwich(冰淇淋三明治,简称ICS),不知道有多少Android痴迷者已经在为这个新版系统而纠结。高帅富或许已经买了Galaxy Nexus,我等穷苦大众还在等...

红薯
2011/12/10
2.4K
4
修复ThinkPHP视图模型order操作的bug

$View = D('UserView'); $View->where($map)->order($order)->select(); 当order传入数组的时候会出现错误。 之前用2.0的时候我自己修正了,也反应给官方了,现在用3.0这个错误还在。 PS: 其...

mickelfeng
2012/11/12
0
0
OpenSNS V3.2.0发布,知名开源社交系统

自2016年8月18日,OpenSNS V3发布以来,OpenSNS一直在提升OS用户体验道路上马不停蹄地前进! 常关注OpenSNS官方社群的站长们不难发现,每天都有一点变化,每天都会有惊喜等着发生。OS官方社群...

陈一枭
2016/10/14
2.4K
9
云帮社区版迎来10.25更新档, 附11月版本功能预告

17 项新功能、12 个bug修复、8篇文档更新、500+用户安装使用,云帮社区版 迎来10.25更新档 过去的1个月,我们收到了不同行业,超过500家企业用户在云帮社区版安装、使用以及优化配置过程中遇...

好雨云帮
2016/10/25
29
0
特地来简书回应@饱醉豚的文章《为什么程序员是出轨率最高的群体》

@饱醉豚 我是看到群里有人发你的截图,特意过来看一下你的简书,并写这篇简书来回应你,首先声明,此文章只代表我个人观点。 “程序员是出轨率最高的群体”,我并不知你是从那得来的数据,但...

星星那么闪烁
2017/12/14
0
0
开源中国 Android 客户端 v2.8.7 发布

距离上一次发布新版本的客户端,已经很久了。 在立秋后的今天,我们非常高兴的宣布:开源中国 Android 客户端 v2.8.7 正式发布。 这个版本中,继上个版本推出横屏阅读代码之后,我们对其做了...

巴拉迪维
2017/08/08
1K
25
Hbuilder打包IOS关于定位描述问题

由于某些问题,上传的IPA包被苹果拒绝了,修改之后重新打包上传,一直传不上去,原因如下: 苹果对于隐私这块比较重视,使用了用户的位置信息需要给出明确的提示告诉用户,之前的文章中也有介...

尹吉欢
04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

sklearn学习笔记之简单线性回归

简单线性回归 线性回归是数据挖掘中的基础算法之一,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那时候并没有涉及到误差项。线性回归的思想其实就是解一组方程,得到...

wangxuwei
7分钟前
0
0
feign之动态interceptor(二)

背景 上文提到了按照不同的feignClient可以根据多个不同的key来进行多个不同的bean的配置 那么我们如何完成多个interceptor的配置呢? 分析 我们刚提到多个配置的玄机就在FeignClientProper...

Mr_Qi
9分钟前
1
0
Linux Kernel 4.16 系列停止维护,用户应升级至 4.17

知名 Linux 内核维护人员兼开发人员 Greg Kroah-Hartman 近日在发布 4.16.18 版本的同时,宣布这是 4.16 系列的最后一个维护版本,强烈建议用户立即升级至 4.17 系列。 Linux 4.16 于 2018 年...

问题终结者
33分钟前
0
0
Apache配置时.htaccess失效不起作用的原因分析

.htaccess 失效的原因 1. 重写规则有问题,检查自己的重写规则 2.Apache配置问题,配置中没有配置启用 rewrite a2enmod rewrite 3.网站配置文件没有启用配置需要配置 000-default.conf <Dire...

TU-DESGIN
53分钟前
1
0
两个求最大公约数C/C++算法实现

#include<stdio.h> #include<time.h> #include <iostream>using namespace std;//求最大公约数 LCD(Largest Common Division)//短除法 //m=8251, n=6105; int LCD_ShortDiv(int m, ......

失落的艺术
59分钟前
1
0
QueryPerformanceCounter

windows的Sleep函数,睡眠线程指定毫秒数,可以用来做毫秒延时。 对于微秒延时,没有一个现成的函数,但是可以通过 QueryPerformanceFrequency QueryPerformanceCounter 来间接实现。原理就是...

开飞色
今天
1
0
log4j2使用AsyncRoot不显示行号问题处理

<AsyncRoot level="info" includeLocation="true"> <AppenderRef ref="File"/></AsyncRoot><!--1.异步logger,还需要在pom.xml中添加disruptor的依赖。2.includeLocation结合异......

小翔
今天
3
0
安卓手机上 K 歌,声音延迟怎么解决?

这篇文章可以为你提供一个解决录音和播放同步问题的思路,而且解决了声音从手机传输到耳机上有延时的问题。 初识音频 在开始之前,我先简单介绍一下音频相关的基础知识,方便下文理解。 我们...

编辑部的故事
今天
2
0
使用token实现在有效期内APP自动登录功能

使用token实现在有效期内APP自动登录功能 http://sevennight.cc/2016/07/19/auto_login_impl.html

风云海滩
今天
3
0
Spring Boot集成RabbitMQ发送接收JSON

默认情况下RabbitMQ发送的消息是转换为字节码,这里介绍一下如何发送JSON数据。 ObjectMapper 最简单发送JSON数据的方式是把对象使用ObjectMapper等JSON工具类把对象转换为JSON格式,然后发送...

小致dad
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部