当前位置 博文首页 > Ricky Qiu的软件测试笔记:Android开发和测试实践 - 接入友盟统

    Ricky Qiu的软件测试笔记:Android开发和测试实践 - 接入友盟统

    作者:[db:作者] 时间:2021-09-16 19:28

    这两年一直在做无线的测试,后续还会继续去做无线的测试,但是之前因为时间的原因一直都没有非常仔细的了解到代码层面。近期抽空自己做了些app的开发,决定如果想把移动的测试做好做深入,有一定的app开发经验非常的有必要,因为只有这样很多东西才能真正理解了。另一个方面,这本身也很有趣。目前尝试的一些东西都还比较基础,准备持续的做下去。

    实践的过程也想陆续整理出来,做下笔记,也给别人一些参考,遇到很多问题的时候也是到谷歌度娘的找答案,帮助很多。目前更多关注android,ios的部分稍继续。

    基本上现在任何一个实用的app都离不开埋点统计,否则应用撒出去就两眼一抹黑了,也难以做运营和一些决策。为了进一步了解这一块,除了看现有产品的做法(公司内部平台),也想自己动手写一下,加深理解,于是选择了业界用得比较多的友盟平台。


    统计的维度很多,不过最基本的新增用户和启动次数。关于这个,可能就需要涉及到Android的activity的生命周期和状态改变。为了更好的理解,做了个简单的代码尝试。

    ? ? ?protectedvoid onCreate(Bundle savedInstanceState) {????????

    super.onCreate(savedInstanceState);????????

    setContentView(R.layout.activity_main);????????

    Log.e(TAG,"enter onCreate”);

    ? ? }


    ? ? protectedvoid onStart() {? ????????

    super.onStart();? ????????

    Log.e(TAG,"onStart");? ????

    ? ? }? ????


    ? ? @Override

    ? ? protectedvoid onResume() {? ????????

    super.onResume();? ????????

    Log.e(TAG,"onResume"); ? ?

    ? ? }? ????


    ? ? @Override? ????

    ? ? protectedvoid onPause() {? ????????

    ? ? ? ? super.onPause();? ????????

    ? ? ? ? Log.e(TAG,"onPause"); ? ??

    ? ? } ?


    然后做了一些实验:
    1. 第一次启动应用main activity有3个状态触发,onCreate,onStart,onResume



    2. 按home键将应用切到后台,触发onPause和onStop



    3. 长按home键,找到应用,重新切回前台,触发onStart和onResume


    后面看友盟的sample code后发现也是基于这个来统计活跃用户的。好了,下面记录下接入友盟统计的过程。

    首先,需要在AndroidManifest.xml中添加权限和一些配置,主要是appkey,这个在友盟网站注册好账号之后添加应用就可以获取到,Channel ID是自己来定义。

    <uses-permissionandroid:name="android.permission.INTERNET"/>

    <uses-permissionandroid:name=“android.permission.ACCESS_NETWORK_STATE" />?

    <uses-permissionandroid:name=“android.permission.READ_PHONE_STATE" />


    ……
    < meta-data android:value = “535f487******" android:name = "UMENG_APPKEY" ></ meta-data >
    < meta-data android:value = "Test001" android:name = "UMENG_CHANNEL” />
    </ application >


    然后在activity里面添加对应的代码,MobclickAgent class。
    import com.umeng.analytics.MobclickAgent;

    protectedvoid onCreate(Bundle savedInstanceState) {????????

    ? ? super.onCreate(savedInstanceState);????????

    ? ? MobclickAgent.updateOnlineConfig(this);

    }

    protectedvoid onResume() {? ????????

    ? ? super.onResume();? ????????

    ? ? Log.e(TAG,"onResume"); ????????

    ? ? MobclickAgent.onResume(mContext);

    }? ??? ??


    protectedvoid onPause() {? ????

    ? ? super.onPause();? ? ??

    ? ? Log.e(TAG,"onPause"); ? ??

    ? ? MobclickAgent.onPause(mContext);

    } ?



    需要把umeng的jar包加到工程里面。



    但是在Eclipse里面做完这一步之后发现还是遇到错误,一执行到 MobclickAgent的语句就异常了,如下面。官方文档只是提到上面的步骤。



    解决方案是把umeng的jar包放到工程的libs目录下。




    接下来,App跑起来,几分钟之后就可以看到数据了。



    启动次数这里因为是通过onResume()统计的, 所以有一些细节需要注意,看是否需要调整。



    可以看到渠道的结果,就是之前在AndroidManifest.xml里面配置的。





    设备的一些信息目前不能查看当天的结果,要第二天来看,还是比较准确的。








    另外也试验了下自定义的Event。我的demo app里面有两段访问HTTP接口的地方,分别通过Apache HttpClient和Android HttpClient,想统计下调用次数以及响应时间。

    在调用前后埋上对应的代码。
    MobclickAgent.onEventBegin( this , "Android_http_visit” );
    MobclickAgent.onEventEnd( this , "Android_http_visit" );







    总体来说,基本统计功能还不错,开发也很方便,比之前想象的要方便很多。但是结合我们实际产品用的自研BI工具的数据分析,以及和朋友了解到大规模实际使用的情况,一些偏应用层面的功能还不是特别够用。比如详细的用户访问路径方面。
    下面能给出一些基本的模型。但是如果是产品和运营要做非常细致的分析还需要自己做一些工作。?



    漏斗模型等因为demo app太简单还没来得及继续深入了解。这样了解下来发现再去读实际产品的运营数据,会感觉更容易理解一点。



    cs