前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Appium的iOSMonkey

基于Appium的iOSMonkey

作者头像
测试加
发布2022-03-24 16:05:05
1.3K0
发布2022-03-24 16:05:05
举报
文章被收录于专栏:用户4624600的专栏

前言

iOS稳定性测试业界做的比较少,因为iOS没有提供类似google的那种Monkey工具,在实际的项目中也需要对iOS进行稳定性测试,所以进行了一番调研.先后使用了一些工具到自己开发的工具,从中也学到了不少知识.本文就介绍下,使用iOSMonkey的一些心得.

调研工具

  • Fastmonkey Fastmonkey由zhangzhao4444大神开发,基于Swift开发,支持非插桩monkey点击事件、app后台或退出检测等操作,前期使用Fastmonkey大概4个月左右,但是后来运行的电脑xcode升级到了9.4,就再也跑不起来了,进行了一番折腾最终也没找到解决方案, 所以后来就放弃使用了.但是不得不说这个工具点击速度还是很快的而且使用简单,可惜作者使用的Swift语言开发,对于二次开发有些难度. git地址和学习帖 https://github.com/zhangzhao4444/Fastmonkey https://testerhome.com/topics/9524
  • macaca版本的Monkey 通过同事介绍学习了macaca版本的iosMonkey,运行速度较快,可以模拟点击时事件、滑动、输入等操作. 但是使用过程中发现,最新版本的macaca底层使用的xctestwd,并发多设备的时候,只能运行一个设备,google了一番xctestwd 对多设备兼容不好.不过看过了作者的源码,对我后来使用appium开发monkey有很大的帮助. git地址和学习帖 https://github.com/baozhida/iosMonkey https://testerhome.com/topics/8025

预期

  • 学习成本低 本次开发使用的是appium框架+java+testng,是最常常见的脚本开发组合.所以学习成本较低,可以直接设计框架并写代码.
  • 可模拟多种操作 需要支持滑动、点击操作、输入、后退等操作,来模拟大量随机操作,这块的代码是翻译的macaca版本的Monkey.
  • 多设备并发 通过配置不同wda端口和appium端口来实现多设备并发
  • 可查看操作轨迹 每步骤截图一张并标记坐标,最终把所有截图合并成一张gif图.
  • 可查询崩溃 Monkey的主要功能还是发现crash,所以在结束后查询是否存在崩溃并发送邮件.
  • 支持自定义用例 在执行monekey前,通过配置自定义用例,来先进行登录.
  • 支持生成性能文件 可生成运行期间的性能文件.

执行流程

配置文件

代码语言:javascript
复制
config文件中配置数据:
UDID: "606EC265-1ED8-454D-AF80-BEB78A417B55" #设备udid
BUNDLEID: "com.iOS.Demo"  #app的bundle id
TIMING: "1" #运行时间,单位分钟
PORT: "3460" #appium端口
PROXYPORT: "5680" #WDA端口
NeedScreenshot: "true" #是否截图, true是截图
ScreenshotFolder: "~/iOSMonkey" #截图目录
VERBOSE: "true" # 打印日志
TRACEPATH: "~/iOSMonkey" # 性能文件路径
AppiumLogFolder: "~/iOSMonkey" # appiumlog文件路径
TestCase: "/Users/xinxi/Desktop/iOSMonkey/testcase.yaml" # 测试用例文件,可选项

用例配置

因为有些app是启动以后必须登录,可以通过自定义用例,先进行登录操作再执行monkey操作.

需要在config配置文件中配置用例地址

代码语言:javascript
复制
TestCase: "/Users/xinxi/Desktop/iOSMonkey/testcase.yaml"

用例配置如下

代码语言:javascript
复制
testcase:
  casename: "case1"
  steps:
  - when: "name;Action Sheets"
    by: "name;Action Sheets"
    action: "click"
    sleeptime: "500"
  - when: "name;Other"
    by: "name;Other"
    action: "click"
    sleeptime: "500"

使用方法

代码语言:javascript
复制
在项目根目录执行mvn install,cd到target目录下.
config.yam文件是上面介绍的配置文件
执行java -jar iOSMonkey-1.0.jar -f ~/config.yam

测试app可以clone这个项目https://github.com/appium/ios-uicatalog,在本地编译.

性能文件

生成trace.zip文件,解压该文件并且双击点击该文件,会生产cpu使用率走势图

运行效果

把所有运行步骤截图合成一份gif图,方便出现crash定位复现步骤.

后续

因为实际项目中使用的模拟器进行测试,所以代码中查崩溃日志是用的模拟器的崩溃文件地址,后续会兼容一下真机.使用上并没有其他差别.

项目地址

https://github.com/xinxi1990/iOSMonkey

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试加 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 调研工具
  • 预期
  • 执行流程
  • 配置文件
  • 用例配置
  • 使用方法
  • 性能文件
  • 运行效果
  • 后续
  • 项目地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档