使用UI测试Xcode进行并行测试

时间:2016-04-13 16:04:52

标签: xcode7 xcode-ui-testing

我可以在同一台Mac上打开多个模拟器,以便使用Xcode的UI测试进行并行测试吗?

5 个答案:

答案 0 :(得分:3)

2018年5月更新:

Bluepill允许将测试拆分为多个模拟器并支持{ "kind": "drive#file", "id": string, "etag": etag, "selfLink": string, "webContentLink": string, "webViewLink": string, "alternateLink": string, "embedLink": string, "openWithLinks": { (key): string } s:

  

我们最近添加了对Xcode UI Testing捆绑包的支持。感谢   来自FBSimulatorControl的灵感。 Bluepill现在支持Xcode单元   测试包和UI测试包。

原始答案:

目前似乎还不是一个可行的解决方案。然而,有希望的工具正在到位。有一个名为FBSimulatorControl的框架及其名为fbsimctl的cli工具,它允许您同时启动多个模拟器,并安装&运行应用程序。

使用XCUITest,您可以构建目标应用程序&在每个模拟器上安装它。我坚持的部分是如何构建&安装随附的XCTestUI runner应用程序。

fbsimctl似乎不允许在不调用测试操作的情况下构建XCTestUI runner应用程序(导致多个模拟器打开的警报)。如果xcodebuild只允许为转轮应用构建xcodebuild,那么看起来.app/.ipa可以处理其余内容。

facebook/xctool尝试解决此问题时,还有一个未解决的问题。

答案 1 :(得分:3)

如果您在Mac上使用多个用户和某种持续集成系统,则可以进行并行UI测试。如果操作正确,您可以同时在各种设备模拟器上运行UI测试套件。换句话说,您可以在一台设备上运行这些测试所需的时间内针对许多设备运行所有UI测试 - 我认为这是我们在这里尝试完成的。以下是关于如何使用gitlab-ci-multi-runner启动和运行并行UI测试的说明。这些说明假设您从未使用过任何工具,但不是如何编写UI测试的说明:

  1. 通过mac app store安装Xcode。
    • 打开mac app store。
    • 输入" Xcode"进入搜索领域
    • 导航到Xcode安装页面,然后单击"安装"
    • 注意:我在撰写本文时使用了Xcode 8.2。
  2. 安装Xcode命令行工具。
    • 打开终端并输入以下命令xcode-select --install
    • 注意:您将需要Xcodebuild,因此这一步非常重要。
  3. 创建一些新的"测试"你的mac上的用户。
    • 打开系统首选项并点击"用户&组"
    • 单击窗口左下角的锁定图标进行更改。
    • 输入"用户名"和#34;密码"然后单击"解锁"。
    • 点击" +"添加位于Mac上用户列表底部的按钮。
    • 选择"管理员"在"新帐户"下拉菜单。
    • 在"全名"中为您的用户命名。文本字段(即测试用户一)
    • 点击"帐户名称"文本字段并允许其自动填充。
    • 在"密码"中输入您选择的密码。文字字段。
    • 将密码重新输入"验证"文字字段。
    • 可选择在"密码提示"中输入密码提示。文字字段。
    • 点击"创建用户"。
    • 重复第二步几次。注意:您创建的用户数量将决定一次通过UI测试套件运行的设备数量。在此解决方案中,我们将讨论在单个mac上同时针对多个不同设备运行测试。
  4. 在gitlab.com上创建一个帐户。
  5. 在gitlab上创建一个新项目。
    • 以下是how to do that的教程。
    • 按照"命令行说明"在新的项目详细信息页面上将Xcode项目移动到gitlab存储库中。
  6. 为每个测试用户创建SSH密钥:
    • 登录每个"测试"您刚刚创建的用户帐户。注意:每个用户都必须登录,这样gitlab-ci系统才能对该用户进行测试。如果不是,测试将失败。
    • 再次打开终端并输入ssh-keygen -t rsa
    • 按照this tutorial完成此过程。
    • 导航到您的gitlab"个人资料设置"页面,然后到" SSH密钥"标签。
    • 在终端中使用pbcopy < ~/.ssh/id_rsa.pub在每个测试中获取生成的SSH密钥&#39;用户帐户然后使用cmd + v将每个SSH密钥粘贴到&#34;密钥&#34; &#34; SSH密钥&#34;上的文本字段gitlab中的标签。
    • 注意:这对每个测试都至关重要。用户可以在gitlab中访问您的项目代码,因此不要为任何测试用户跳过此步骤。
    • 注意:我个人喜欢在登录每个&#34; test&#34;时,通过git clone测试每个用户是否有权访问回购。用户。
  7. 创建测试&#34;跑步者&#34; on / for your&#34; test&#34;你的mac上的用户。
    • 在gitlab.com上打开你的gitlab项目页面。
    • 单击项目设置图标。
    • 点击&#34;跑步者&#34;链接。
    • 此页面上的重要信息是&#34;如何为新项目设置特定运行器&#34;下的红色突出显示的URL和注册标记。页面的一部分。
    • 打开终端并输入sudo curl --output /usr/local/bin/gitlab-ci-multi-runner https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-darwin-amd64然后点击返回。
    • 输入sudo chmod +x /usr/local/bin/gitlab-ci-multi-runner然后点击返回。
    • 输入gitlab-ci-multi-runner install然后点击返回。
    • 输入gitlab-ci-multi-runner start然后返回。
    • 键入gitlab-ci-multi-runner status,然后按“返回”以确保服务正在运行。
    • 输入gitlab-ci-multi-runner register并点击返回。
    • 将上述gitlab页面中的URL复制并粘贴到终端并点击返回。
    • 将令牌从上述gitlab页面复制并粘贴到终端并点击返回。
    • 输入此&#34;测试&#34;的说明用户跑者和命中回报。
    • 输入此特定&#34;测试的唯一标记&#34;用户并点击返回。
    • 输入Shell并点击返回。
    • 验证跑步者是否已添加并且在gitlab跑步者页面上有一个绿点网。
    • 注意:对于此解决方案而言,为每个&#34; test&#34;设置单独的跑步者至关重要。您在Mac上设置的用户在不同设备上并行运行测试。同样重要的是,您为每个&#34;测试&#34;提供不同的标签。用户跑步者,所以gitlab可以告诉每个&#34;测试&#34;用户运行UI测试。
    • 打开终端并输入nano /Users/{test user name}/.gitlab-runner/config.toml并按Enter键。
    • 在第一行替换号码&#34; concurrent = 1&#34;有多少&#34;测试&#34;您创建的用户。然后点击shift + x,y,然后返回保存更改。
    • 注意:确保在每个用户上完成以确保并行性。
  8. 为您的Xcode项目创建UI测试方案。
    • 点击附近的方案下拉菜单,选择要在哪个设备上运行项目。
    • 选择&#34;新计划&#34;。
    • 在&#34; Target&#34;下拉菜单选择包含&#34; UITests&#34;在标题中。然后单击&#34;确定&#34;
    • 如上所述单击相同的方案下拉菜单,然后选择&#34;管理方案&#34;。
    • 确保选中该复选框以制作&#34; UITests&#34;计划&#34;共享&#34;。
    • 点击关闭。
    • 在终端类型git add .中,点击返回以确保包含方案文件。
    • 输入git commit -am "Added ui test scheme"并点击返回。
    • 输入git push并点击返回。
  9. 为您的项目创建一个gitlab-ci.yml文件。
    • 在您选择的文本编辑器中,在项目的根文件夹中创建一个gitlab-ci.yml文件。
    • 以下是我创建的示例项目的示例yml文件:
  10. &#13;
    &#13;
    before_script:
      - carthage update
    stages:
      - test
    iphone_4s_tests:
      stage: test
      script:
        - xcodebuild test -configuration Debug -project parallel.xcodeproj -scheme parallelUITests -destination 'platform=iOS Simulator,name=iPhone 4s' | xcpretty --simple
      tags:
        - iphone_4s
    iphone_5s_tests:
      stage: test
      script:
        - xcodebuild test -configuration Debug -project parallel.xcodeproj -scheme parallelUITests -destination 'platform=iOS Simulator,name=iPhone 5s' | xcpretty --simple
      tags:
        - iphone_5s
    iphone_6_tests:
      stage: test
      script:
        - xcodebuild test -configuration Debug -project parallel.xcodeproj -scheme parallelUITests -destination 'platform=iOS Simulator,name=iPhone 6' | xcpretty --simple
      tags:
        - iphone_6
    &#13;
    &#13;
    &#13;

    • 重要提示:每个标签应与&#34;测试&#34;上安装的每个跑步者上的标签相对应。用户。这里的关键是您的测试套件将在单个设备上运行
    • 在终端类型git add .gitlab-ci.yml的项目目录中,然后按Enter键。
    • 键入git commit -am "Added the .gitlab-ci.yml file to the project."然后返回。
    • 键入git push然后返回。

    BOOM!如果您已经正确地完成了所有工作,那么最终您已经实现了对多个iOS设备并行测试UI的最大梦想。当您导航到gitlab项目页面然后导航到&#34; Piplines&#34;时,您会注意到您的UI测试现在可以并行运行。 IMO这是完成所有UI测试的最便宜,最有效的方法。在您的测试套件在一台设备上完成一轮测试时,您可以 - 理论上 - 完成您希望测试的所有设备的UI测试。这种解决方案比试图购买几台设备并同时进行全部测试要便宜得多。一般来说,根据规格,单个mac可以一次运行10-15个设备,如果没有其他任何因素占用CPU的话。

答案 2 :(得分:1)

现在使用XCODE 9,您可以一起启动多个模拟器,也可以在多个设备上运行并行测试。

Please see this link for reference.

答案 3 :(得分:0)

使用多个模拟器并行运行UITests,请查看LinkedIn的这个惊人的开源库&gt; https://github.com/linkedin/bluepill

答案 4 :(得分:0)

您好!WWDC18“测试”环节有什么新变化

https://developer.apple.com/videos/play/wwdc2018/403/

  

听到有关代码覆盖率令人兴奋的改进的信息,包括如何在Xcode的覆盖率报告之上构建自己的自动化系统。了解如何利用Xcode 10中新增的分布式并行测试来极大地加快测试的执行速度。