【Android测试】【随笔】Bugtags初体验
◆版权声明:本文出自胖喵~的博客,转载必须注明出处。
转载请注明出处:http://www.cnblogs.com/by-dream/p/5410003.html
前言
早晨接到一个临时任务,就是尝试体验一把Bugtags,然后看看好不好用,大概是实现原理是什么。
大概搜了搜发现这个工具号称 可以:
极速集成
一行代码,开启高效测试
所见即所得提交
在你的应用中直接提交 Bug,方便快捷
自动记录运行时数据
界面截图、设备信息、控制台日志、操作步骤,一项也不少
全民参与测试
测试零门槛,产品经理、设计师、客服都能快速参与
看介绍如此牛逼,于是本喵决定给大家介绍一下这个工具
工具简介
首先还是老样子,贴出他们官网地址:https://www.bugtags.com/
一、注册
填写自己的邮箱,姓名,密码,绑定手机后就可以啦。注册成功后,我们新建一个项目:

因为本人对Android比较了解一些,我们暂时先选择Android这个平台来实践。
申请完成后,我们可以看到左下角有一个应用信息的区域,红色方框标出App key需要在代码中用到,这里我们先标记出来一下

二、下载demo
添加完成之后,网页端的东西就这么多。于是觉得先下载他们的demo体验一下是否好用吧。 ( demo地址:https://docs.bugtags.com/zh/start/integrate/index.html )
下载完成导入Eclipse工程,如下:
注意这里一共两个工程:第一个就相当于我们自己的App,第二个Lib就是我们在自己的App需要引入的工程。
代码引入后没报错,直接编译一个到手机上看看效果。
三、编译
编译打包后,进入App,如下图所示

右边的小球,就是我们加入Bugtags的lib之后出现的一个小悬浮窗,点开之后只有两个按钮,操作简单不复杂。
第二个按钮是提交bug的按钮,一会介绍,第一个是登录按钮,我们用我们注册的邮箱进行登录,此时会提示 "该App没有加入到你的项目"之类的话,想想也是,我也没做什么呢,应该和我的平台关联不起来。
四、一行代码
还记的第一步我们在网站上看到的应用的信息吗?

这里App Key就起到了关键的作用。我们需要在当年你的App的工程的Application中加入那所谓的一行代码(如下图):

这样我们就将这个App和我们的网站关联起来了。
五、登录
登录成功后,可以看到我们的网站中的头像同步到了App中

六、提Bug
接下来说说刚才我们没讲到的 “第二个按钮(笔和加号)”,点击此按钮之后,屏幕被截屏了,此时出现一个对话框:

可以提交bug和建议,并且可以设置bug的等级,以及关注人和bug的描述,完成这些内容后,屏幕上便出现了这个bug的一个描述,当然你可以拖动它或者改变它的一个方向。

当调整好后,我们遍提交这个bug,点击对号即可提交:

七、展示
提交完bug后,我们去web端平台去看看:

整体来看,在三个区域多出了一些信息,我们点进去看看究竟提交上来的信息都包含些什么:
Ⅰ 设备信息
从内容上看,拿到了一些基本的设备信息,这个不是很难,相信做过一点Android开发的同学应该都知道怎么获取这些东西,因此这里就不再赘述了。

Ⅱ 用户数据
这里可以自定义的取到一些当时代码中运行的一些变量的值,一般开发在定位问题的时候通常需要这些数据。这里需要开发在代码中调用API,然后将自己关心的参数给set上去,set的形式就是一个key-value的形式,如下:

我在这个页面初始化的地方加入了我关心的三组数据,当我在这个页面提交bug的时候,就会把这三个信息给我带上来:

Ⅲ 操作步骤
首先说明一下,后面的一些内容都是面向企业版(要收费)的内容,而我的是个人版,因此这里看不到我自己实时传上来的,但是可以看到他们上传上来的一个大概的样式

如图所示,我们可到Activity的生命周期的一个过程,以及控件的消息事件。那么它是怎么捕获到我的这些内容的原因是什么呢?答案就在下方:

没错,你需要在重写你的这个函数之后,在里面加入Bugtags的一段代码,对于Activity而言,需要在所有的Activity中实现,如果没有一个基类的Activity,我相信工作量应该是蛮大的。
Ⅳ 控制台日志
这个没什么好说的,获取的就是Logcat中的命令,对Logcat还不清除的同学,可以看我的Logcat的博客。

Ⅴ Bugtags日志
这个日志和Logcat的去吧在于,它也是通过API的方法来调用,但是不会出现在Logcat中。这里我个人认为:用户数据、logcat日志、bugtags日志其实都是上传一些信息上来,没有要绝对分开的必要,使用其中一个即可完成,但是如果你想按分类上传的话,当然这也是一个好的接口提供方法。

Ⅵ 网络请求
这项功能可以统计到当前应用的所有http的请求,这里可以说一说。目前我们市面上针对网络的捕获都是采用抓包的策略,无论是tcpdump或者是fiddler他们抓取的都是对整个手机网络的一个捕获,不能细化到应用级别。而Bugtags使用hook技术并且对市面上一些网络库(例如okhttp、 android-async-http)也采取对应的处理,因此可以精准到抓取应用级别的一个网络请求。

Ⅶ 发生崩溃
除了前面提到的一个Bug提交后可以看到的信息,该平台还可以自动捕获崩溃信息。这里demo中提供了一个模拟发生崩溃的按钮

点击之后应用发生崩溃,我们去系统中可以看到步骤到了堆栈信息:

至于如何捕捉到崩溃异常,有兴趣的可以看看 UncaughtExceptionHandler 。这里有我同事在github上写的demo:https://github.com/DrJia/AndroidLogCollector
对于同类型的崩溃,平台也做了汇总,可以看到崩溃的一个影响范围

以上大概就是我对Bugtags简单使用和理解
个人评价
截至目前为止,我认为这是我见过的比较好的平台了,不管是易用性、丰富性、美观性,个人都觉得不错,当然也有一些值得改进的地方,下面是个人总结:
优点:
1、可以便捷的提交UI性bug;
2、bug管理平台比较完善(还可以自动生成报表);
3、自动捕获异常功能比较出彩;
4、捕获网络请求数据比较出彩;
待改进:
1、Fragment或者其他一些自定义布局的生命周期无法捕获;
2、提交bug适合于静态页面UI的错误类的bug,不适合复杂操作的逻辑性bug提交;
3、无法捕获到操作第三方步骤(例如拉起微信登录);
4、需要两个手机完成的不太适合(例如闲鱼,需要买卖双方来完成操作);
5、记录详细的步骤时,开发是否愿意维护这些代码;
6、安全性;
【Android测试】【随笔】Bugtags初体验的更多相关文章
- 自动测试工具agitarOne 初体验之-MockingBird的使用
大名鼎鼎的AgitarOne就不用解释了,在昨天的随笔中有一些解释,今天主要说说Agitar 中Mockingbird的使用. 为了提高测试代 码的Coverage,仅仅靠Agita ...
- pytest内核测试平台落地初体验
测试平台,有人说它鸡肋,有人说它有用,有人说它轮子,众说纷纭,不如从自身出发,考虑是否要做测试平台: 第1阶段,用Python+requests写接口自动化. 第2阶段,选择unitttest或pyt ...
- Android学习之Broadcast初体验
•何为 Broadcast ? Broadcast 直译广播,接下来举个形象的例子来理解下 Broadcast: 上学的时候,每个班级都会有一个挂在墙上的大喇叭,用来广播一些通知,比如,开学要去搬书, ...
- Android学习之服务初体验
•概念 Service(服务)是一个长期运行在后台,没有用户界面的应用组件,即使切换到另一个应用程序或者后台,服务也可以正常运行: 因此,服务适合执行一些不需要显示界面的后台耗时操作,比如下载网络数据 ...
- django初体验 学习笔记
django环境搭建 1.安装Python 2.ipython sudo apt-get install ipython sudo pip instal ...
- 【Android测试】【随笔】模拟双指点击
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5258660.html 手势 看到这个标题,很多人会想一想 ...
- Android开发学习之路--百度地图之初体验
手机都有gps和网络,通过gps或者网络可以定位到自己,然后通过百度,腾讯啊之类的地图可以显示我们的地理位置.这里学习下百度地图的使用.首先就是要申请开发者了,这个详细就不多讲了.http://dev ...
- 第三次随笔--安装虚拟机及学习linux系统初体验
第三次随笔--安装虚拟机及学习linux系统初体验 ·学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 首先按照老师的提示步骤进行VirtualBox虚拟 ...
- 【Android测试】【随笔】模拟长按电源键
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5195121.html 起因 昨天群里看到有人问如何实现一个 ...
随机推荐
- http://jingyan.baidu.com/article/db55b609aac41e4ba30a2f86.html
http://jingyan.baidu.com/article/db55b609aac41e4ba30a2f86.html
- POJ3252 Round Numbers(不重复全排列)
题目问区间有多少个数字的二进制0的个数大于等于1的个数. 用数学方法求出0到n区间的合法个数,然后用类似数位DP的统计思想. 我大概是这么求的,确定前缀的0和1,然后后面就是若干个0和若干个1的不重复 ...
- cocos2d ccmenulabel
// // TestMenu.hpp // mario // // Created by sun on 15/12/22. // // #ifndef TestMenu_hpp #define Tes ...
- BZOJ2674 : Attack
整体二分+树状数组套Treap,时间复杂度$O(n\log^3n)$. #include<cstdio> #include<cstdlib> #include<algor ...
- 移动APP 中文输入法下的搜索优化
最近做了一个移动端的搜索功能,带有suggest.实现上并没有什么可说的,但是在后续优化上,特别是在中文输入法的情况下的优化使我学到一些新东西,所以决定写一篇文章. 下面是我简化后的基本功能实现,监听 ...
- chrome://inspect 移动前端调试方案(Android + Chrome 实现远程调试)
一:背景通常情况我们调试移动端页面最常用的方法就是:切换pc端浏览器的userAgent来模拟手机或其他移动设备调试页面 然后用手机打开要调试的页面 刷新页面查看调试结果 但是这就存在两个问题 在pc ...
- WebRTC手记之框架与接口
转载请注明出处:http://www.cnblogs.com/fangkm/p/4370492.html 上一篇文章简单地介绍了下WebRTC的协议流程,这一篇就开始介绍框架与接口. 一提到框架,本能 ...
- C#设计模式——抽象工厂模式(原文转自:http://blog.jobbole.com/78059/)
一.引言 在上一专题中介绍了工厂方法模式,工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码),而工厂方法模式每个具体工厂类只完成单个实例的创 ...
- javascript 三个 对话框
用法: 一般写在 </html>之后,<script language="javascript">代码必须放在这里面</script> 三个常用 ...
- react-native 学习
官网 https://facebook.github.io/react-native/docs/getting-started.html#content 下载 npm install -g react ...