Appetizer 1.2.1 发布了,大家可以到 https://appetizer.io 下载三平台的最新版本,有问题 QQ 群:467889502。
此次更新目标是更好地将 Appetizer 服务与企业的持续化集成工具链衔接,APK 插桩步骤可以接入 Jenkins 内完成;测试可以用 Appium 等各大框架、命令行等;最重要的是 Appetizer 的报告可以导出啦,可以导出啦,可以导出啦,目前支持 CSV (Microsoft Excel Mac/Windows 和 OpenOffice 可以直接打开), JSON 以及 HTML 各式,大家随意集成。最后新版本也带来了对主线程卡顿问题的细节描述,插桩和分析出错的状态信息以及一系列 bugfix 和辅助性文字。

从 Jenkins 一路到 HTML 报告

Jenkins 是企业持续化集成的标配,Appetizer 支持在单机 Jenkins, Master-slave Jenkins, Jenkins Pipeline 以及 Jenkins REST API 接入 Appetizer 插桩服务产生插桩包。
其实就是首先配置 Jenkins 的 Python 环境,然后用 Appetizer 的 Python 客户端(https://github.com/appetizerio/insights.py)来接入 Jenkins,贴几个截图,熟练的同学秒会,玩 Jenkins 不久的参考具体教程:https://testerhome.com/topics/9314

waiting...... server is uploading the report
server has generated and uploaded the report
exported reports available at:
{
    "csv": "http://cache.appetizer.io/xxxxx.csv.zip",
    "json": "http://cache.appetizer.io/xxxxx.json.zip",
    "html": "http://cache.appetizer.io/xxxxx.html.zip",
}

主线程卡顿细节

Appetizer 会定时检测主线程是否卡顿,当卡顿发生时会截取当前的 stacktrace,辅助诊断问题,下面是主线程卡顿的细节截图,问题是用了臭名昭著的 ImageView.setImageResource函数,这个函数可以将一个 Resouce 展示到一个 ImageView,但是问题是图片是在主线程上被加载和 decode 的,所以对于一些比较大的 Resource,加载耗时很长,就会产生卡顿。如果不想引入 Picasso 这类库的话,一个最简单通用的解决方法是建一个 AsyncTask,在 doInBackground里面调用 BitmapFactory.decodeResource去从解析以及资源,得到一个 Bitmap,然后在postExecute里用 ImageView.setImageBitmap(bitmap)去展示,异步对于主线程卡顿有非常好的解决效果。

测试时记得删除旧 log

在使用过程中,我们发现有些用户会碰到一个分析报告里统计的测试时间非常长,实际却可能只有几个小时测试。这个是因为 Appetizer 插桩后的 APP 启动后就会自动向存储设备上写 log,然后如果没有及时使用分析功能分析,log 会一直累积,也就是说一次测试后没有分析,下次测试等于 log 累积了上次和本次的,自然再分析就会发现运行时间超长。

对于这种情况,我们建议在测试脚本中适时增加清空设备上 Appetizer log 的操作,具体来说 log 存储在 /sdcard/io.appetizer/<包名>.log。通常在两次测试间,或者是一个旧的插桩包被删除的时候可以考虑通过 adb 命令从设备删除不必要的 log(注意 APP 这时最好是关闭状态,否则一边写 log 和一边删除容易出问题),方法是 adb shell rm /sdcard/io.appetizer/<包名>.log


↙↙↙阅读原文可查看相关链接,并与作者交流