欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

IOS上的monkey测试探索(一)

程序员文章站 2022-03-09 17:29:08
应领导要求,需要我提供一个IOS端app稳定性测试的解决方案,于是我这个对IOS仅限于日常使用的小白开始了探索之路。经过调研我的心拔凉拔凉的,使用Python加Android系统内置的monkey包再加ADB命令,很容易能写个用于Android端APP的稳定性测试工具。但是IOS端没有这些便利条件,可能是苹果对于自家产品很自信,觉得不需要这些吧。但是我的任务还是得想办法完成啊,于是开始逛各大博客、社区。学习大佬的经验之后总结了以下几个可以用于IOSmonkey测试的方案。1......

应领导要求,需要我提供一个IOS端app稳定性测试的解决方案,于是我这个对IOS了解仅限于日常使用的小白开始了探索之路。

经过调研我的心拔凉拔凉的,使用Python加Android系统内置的monkey包再加ADB命令,很容易能写个用于Android端APP的稳定性测试的工具。但是IOS端没有这些便利条件,可能是苹果对于自家产品很自信,觉得不需要这些吧。但是领导安排的任务还是得想办法完成啊,于是开始逛各大社区。学习大佬的经验之后总结了以下几个可以(或者曾经可以)用于IOS端APP稳定性测试的方案。

1、基于 UIAutomation 的 monkey

Git:https://github.com/jonathanpenn/ui-auto-monkey

这个应该是最早用来做IOS端monkey测试的工具,使用JavaScript来驱动应用程序用户界面。但是随着iOS 和 Xcode 升级之后,UIAutomation 框架被砍掉了,只适用于Xcode7.x之前的版本,这个项目目前已弃用。

2、基于 XCUITesting 框架的 SwiftMonkey

Git:https://github.com/zalando/SwiftMonkey

基于XCTest测试框架,调用私有api XCEventGenerator,但是Xcode10.1以上XCTestFramework已经去掉了这个API,而且需要插装到源码中,所以需要进行二次开发才能正常使用。

3、FastMonkey

Git:https://github.com/zhangzhao4444/Fastmonkey

Fastmonkey是zhangzhao大神基于 XCTestWD和swiftmonkey 二次开发的用于IOSmonkey测试的工具,不需要插装,高效率,每秒可执行4-5个action!刚看到的时候很兴奋,这正是我想要的,但是后面发现只支持Xcode 8.x和9.x的版本,而且zhangzhao大神的GitHub已经一年没有动静了,等zhangzhao大神适配最新的Xcode版本也不太现实。

4、sjk_swiftmonkey

Git:https://github.com/lcyfly/sjk_swiftmonkey

sjk_swiftmonkey是lcyfiy前辈基于swiftmonkey二次开发的,不需要插装,且支持Xcode 11.X。

 

由于我们项目是在Xcode11.X的版本上开发的,所以选择了sjk_swiftmonkey。我自己简单试了下,在Xcode11.7版本运行正常,但是不知道是不是我配置的问题,感觉效率不太理想,一个action大概需要1-5秒。不过现在没有更好的选择,可以先用着,后续看能不能改进一下,或者使用WDA自己实现。

下面简单介绍下sjk_swiftmonkey搭建和配置

首先从https://github.com/lcyfly/sjk_swiftmonkey拉取代码,用Xcode打开。主要目录结构如下

IOS上的monkey测试探索(一)

Monkey: 是程序入口,主要是monkey构造,monkey运行等

MonkeyXCTest: 看注释的话本来是要扩展monkey使用公共的XCTest API来生成事件的,但是没写。。。

MonkeyXCTestPrivate:这块才是利用私有API生成各种事件的代码

MonkeyUIAutomation: 这块是利用UIautomation框架来执行各种事件的,但是只支持模拟器

Random: 这块是生成各种随机数的函数

参考https://www.cnblogs.com/dreamyu/p/11280030.html,这是lcyfiy前辈二次开发的介绍。

 

打开之后修改sjk_monkeyUITests文件第13行,com.yourbundleid改为你自己要测试的app的bundleid,

最下面可以修改需要执行的时间次数和事件间隔时间。

IOS上的monkey测试探索(一)

然后在Signing&Capabilities中修改自己的开发者账号:Team-->add,注意:红色圈住的三个文件都要改

Bundle Identifier随便改个唯一的字符串

IOS上的monkey测试探索(一)

改完之后点击Generic ios Device选择自己的设备,然后Product-->Test就可以运行了

IOS上的monkey测试探索(一)

Build之后执行测试的时候可能会报下面的错误,

Failure Reason: ZM iPhone has denied the launch request.

Internal launch error: process launch failed: The operation couldn’t be completed. Unable to launch com.sanjieke.sjk-monkeyUITests.xctrunner because it has an invalid code signature, inadequate entitlements or its profile has not been explicitly trusted by the user.

解决方式:打开被测设备的设置-->通用-->设备管理-->信任。

IOS上的monkey测试探索(一)

本文地址:https://blog.csdn.net/weixin_43843008/article/details/108620640