拥抱高效、拥抱 Bugtags 之来自用户的声音(四)
小编按:这是一篇 Bugtags 用户来稿,经过一段时间的密集使用,他已然觉得 Bugtags 是 App 开发者的好帮手,感谢解铃 App - 楚琪同学对 Bugtags 的信赖和支持。小编在这里诚邀各位热心用户向我们投稿,说出你使用 Bugtags 的故事。
无论开发 Web 网站还是开发 App,如果用户在使用程序或网站的过程中程序出现了错误,我们都希望第一时间知道,并且希望错误信息越详细越好,这样方便我们技术人员定位问题以尽快解决。针对 Web 网站,我们会在服务端集成日志系统,服务端监控系统等来达到目的。那么针对 App,用户在使用 App 的过程中闪退了,我们如何能知道并尽可能详细的收集错误信息呢?
最初我们的解决方案是这样的,无论是 iOS 还是 Android,都提供了类似 Exception Handler 的回调,所以我们自己实现这个回调,当有 Exception 发生时,我们自己收集设备信息,堆栈信息等然后发送到我们自己服务器上,服务器收集到错误信息以发邮件等方式通知相关技术人员。这种方式有很多不足:
- 针对 iOS 和 Android 都要实现一套
- 要可视化错误信息还需要自己实现
- 不方便统计、跟踪错误
后来看到业内知名开发者唐巧写的文章里提到了 Bugtags ,写微信公众号 MacTalk 的池建强老师也推荐过。于是准备集成到 App 中。5 分钟左右,集成完毕。手动抛出一个异常测试了下,(@ο@) 哇~,原来世界还是很美好的,这特么就是技术人员心心念念想要的 Bug 收集管理工具啊。
都说给技术人员做服务是很不容易的,因为技术人员是在(非)乎(常)体(挑)验(剔)的一群人,但 Bugtags 用下来体验很不错。 - 集成简单
- 自动收集错误信息,而且错误信息非常详细
- 可以统计、跟踪、团队协作
这里面错误信息的详细程度是非常重要的,Bugtags 这方面做的很好。一般排查 App 问题,我们经常会问测试人员,是用什么机型测试的,什么系统版本,怎么操作的,能否重现等问题,通过这些问题我们一般再对照自己的程序逻辑基本上能定位到问题。Bugtags 的错误信息类似这个分类,但分的更细更清晰,而且是自动的。然后在 Web 网站上就可以看到错误信息,网站是那种简洁清晰的风格,有点像 Google 的 Material Design,个人非常喜欢。
通过收集到的设备信息和截屏,一目了然的就可以看到出问题的是什么设备,用户是在哪个界面操作发生错误的。
接下来我们一定想知道用户的操作步骤是怎样的,因为我们技术人员常说的一句话就是『我这里没问题啊』,但常常忽略了用户可能不是我们这样操作的。Bugtags 监测了 UI 交互事件流,类似这样。
在这里可以看到 View 的生命周期,还包括用户点击的按钮事件等一应俱全。那么基本上我们可以重现用户的操作步骤了。
接下来还有一点技术人员非常关心的,就是堆栈信息。同样 Bugtags 完整的收集了异常堆栈信息。
相当亲(讨)切(厌)的异常堆栈信息!
其他还有一些程序输出到控制台的 Log 信息,可以辅助定位问题。
有了这些,老板再也不用担心我们找不到问题原因了。
最后关于团队协作这一块,个人用的不是很多,主要就是把对应的问题指派给对应的技术人员,然后跟踪看有没有解决。写了这么些,其实就是一句话:『太特么好用了,谁用谁知道』。
PS:
拥抱高效、拥抱 Bugtags 之来自用户的声音(四)的更多相关文章
- 拥抱高效、拥抱 Bugtags 之来自用户的声音(三)
小编按:这是一篇 Bugtags 用户来稿,主要是介绍了使用 Bugtags 前后对测试及解决 Bug 所带来的变化,感谢山西农业大学 - 高正炎同学对 Bugtags 的信赖和支持.小编在这里诚邀各 ...
- 拥抱高效、拥抱 Bugtags 之来自用户的声音 2
小编按:这是一篇 Bugtags 用户来稿,主要是介绍了使用 Bugtags 前后对测试及解决 Bug 所带来的变化,感谢单车娱乐 App 工程师 - 李斌同学对 Bugtags 的信赖和支持.小编在 ...
- 拥抱高效、拥抱 Bugtags 之来自用户的声音(五)
Bugtags使用心得(创业公司场景篇) ——成都嘿嘿科技有限公司 作者:小花 一.产品定义 关于手机客户端产品(APP)的 bug 提交.监测及管理且具有团队协作性质的系统. 二.使用环境 公司:初 ...
- 拥抱高效、拥抱 Bugtags 之来自用户的声音
小编按:这是一篇 Bugtags 用户来稿,主要是介绍了 Bugtags 使用的方法及其带来的效率的提升,谢谢介博同学对 Bugtags 的信赖和支持.小编在这里诚邀各位热心用户向我们投稿,说出你使用 ...
- 微信--高效解决token及授权用户openid的持久化处理办法
摘要 关于微信开发的话题,例子确实已经有不少,但大部分都是人云亦云,很多小细节或者需要注意的地方却大多没有讲清楚,这令很多刚开始开发的人感觉大很迷茫.而我今天要说的话题,主要着眼于两个方面. 一:如 ...
- MKMapView:确定区域更改是否来自用户交互
参见: http://www.b2cloud.com.au/tutorial/mkmapview-determining-whether-region-change-is-from-user-inte ...
- F2工作流引擎之组织用户模型(四)
1 概述 工作流组织模型是工作流引擎中核心重要的一部份,是实现人机交互中不可或缺的组成部分,而由于工作流引擎需要适应不同的系统之间存在组织用户结构的不同, 如组织表中字段名不同,所以需要实现适应不同系 ...
- OpenStack 认证服务 KeyStone连接和用户管理(四)
连接keystone两种方式: 一种使用命令 一种使用环境变量 1.通过环境变量方式连接keystone(适合在初始化场景使用) 配置认证令牌环境变量 export OS_TOKEN=07081849 ...
- Kubernetes用户指南(四)--应用检查和调试
一.调试 当你的应用开始运行,那么DEBUG是不可避免的问题. 早些时候,我们在描述的是如何通过kubectl get pods来获得Pod的简单状态信息. 但是现在,这里有更多的方式来获得关于你的应 ...
随机推荐
- RxJava + Retrofit 的实际应用场景
关于 RxJava Retrofit 很多篇文章都有详细的说明,在这里我想分享一个具体的使用案例,在我的开源项目 就看天气 里的实际应用.也希望跟大家探讨如何优雅的使用. 准备 项目中用到的依赖: c ...
- Sklearn库例子1:Sklearn库中AdaBoost和Decision Tree运行结果的比较
DisCrete Versus Real AdaBoost 关于Discrete 和Real AdaBoost 可以参考博客:http://www.cnblogs.com/jcchen1987/p/4 ...
- vb.net 动态调用api
Imports System Imports System.Runtime.InteropServices Public Class DllInvoke Public Sub New(ByVal DL ...
- add to svn ignore disabled
The problem is that the folder is already under version control. Here's how I fix this type of probl ...
- Ueditor 标签被过滤
1:将allowDivTransToP设置为false 2:将root.traversal方法中的switch注释
- 转载:scikit-learn学习之决策树算法
版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...
- 如何将NetBeans转换为英文版(图)
很郁闷,又是一个系统语言的问题. NetBeans下载下来之后,怎么装都是个中文版,或者半中文半英文,不伦不类的.上网找了一个圈,很多都讲得不清楚,最后终于有了一个答案: 在NetBeans的配置文件 ...
- 剑指offer系列25---构建乘积数组
[题目]给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]A[i+1]…A[n-1].不能使用除法. package ...
- Nexus手动更新索引
如果有耐心的话,完全可以通过在线更新索引的方式来做,但所消耗的时间较长,下面介绍一种简单.可行的方式来手动更新索引文件. 访问http://repo.maven.apache.org/maven2/. ...
- php接二进制文件
PHP默认只识别application/x-www.form-urlencoded标准的数据类型. 因此,对型如text/xml 或者 soap 或者 application/octet-stream ...
