Appetizer Appetizer 1.2.1 更新日志:报告可以导出啦,插桩可以用 Jenkins 啦

AppetizerIO for AppetizerIO · 2017年08月07日 · 143 次阅读

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

  • 测试么,非常随意,Appium, Calabash, Robotium,人工测试都可以,Appetizer 插桩后的 APP 只要运行就会采集数据到本地存储,然后等待测试完成上传分析。

  • 图形化客户端提供分析功能以及导出后的报告下载,如果希望集成,则需要使用 Appetizer 的 Python 客户端(https://github.com/appetizerio/insights.py),同样,python insights.py analyze命令会在服务器成功产生报告以及报告导出文件后显示导出的报告下载地址,如图:

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",
}
  • 这是一个 html 报告样例,另外 csv 报告主要用来 Excel 打开,JSON 格式主要用于更深度的接入一些 Bug 追踪服务

主线程卡顿细节

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

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册