Bugtags奉命解救宝贵的双手,务必将此文章转给你身边的程序猿
移动应用 Bug 快速反馈神器
前段时间,有很多 APP 突然走红,最终却都是樱花一现。作为一个创业团队,突然爆红是非常难得的机会。但是很可惜,由于没有经过充分的测试,再加上用户的激增,APP 闪退、服务器数据异常等问题就被暴露出来,用户的流失是必然的。
一款成功的 APP,测试是必不可少的环节。如果没有充足的测试就贸然上线,必然会损失一部分本来可以成为铁杆粉丝的用户,而且,非常不利于 APP 的推广。
测试上遇到的问题
测试是干嘛的呢?简单来说,就是找茬的!测试发现的 bug 会提交到一个任务管理系统中,我们解决完 bug 之后,会在任务管理系统中关闭这个 bug(总是有关不完的 bug)。有的公司可能不用任务管理系统,直接用 Excel 表格。
在这种工作模式下,总是碰到一些问题:
- Excel 不利于 bug 管理(有任务管理系统就会方便很多)
- 测试发现bug之后,需要截图,然后发到电脑上,再上传到任务管理系统中,这个过程比较麻烦
- 设备信息、app 状态、问题本身很难描述
- 有些 bug 难以重现
- 崩溃日志难以收集
这些问题我想很多童鞋都有碰到。测试提交一个 bug,我们总是重现不了,无法重现就无法定位问题在哪(只能继续跟测试掐架:你要重现 bug 啊!)。为了解决这些问题,今天我给大家推荐一个测试的SDK - Bugtags。
Bugtags 支持 iOS 和 Android 平台,我这里只是对 iOS 平台进行介绍。
Bugtags 确实非常方便测试,接下来给大家简单介绍一下 Bugtags 以及 Bugtags 使用教程。
Bugtags简介
根据官网介绍:Bugtags 是新一代的、专为移动测试而生的缺陷发现及管理工具。致力于改善移动 App 的测试流程,连接发现缺陷与提交缺陷之间的用户体验, 提高测试及解决缺陷的效率。Improve your app anytime, anywhere。
Bugtags 采用独创的应用内所见即所得的问题上报方式,有效提高了问题上报的效率和问题描述的准确度;同时平台提供了自动收集分析崩溃信息与问题生命周期管理功能。
Bugtags 官网:
他们的 demo 项目也放在了 github 上:
通过简单的了解,我感觉 Bugtags 应该是一个非常不错的测试工具。如果真的像官网介绍的那么好用,那真的是开发者的又一大福利。出于对新事物、新技术的好奇,我决定试用一下 Bugtags。
Bugtags集成和使用教程
Bugtags集成教程
我是通过 CocoaPods 集成 Bugtags 的 SDK,集成方法比较简单。具体步骤如下:
1、在你项目的 Podfile 中添加以下代码
2、执行 pod 安装命令
3、在 AppDelegate.m 中导入头文件
4、然后在 application:didFinishLaunchingWithOptions: 方法中加入一行
这里的 APP KEY 就是登陆 bugtags.com 之后,创建app时所获得的 app key。
关于 CocoaPods 的详细用法,请访问:https://cocoapods.org/。
Bugtags 还可以手动集成(建议大家用 CocoaPods 来管理第三方库),关于手动集成的教程可以点击:http://help.bugtags.com/hc/
接入成功之后,APP上会悬浮一个小球。(还可以通过摇一摇呼出小球)
Bugtags使用教程
接下来,我通过提交一个 bug 和一个闪退日志来演示 Bugtags 使用方法。首先,我们看一下 Bugtags 的控制台。
bug提交
假设我们测试 APP 的时候,发现有一个 title 写错了。那么,通过 Bugtags 来提交这个 bug。提交方法请看 Gif 图:
提交之后,刷新 Bugtags 控制台。这个时候,我们的控制台就多出了一个新建的 bug:
点击可以查看 bug 详情,一起来看看是不是刚刚提交的 bug:
果然是我们刚刚提交的 bug。截图上有我们之前做的标记“Title error”,而且这里很清晰的记录了我们的设备信息。是不是感觉非常方便!
还可以查看用户操作的步骤。前面我们提到测试报上来的 bug,很难复现。现在我们可以结合 Bugtags 的用户操作步骤快速复现 Bug:
不止这些功能,还有用户数据、控制台日志以及 Bugtags 日志。更多功能大家自己接入 SDK 详细了解吧。
app闪退
我在导航栏的左侧按钮上绑定一个方法:
NSArray *array = [NSArray arrayWithObjects:@"1", nil];
NSString *string = [array objectAtIndex:2];
NSLog(@"%@",string);
}
这是一个数组越界的问题,数组越界可以导致 APP 直接闪退。下面我们看看 Bugtags 会不会记录这个闪退 Bug。
提交之后,再次刷新 Bugtags 控制台,果然多了一个新建 Bug:
为了测试 Bugtags 数据准确性,我分别用模拟器和真机来进行测试,一共点了五次。我们来看一下 Bugtags 记录的信息:
突然,觉得 Bugtags 确实很强大。有童鞋可能会担心,如果这个时候我没有联网怎么办呢。闪退信息还会被提交吗?这个不用担心,我已经测试过了,在你下次联网的时候Bugtags会提交之前的闪退信息的。
总结
下面是我对Bugtags试用过程,进行以下几点的总结:
- 我接入的是 Bugtags 最新 iOS 版本库为 iOS SDK 1.0.6 集成过程简单方便。
- Bugtags 方便测试截图上传,还可以对截图进行标注。
- Bugtags 会记录设备信息、用户数据、用户步骤、控制台日志以及 Bugtags 日志。
- Bugtags 会自动提交闪退信息。
- Bugtags 可以设置 Bug 的优先级和 Bug 管理。
后记
Bugtags 上线以来,根据用户反馈,一直不断的进化。 还有更多的彩蛋和贴心功能,使用过程会慢慢发现! 这篇教程诞生的不容易,在使用 Bugtags 的过程中,难免遇到一些问题。 Bugtags 的技术人员很热心,任何问题都可以直接跟他们反馈,交流 QQ 群:428020377。
Bugtags 的朋友告诉我,他们目前各线招贤纳士,希望感兴趣的朋友,前往公众号:bugtags 进行勾搭。
Bugtags奉命解救宝贵的双手,务必将此文章转给你身边的程序猿的更多相关文章
- 解放程序猿宝贵的右手(或者是左手) ——Android自动化测试技巧
解放双手--Android自动化测试 - eclipse_xu - 博客频道 - CSDN.NET 解放程序猿宝贵的右手(或者是左手) --Android自动化测试技巧
- Java调试那点事[转]
转自云栖社区:https://yq.aliyun.com/articles/56?spm=5176.100239.blogcont59193.11.jOh3ZG# 摘要: 该文章来自于阿里巴巴技术协会 ...
- 《C程序猿从校园到职场》带领大家从校园走向职场
七夕节刚过.就有好消息传来:本人新书<C程序猿从校园到职场>正式出版并在各大电商平台上发售了! 以下.让我们一起来赞赏一下纸质书的"风採"吧. 本书文件夹 第1章 概述 ...
- 解放程序员双手之Supervisor
前言 对于大部分程序员来说,主要工作都是进行编码以及一些简单的中间件安装,这就导致了很多人对于“运维”相关的工作会比较生疏.例如当我们拥有一台自己的服务器以后,可能会在上面跑一跑自己blog程序, ...
- 解放双手——Android自动化测试
解放程序猿宝贵的右手(或者是左手) http://blog.csdn.net/eclipsexys/article/details/45622813 --Android自动化测试技巧 Google大神 ...
- Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
Linux就这个范儿 第15章 七种武器 linux 同步IO: sync.fsync与fdatasync Linux中的内存大页面huge page/large page David Cut ...
- 8、Cocos2dx 3.0三,找一个小游戏开发3.0存储器管理的版本号
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27693365 复杂的内存管理 移动设备上的硬件资源十 ...
- 向西项目管理工具Maven一片
前言 相信仅仅要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量.一个 build.xml 可以完毕编译.測试.打包.部署等非常多 ...
- CodeReview常见代码问题
路线图 常见代码问题空值未捕获潜在的异常低性能影响范围过大单测问题与原有业务逻辑不兼容缺乏必要日志错误码不符合规范参数检测缺乏或不足引用错误细节错误多重条件文不符实跨语言或跨系统交互可维护性问题硬编码 ...
随机推荐
- 第三个Sprint冲刺事后诸葛亮报告
用户反馈:还好吧. 用户数量:4 团队改进建议:思维局限太大,技术需要革新. 1.每个成员第一个sprint阶段有何需要改进? 成员 需要改进 邵家文 需要提高自己的工作效率,与创新能力,解决问题的能 ...
- Python 基礎 - 元組與簡易購物車實做
tuple(元組) 其實跟列表差不多,也是存一組數,只不過是它一旦建立了,就不能修改了,只能做 切片 跟 查詢,所以只叫 只讀列表 語法: name = ("Rogers", &q ...
- windows下Bullet 2.82编译安装(Bullet Physics开发环境配置)
平台:Win7,VS2010 1. Bullet库的组织 下图是Bullet_User_Manual中的截图: 从中可见,Bullet的LinearMath(线性数学模块),其上是BulletColl ...
- C#编程语言与面向对象——委托
委托(delegate)也可以看成是一种数据类型,可以用于定义变量,但它是一种特殊的数据类型,所定义的变量能接收的数值只能是个函数,更确切地说,委托类型的变量可以接收一个函数的地址. 简单地说 委托变 ...
- 简单说一个IOCP不好的地方
感谢rulary的指正!博文中我对IOCP的理解是有误的,正确的方式请见评论区rulary的回复! 由于项目实际设计的需要,最终IO事件处理没有采用IOCP,而是采用了NT6.0引入的WSAPoll, ...
- 排球比赛计分规则(P205页)
排球比赛计分规则: 1.SPEC的目标是什么?SPEC的目标不包括什么? 为了让大家更加了解排球比赛. 2.SPEC用户和典型场景是什么? 用户:运动员,观众,教练 场景:排球赛场 3.SPEC用到哪 ...
- JavaScript,DOM经典基础面试题
JavaScript的数据类型 JavaScript的数据类型可以分为原始类型和对象类型 原始类型包括string,number和Boolean三种,其中字符串是使用一对单引号或者一堆双引号括起来的任 ...
- HTML 标签 表格
<html> --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> <body& ...
- commons-httpclient中的超时设置
connectionTimeout与soTimeout的差异,前者指创建一个有效的客户端到服务端链接的最大允许时间,后者指socket接收data的时间. connectionManager.getP ...
- 数据获取以及处理Beta版本展示
产品描述 这个产品的目的是为了学霸网站提供后台数据获取以及处理操作.在alpha阶段基本调通的基础至上,我们希望在bate版本中加入对于问答对的处理,图片的获取等功能. 预期目标 在alpha阶段,我 ...