iOS的自动化测试框架可分为两种:注入式和非注入式。注入式的框架通常会提供一些Lib或者是Framework,要求测试人员在待测应用的代码工程中导入这些内容,框架可以通过他们完成对app的驱动,典型的比如monkeytalk。非注入式的框架则是通过苹果提供的instruments工具,调用官方的接口函数,实现对app的相关操作,典型的就是uiautomation,appium
区别:
注入式:可获取app内的数据;可操作空间大,不受官方限制;可在windows平台进行测试;但是需要在待测项目中增加第三方的部分,使得测试的内容和实际发布的内容并不一致
非注入式:待测内容和最终的上线内容保持一致;测试无需源码;但是受官方限制,一些功能无法实现,而且环境要求必须使用os x平台的Xcode。
采用instruments的原因:
1. 测试工具和测试文档均由苹果官方维护
2. 无需额外前置工作,可以直接对提测的app进行测试
3. 支持录制
1. 环境
mac:
OS X
Xcode-instruments
其中,Xcode通过mac上的App store即可直接安装使用,instruments为Xcode自带的工具集,无需单独下载
iPhone/iPad:
待测app
其中,待测app如果是运行在真机上,则一定需要用开发者证书签名,采用发布证书或者是企业证书打包的应用无法用以真机测试。
2. 准备工作 for 真机
1)手动安装应用到iPhone上,并连接iPhone到mac。
PS:如果该设备是第一次连接这台mac,需要等待organizer完成识别和同步工作才能使用。
PPS:如果organizer没有自动启动,可以通过Xcode->window->organizer,手动启动该程序。
2)启动instruments工具集,并选择Automation,进入测试工具的主界面
启动方式:打开Xcode,选择Xcode->Open DeveloperTool->Instruments
PS:启动instruments之后,可以在下方Doce菜单中,选中instruments的图标,右键选择在Dock中保留,便于下次快捷启动该工具,不用每次都去启动Xcode。
3. 准备工作 for 模拟器
方式一:从源码直接启动instruments,适用于有源代码工程的情况。
1) 双击*.xcodeproj 文件打开工程
2) 在Xcode中,选则Produce->Profile,该命令会首先build整个工程,在成功之后,自动启动instruments工具集,然后手动选择Automation工具即可。
方式二:使用已经编译完成的并且可用于模拟器运行的*.app文件,有无源码均可
1) 手动启动instruments工具集并进入Automation,选择待测的*.app文件即可
PS:运行于模拟器和真机的程序需要采用不同的方式进行编译,不能通用的。平时的提测包都是用于真机运行的,无法在模拟器运行。
2) 如果有源码,可以在选择模拟器和对应的iOS版本之后,直接Run到模拟器中,然后在需要测试时,通过Automation选择到模拟器目录下的该app文件也可以。
模拟器中的应用可以在这个路径下面找到:
/Users/
用户名
/Library/Application Support/iPhone Simulator/iOS
版本
/Applications/
该路径下载就是模拟器中的已安装的所有应用程序,找到待测试的*.app即可。
目前我测试的是一块视频应用,播放器底层的一些库运行在模拟器上会有问题,所以我的后面的所有内容都以运行于真机的环境为准。
4. 从录制开始
1) 选择待测试的应用。
在左上方的choose target上点击,选择当前连接的设备,以及该设备上已安装的待测试app
2) 聚焦到script区域,点击该区域下方的红色按钮