最近要添加友盟测试自定义事件, 发现之前是用两个版本来测试的,一个版本专门测试自定义事件,测完没问题再移植到线上版本, 这样效率太低, 很多无用功, 查了下友盟官方文档, 完全可以用集成测试来搞定.
首先, 代码中埋好点, 友盟里添加了APP,这是必须的.如果有多个版本,根据每个版本的AppKey来确定集成的是哪个版本, 这个是在代码中操作的,如下
/** 初始化友盟统计模块
@param appKey 友盟appKey.
@param reportPolicy 发送策略, 默认值为:BATCH,即“启动发送”模式
@param channelId 渠道名称,为nil或@""时, 默认为@"App Store"渠道
@return void
*/
+ (void)startWithAppkey:(NSString *)appKey reportPolicy:(ReportPolicy)rp channelId:(NSString *)cid;
其次,添加集成设备,如下图
集成设备入口
添加设备
成功之后可以看到对应列表,点击"查看",可以浏览对应设备的历史日志;
查看历史日志
还可以查看实时日志,实时日志和历史日志都记录了,页面路径和自定义事件的用户行为
实时日志
到这里我的集成测试之路算是成功了, 但是可别着急, 你以为这就完了吗? NONONO~重点来了:
- 在经过我反复测试之后我发现了一个问题:
- 虽然我可以看到实时日志,也能看到历史日志, 并且基本上和我测试时的操作相符
但是,但是,但是---- - 后台统计数据竟然也有变化, 后台统计数据竟然也有变化, 后台统计数据竟然也有变化 !
重要的事说三遍! - 因为这次我加的自定义事件都是新添加的, 并且项目还在开发阶段未发版, 按理说友盟集成测试之后后台的数据不会变应该都是0才对.
- 我发现有一个自定义事件的统计结果从0变成了1, 这是多么质的一个飞跃! 这意味着这个不合理的地方非常醒目, 在一堆0里耸立着一个1, 直就是你最大的错误...
这里有一个大前提,集成测试的数据是不应该出现在后台统计里的,以免污染后台数据
什么是集成测试? 集成测试是通过收集和展示已注册测试设备发送的日志,来检验SDK集成有效性和完整性的一个服务。 所有由注册设备发送的应用日志将实时地进行展示,您可以方便地查看包括应用版本、渠道名称、自定义事件、页面访问情况等数据,提升集成与调试的工作效率。
注意: 使用集成测试之后,所有测试数据不会进入应用正式的统计后台,只能在“管理--集成测试--实时日志”里查看,您不必再担心因为测试而导致的数据污染问题,让数据更加真实有效的反应用户使用情况。
我开始反复检查以上步骤, 反复查看友盟官方文档, 我发现只有一个地方是我没有按照友盟文档来做的. 文档里说:
使用集成测试模式请先在程序入口处调用如下代码,打开调试模式:
[MobClick setLogEnabled:YES];
我点进头文件里看到这段描述:
/** 设置是否打印sdk的log信息, 默认NO(不打印log).
@param value 设置为YES,umeng SDK 会输出log信息可供调试参考. 除非特殊需要,否则发布产品时需改回NO.
@return void.
*/
+ (void)setLogEnabled:(BOOL)value;
我觉得这个就只是控制友盟的log信息是否在Xcode控制台输出, 我并不想要它在控制台输出, 因为实时日志和历史日志里有我想要的全部信息, Xcode控制台输出一堆乱起八糟的东西很不优雅, 所以没加这句. 但是又找不到其他不合理的地方, 我就去找友盟的技术支持寻求帮助.
-
有趣的来了, 第一个客服在我说没加这句之后,就说问题就在这,然后不管我怎么问,都不理我了,然后我就毫无疑问投诉了他;-)
-
不懂技术的技术支持客服并没有阻止我解决bug的决心,虽然只有一个bug,但,bug就是bug,不管多少;-)
-
同样的,第二个客服也在听我说我没加这句代码之后表明,问题就在这儿了,案子破了. 不同的是, 我接下来的问题, 这个客服听进去了, 并且通过问别人帮助我找到了答案, 点名表扬~
敬业的客服
知道自己所有步骤没啥问题之后, 我就安心了, 可能是我没集成测试之前点过导致的, anyway , 重置数据之后, 万物归零, 万事大吉, 嘿嘿嘿
网友评论