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

appetizer.io for AppetizerIO · 发布于 2017年08月07日 · 414 次阅读

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

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