WWDC18:代码覆盖率,XCTest和XCUITest的新增功能

在WWDC18上,有一个有关“测试中的新增功能”的会议,描述了代码覆盖率,XCTest和XCUITests中的新功能。 它由Honzaand Ethan提出。 本届会议包括以下内容

  • xccov的代码覆盖率
  • 从方案中选择测试
  • 随机检验
  • 并行测试
  • 并行测试技巧

幸运的是,我已经在以前的博客文章中介绍了本次演讲中介绍的大多数内容。

  • 由于xccov已随Xcode 9.3一起启动,因此我在个人博客和Medium上都写了一篇详细的博客文章,内容涉及xccov的所有功能。
  • Xcode 10宣布了Xcode 10的并行测试功能,我已经在行动博客文章中介绍了Xcode 10中的大多数并行测试,该文章也发表在了Medium上。

您随时可以随时在会话中观看实时演示。 但是,我们将简要介绍本届会议上提到的功能。

代码覆盖率

苹果已经发布了带有Xcode 9.3的新命令行工具xccov,用于检查Xcode代码覆盖率报告的内容。 我们可以通过编辑方案并在“测试”操作中选中“代码覆盖率”框来明确启用该方案的代码覆盖率。

使用代码覆盖率数据运行测试后,Xcode会将代码覆盖率报告生成到默认的派生数据目录中,该目录位于〜/ Library / Developer / Xcode / DerivedData中,您将在Logs / Test目录中看到生成的代码覆盖率报告。 我们将看到扩展名为.xccovreport和.xccovarchive的代码。 在Logs / Test目录中,有覆盖率报告(扩展名为.xccovreport)和覆盖率存档(扩展名为.xccovarchive)。 按照此实用程序的手册页,“覆盖率报告包含每个目标,源文件以及具有覆盖率信息的功能/方法的行覆盖率百分比。 Coverage存档包含报告中每个文件的原始执行计数”。 目前,我们可以使用xccov实现以下目的

  • 从终端查看代码覆盖率报告
  • 从代码覆盖率报告中吐出JSON。
  • 列出所有已生成代码覆盖率的文件
  • 查看一个特定文件的代码覆盖率报告。

观看如何查看实际的代码覆盖率。

这减轻了使用第三方工具以美观的格式显示Xcode代码覆盖率报告的麻烦。 我们也可以跳过不需要的目标的代码覆盖范围。

XCTest方案选项

使用Xcode 10,我们可以从方案中选择特定的测试,将测试随机化并并行执行测试。 我们可以通过更新方案来启用并行测试,并且在“测试”操作中,可以针对测试包选择“选项”以选择并行化选项。 我们也可以选择位置。

通过创建仿真器的克隆,测试可以扩展到并行化单个仿真器中的测试套件。 Xcode在后台创建了不同的运行程序流程,每个流程都分配了特定的测试。

可以使用xcodebuild工具从命令行运行XCTest。 使用Xcode 10,我们还有其他一些选项可以启用并行测试,这些是

  • -maximum-concurrent-test-device-destinations NUMBER:要同时测试的最大设备目标数
  • -maximum-concurrent-test-simulator-destinations NUMBER:要同时测试的模拟器目标的最大数量
  • -parallel-testing-enabled YES | NO:覆盖方案中的每个目标设置
  • -parallel-testing-worker-count NUMBER:并行测试期间将产生的测试运行程序的确切数量
  • -maximum-parallel-testing-workers NUMBER:并行测试期间将产生的最大测试运行程序数

这些选项使我们能够像在Xcode 10中一样并行执行XCTests。

并行测试技巧

在会议结束时,分享了三个很棒的技巧

  • 保持测试类较小,如果测试类过多而又过多,则将其分为2个或更多类。 这样可以避免一类在并行测试中占主导的情况
  • 将性能测试放在单独的捆绑软件中,切勿并行运行
  • 找到正确的并行化测试

结论

XCTest和XCUITests的并行测试在今年发生了一些惊人的改进。 在“测试技巧和窍门”上还将举行另外一场会议,我们将获得更多有关如何更好地执行测试的见解。 我将发表另一篇文章。 敬请关注。

像XCBlog的 XCTEQ 发布的帖子一样 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 Github 搜索我们的 服务 ,开源项目, 或者在 Twitter Facebook Youtube LinkedIn 上关注我们 下载我们的 XCBlog iOS应用程序以离线阅读博客。

X CTEQ 一家专门从事基于Mobile DevOps,CI / CD,Mobile,AI / ML的测试自动化Checkout XCTEQ产品和服务的公司, 网址 http://www.xcteq.co.uk 或写信给我们info@xcteq.co。英国..