debugtalk 发表于 2016-5-23 11:35:26

从 0 到 1 搭建移动 App 功能自动化测试平台 (1):模拟器中运行 iOS 应用

本帖最后由 debugtalk 于 2016-5-23 11:36 编辑

在上一篇文章中,我对本系列教程的项目背景进行了介绍,并对自动化测试平台的建设进行了规划。在本文中,我将在已准备就绪的iOS自动化测试环境的基础上,通过Appium调用模拟器运行iOS应用。内容很是基础,熟悉的同学可直接略过。iOS应用安装包的基础知识作为完全的iOS新手,困惑的第一个问题就是iOS安装包文件。在Android系统中,安装App的途径很多,除了各类应用市场,普通用户也经常直接下载apk安装包文件后手动进行安装,因此大家对Android的安装包文件都比较熟悉。但是对于iOS系统就不一样了,由于我们普通用户在iOS上安装应用的时候基本上只能通过Apple Store进行安装(未越狱),没有机会接触原始的安装包文件,因此往往连iOS应用的安装包到底是什么格式后缀都不清楚。现在我们想在Appium App中通过模拟器运行被测应用,需要指定iOS app的安装包路径,因此需要首先获得一个iOS app安装包。http://debugtalk.com/assets/images/Appium_iOS_Settings_init.jpg那么iOS app的安装包长啥样呢?或者在这个问题之前,我们先来看下另一个问题:对于iOS设备来说,如果不通过Apple Store,我们可以怎样安装一个应用?针对这个问题,我搜了些资料,也请教了周围的同事,了解到的途径有如下几个:
[*]企业证书:该种方式适用于企业内部;通过企业证书编译出的iOS应用,无需上传至Apple Store,即可无限制的安装到企业员工的iOS设备中。只是需要解决的一个问题是,由于iOS设备没有文件管理器,没法将安装包拷贝到iOS设备中,因此常用的做法是将安装包(.ipa文件)上传至一些下载服务器(例如fir.im),并生成二维码,然后用户扫描二维码后即可通过浏览器下载安装包并进行安装。由此联想到另外一个方法,通过微信文件传输助手将安装包(.ipa)传输至iOS设备,然后再进行安装应该也是可以的吧?这种方法不知在原理上是否可行,因为在试验时由于安装包大于30M,微信无法传输,所以没能进行验证。
[*]Xcode:该种方式适用于iOS开发者;开发者在Xcode中连上iOS设备对源码进行编译,编译生成的应用会自动安装至iOS设备。当然,该种方式也是需要iOS开发者证书。
[*]PP助手:该种方式适用于普通用户;PP助手是一个非苹果官方的设备资源管理工具,可以实现对未越狱的iOS设备进行应用管理,也可以安装本地.ipa文件,前提是.ipa文件具有合适的签名。
在上面列举的安装应用的途径中,反复提到了.ipa文件,那.ipa应该就是iOS应用程序的后缀了吧?暂且这么认为吧。再回到前面的场景,要在iOS模拟器中运行iOS应用,我们是否可以找研发人员要一个.ipa安装包文件,然后就能在模拟器中加载运行应用呢?刚开始的时候我是这么认为的。于是我获取到.ipa文件后,在App Path中填写该文件的路径,然后启动Appium Server;接着我再打开Inspector时,发现iOS模拟器启动了,但是在应用启动的时候就出问题了,始终无法正常启动,感觉像是启动崩溃,反复尝试多次仍然如此。再次经过Google,总算是明白出现问题的原因了,总结下来有如下几点:
[*]不管是从Apple Store或iTunes上下载的应用,还是在Xcode中针对真机设备编译生成的.ipa文件,都是面向于ARM处理器的iOS设备,只能在真机设备中进行安装;
[*]而在Mac OSX系统中运行的iOS模拟器,运行环境是基于Intel处理器的;
[*]因此,若是针对真机设备编译生成的.ipa文件,是无法在iOS模拟器中正常运行的,毕竟处理器架构都不一样;
[*]要想在iOS模拟器中运行应用,则必须在Xcode中编译时选择模拟器类型;编译生成的文件后缀为.app。
准备.app文件接下来,就说下如何获取.app文件。虽然是测试人员,不会对被测iOS项目贡献代码,但是也不能总是找研发帮忙编译生成.app文件。所以,在本地搭建完整的iOS项目开发环境还是很有必要的。对于iOS开发环境的搭建,当前社区中应该已经有了很多完整的教程,我在这儿就不详细描述了,只简单说下我搭建过程中涉及到的几个点。首先,Mac OSX、Xcode、Apple Developer Tools这些基础环境的安装,在上一篇文章中已经进行说明了;然后,申请项目源码的访问权限,git clone到本地;接着是项目依赖环境的问题;通常一个较大型的iOS项目都会引用许多第三方库,而这些依赖库并不会直接保存到项目仓库中,通常是采用CocoaPods进行管理;简单地说,CocoaPods是针对Swift和Objective-C项目的依赖管理器,类似于Java中的Maven,Ruby中的Gem,Python中的pip。当然,iOS项目的依赖管理工具也不是只有CocoaPods一个,如果是采用的别的依赖管理器,请自行查找对应的资料。采用CocoaPods管理的项目,在项目根目录下会包含Podfile和Podfile.lock文件,里面记录了当前项目依赖的第三方库以及对应的版本号。安装CocoaPods很简单,采用gem即可。$ sudo gem install cocoapods
然后,进入到iOS项目的目录,执行pod install命令即可安装当前项目的所有依赖。$ cd Project_Folder$ pod installRe-creating CocoaPods due to major version update.Analyzing dependencies.....(略)Downloading dependencies.....(略)Generating Pods projectIntegrating client projectSending statsPod installation complete! There are 27 dependencies from the Podfile and 28 total pods installed.
关于CocoaPods的更多信息,请自行查看官方网站在依赖安装完成后,正常情况下,就可以在Xcode中编译项目了。没有别的需要注意的,将target选择为模拟器(iOS Simulator)即可。而且针对模拟器进行编译时,也不会涉及到开发者证书的问题,项目配置上会简单很多。待后续讲到真机上的自动化测试时,我再对证书方面的内容进行补充。编译完成后,在Products目录下,就可以看到XXX.app文件,这里的XXX就是项目名称;然后,选中XXX.app文件,【Show in Finder】,即可在文件目录中定位到该文件。接下来,将XXX.app文件拷贝出来,或者复制该文件的Full path,怎样都行,只要在Appium的App Path中能定位到该文件就行。模拟器中运行iOS应用被测应用.app准备就绪后,接下来就可以在iOS模拟器中运行了。回到前面的那张图。启动Appium app后,对于模拟器运行的情况,在iOS Settings中必须设置的参数项就3个,App Path、Force Device和Platform Version。对于真机运行的情况,后续再单独进行说明。设置完毕后,点击【Launch】,启动Appium Server。http://debugtalk.com/assets/images/Appium_Inspector_Button.jpg然后,点击图中红框处的按钮,即可通过Inspector启动模拟器,并在模拟器中加载iOS应用。http://debugtalk.com/assets/images/Appium_iOS_Simulator_Console.jpg在模拟器中,我们可以像在真机中一样,体验被测应用的各项功能;并且,在Appium的日志台中,可以实时查看到日志信息。
经历的一个坑整个过程是挺简单的,不过,在探索过程中我还是有遇到一个坑。由于帖子字数限制10000字,略。
To be continued ...现在,我们已经成功地通过Appium Inspector调用模拟器并运行iOS应用,接下来,我们就要开始尝试编写自动化测试用例了。在下一篇文章中,我们将对Appium Inspector的功能进行熟悉,通过Inspector来查看iOS应用的UI元素信息,并尝试采用脚本语言与UI进行交互操作。
Read More ...公众号:DebugTalk
原文链接:http://debugtalk.com/post/build-app-automated-test-platform-from-0-to-1-Appium-inspector-iOS-simulator
相关文章
[*]《从0到1搭建移动App功能自动化测试平台(0)背景介绍和平台规划》

sweetdream0828 发表于 2016-5-23 13:21:14

:)

sweetdream0828 发表于 2016-5-23 13:21:21

:)

sweetdream0828 发表于 2016-5-23 13:21:35

学习下

sweetdream0828 发表于 2016-5-23 13:22:07

学习下
页: [1]
查看完整版本: 从 0 到 1 搭建移动 App 功能自动化测试平台 (1):模拟器中运行 iOS 应用