拥抱高效、拥抱 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的简单状态信息. 但是现在,这里有更多的方式来获得关于你的应 ...
随机推荐
- debugging tools
https://blogs.msdn.microsoft.com/debugdiag/ https://blogs.msdn.microsoft.com/debuggingtoolbox/2012/1 ...
- UIview 学习与自定义--ios
UIView *view1=[[UIView alloc] initWithFrame:CGRectMake(50, 50, 100, 100)]; view1.backgroundColor=[UI ...
- 向左对齐的Gallery
系统自带的Gallery选中的item总是在组件的中间.但是有些时候我们需要把选中的元素放在左边或者是Gallery一出来就要放在左边.修改Gallery靠左对齐的思路:1.Gellary总是对cen ...
- SecureCRT注册机使用方法
SecureCRT_7.3注册机激活步骤如下: 1)准备工作 安装好SecureCRT软件, 下载并得到该注册机. 2)保持SecureCRT软件关闭(运行的话会提示你正在运行的,关闭就好). 3)将 ...
- Codeigniter MongoDB类库
安装方法:1.将mongodb.php 放到config目录2.将Mongo_db.php放到library目录 使用方法: $this->mongo_db->where_gte('age ...
- TKinter之输入框
输入框是 Entry,应用程序要取得用户的信息,输入框是必不可少的. 输入框比较重要的一个函数: get:返回值即输入框的内容 比如e是一个输入框,e['show']='*'就变成了密码框 小例子:用 ...
- 【性能诊断】三、单功能场景的性能分析(RedGate Profiler)
上一篇我们简单的对客户前端和数据库后端的性能问题进行了定位,如果排除了这两块,问题基本就确定在应用服务器上.但是我们往往对应用服务器,或者说应用程序的性能最陌生,一旦出现性能问题往往有无所适从的感觉, ...
- Oracle序列使用:建立、删除
转自:http://www.cnblogs.com/WangPB/archive/2010/07/13/1776766.html 在开始讲解Oracle序列使用方法之前,先加一点关于Oracle cl ...
- [转]String.getBytes()和new String()
在Java中,String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如 byte[] b_gbk = "中&q ...
- css3 文字闪动效果
<div id="container"> 这里查看“<span class="blink">闪烁效果</span>”,ENj ...