WWDC Quick Look 💓 By SwiftGGTeam
Meet TestFlight on Mac

Meet TestFlight on Mac

观看原视频

Highlight

Apple 把 TestFlight 带到 macOS,让开发者可以向 Mac 测试者分发 beta 构建、收集截图反馈和崩溃日志,并用内部测试分组与 Xcode Cloud 管理构建分发。

核心内容

做 Mac 应用 beta 测试,以前很容易变成手工活。开发者要把构建打包,发给测试者,提醒他们安装新版。测试者遇到问题后,还要自己描述现象、找到日志、把截图发回来。

这个流程在 iOS 上早就被 TestFlight 接管。测试者接受邀请,安装 beta 应用,应用更新自动到达。崩溃和截图反馈会回到 App Store Connect(应用商店连接)。

WWDC 2021 的变化是:TestFlight 来到 Mac。它支持原生 Mac app,也支持运行在 Apple Silicon Mac 上的 iOS app。测试者从 Mac App Store 下载 TestFlight,就能安装 beta 应用、打开自动更新、提交反馈。

这解决了 Mac 测试的三个痛点。第一,构建分发统一走 App Store Connect。第二,测试者可以通过截图直接反馈问题。第三,崩溃日志自动收集,并出现在 App Store Connect 和 Xcode Organizer 中。

Apple 还补上了团队协作场景。内部测试现在可以创建多个组。开发组可以自动收到所有构建,QA 组可以只拿到稳定构建。Xcode Cloud 生成的构建会按 workflow(工作流)和 Git 分支组织,测试者更容易找到自己要测的版本。

详细内容

Mac 上的 TestFlight 测试流程

00:26)TestFlight 的核心工作是分发 beta 构建和收集反馈。2021 年之前,它已经支持 iOS 和 tvOS。现在同一套能力扩展到 macOS。

TestFlight on Mac
- install beta apps
- setup automatic updates
- share feedback
- support native Mac apps
- support iOS apps on Apple Silicon Mac

关键点:

  • install beta apps:测试者接受邮件邀请或公开链接后,可以在 Mac 上安装 beta 应用。
  • setup automatic updates:测试者可以开启自动更新,后续构建会自动安装。
  • share feedback:测试者可以提交问题和改进建议。
  • support native Mac apps:原生 Mac 应用可以通过 TestFlight 分发。
  • support iOS apps on Apple Silicon Mac:运行在 Apple Silicon Mac 上的 iOS 应用也能进入测试流程。

01:07)测试者加入测试有两种入口:邮件邀请和公开链接。接受邀请后,他们成为这个 app 的测试者,可以查看按版本分组的不同构建,再选择一个构建安装。

Tester invite flow
1. Developer sends an email invite or shares a public link
2. Tester accepts the invite
3. Tester browses builds grouped by versions
4. Tester clicks Install
5. Tester launches the beta app from TestFlight, Dock, Launchpad, or Finder

关键点:

  • 第 1 步:开发者通过邮件或公开链接招募测试者。
  • 第 2 步:测试者接受邀请后,才会加入该应用的 TestFlight 测试。
  • 第 3 步:构建按版本分组,测试者可以选择具体版本。
  • 第 4 步:安装动作发生在 Mac 上的 TestFlight 中。
  • 第 5 步:安装后的 beta 应用可以从 TestFlight、Dock、Launchpad 和 Finder 启动。

01:42)Mac 会把 beta 应用标出来。Dock 和 Launchpad 中,应用名称旁边会显示黄色圆点。Finder 中会显示为 Beta Application(测试应用)。

Beta app indicators on Mac
- Dock: yellow dot next to the app name
- Launchpad: yellow dot next to the app name
- Finder: Beta Application

关键点:

  • Dock:用户启动应用时能看到测试版本标记。
  • Launchpad:应用列表中也会显示同样的黄色圆点。
  • Finder:文件层面显示 Beta Application,避免测试版本和正式版本混淆。

反馈和崩溃日志回到 App Store Connect

02:09)测试者遇到问题时,可以直接从应用里提交反馈。流程从截图开始,附加截图,填写说明,然后提交。

Screenshot feedback flow
1. Tester takes a screenshot
2. Tester attaches the screenshot
3. Tester adds comments to describe the issue
4. Tester submits feedback
5. Developer views it in App Store Connect > Screenshot Feedback

关键点:

  • 第 1 步:截图把问题现场保存下来。
  • 第 2 步:截图作为反馈附件提交。
  • 第 3 步:评论用于补充复现路径或期望行为。
  • 第 4 步:反馈从测试者设备直接提交。
  • 第 5 步:开发者在 App Store Connect 的 Screenshot Feedback 区域查看。

02:38)如果 beta 应用崩溃,TestFlight 会自动捕获 crash logs(崩溃日志),并弹出对话框让测试者补充评论。开发者可以在 App Store Connect 的 crashes feedback 区域下载日志,也可以在 Xcode Organizer 中查看。

Crash feedback flow
1. Beta app crashes
2. TestFlight automatically captures crash logs
3. Tester enters additional comments
4. Developer downloads crash logs in App Store Connect
5. Developer views the feedback in Xcode Organizer

关键点:

  • 第 1 步:流程由 beta 应用崩溃触发。
  • 第 2 步:TestFlight 自动收集崩溃日志。
  • 第 3 步:测试者可以补充崩溃前做了什么。
  • 第 4 步:App Store Connect 提供日志下载。
  • 第 5 步:Xcode Organizer 也能查看这些反馈。

原生 Mac app 的分发条件

03:22)原生 Mac app 通过 TestFlight 分发时,需要 provisioning profile(描述文件)。如果项目使用 Xcode 的 Automatically manage signing(自动管理签名),Xcode 会创建并包含描述文件。如果项目手动管理签名,开发者要显式添加描述文件。

Native Mac app signing for TestFlight
- Xcode Automatically manage signing
  - Xcode creates and includes the provisioning profile
- Manual signing
  - Developer adds the provisioning profile explicitly
  - Creation and upload are documented in the Developer portal

关键点:

  • Xcode Automatically manage signing:自动签名路径由 Xcode 处理描述文件。
  • Xcode creates and includes the provisioning profile:上传构建时,所需描述文件已经包含在构建里。
  • Manual signing:手动签名项目要自己添加描述文件。
  • Developer portal:手动创建和上传描述文件的流程在 Developer portal 中说明。

03:53)带描述文件上传后,构建会显示在 App Store Connect 的 macOS 区域。开发者可以创建测试组,分发构建,并查看每个构建的测试数据。

App Store Connect metrics for a macOS TestFlight build
- invited testers
- installations on devices
- sessions in the last seven days
- crashes
- feedback count

关键点:

  • invited testers:显示被邀请的测试者数量。
  • installations on devices:显示设备上的安装数量。
  • sessions in the last seven days:显示最近七天会话数。
  • crashes:显示崩溃数量。
  • feedback count:显示测试者反馈数量。

04:22)查看崩溃或截图反馈时,开发者可以按平台选择 macOS,再继续按 Mac 设备或 macOS 版本筛选。

Feedback filters
- platform: macOS
- device: a specific Mac device
- OS version: a specific macOS version

关键点:

  • platform: macOS:把 Mac 反馈从其他平台中过滤出来。
  • device:定位某个 Mac 机型上的问题。
  • OS version:定位某个 macOS 版本上的问题。

iOS app 在 Apple Silicon Mac 上的 TestFlight 控制

04:54)iPhone 和 iPad 应用可以运行在 Apple Silicon Mac 上。TestFlight 允许开发者按 tester group(测试组)控制这些 iOS 构建是否对 Mac 可用。

Tester group setting
- enabled: iOS builds in this group are available to TestFlight on Apple Silicon Macs
- disabled: iOS builds from this group stop being available on Mac

关键点:

  • enabled:这个组里的 iOS 构建会出现在 Apple Silicon Mac 的 TestFlight 中。
  • disabled:这个组里的 iOS 构建不会继续对 Mac 可用。
  • Tester group:控制粒度落在测试组级别,范围小于整个 app。

05:22)iOS 构建仍按当前方式显示,但统计数字会包含 Apple Silicon Mac。崩溃和截图反馈在 App Store Connect 中仍归在 iOS 平台下,并包含从 Apple Silicon Mac 提交的数据。

iOS build data with Apple Silicon Macs
- build counts include Apple Silicon Macs
- crashes appear under platform iOS
- screenshot feedback appears under platform iOS
- feedback submitted from Apple Silicon Macs is included

关键点:

  • build counts:iOS 构建的数量统计会纳入 Apple Silicon Mac。
  • crashes:崩溃反馈在 iOS 平台下查看。
  • screenshot feedback:截图反馈也在 iOS 平台下查看。
  • Apple Silicon Macs:Mac 提交的数据会进入同一套反馈流。

内部测试组变成多组管理

05:52)内部测试以前适合 App Store Connect 团队快速试用。2021 年的改进是多个 internal groups(内部组)。每个内部组可以独立配置构建分发和反馈收集。

Internal testing improvements
- create multiple internal groups
- configure build distribution per internal group
- configure feedback collection per internal group
- applies to all supported platforms

关键点:

  • create multiple internal groups:内部测试可以按团队拆分。
  • build distribution:不同组可以拿到不同构建。
  • feedback collection:不同组可以独立开启或关闭反馈。
  • all supported platforms:这项改进适用于所有 TestFlight 支持的平台。

06:20)Apple 给出的例子是 Development Team 和 QA Team。开发组需要访问开发周期里的所有构建,QA 组只需要访问特定稳定构建。

Internal group example
- Development Team
  - automatic distribution enabled
  - all current and future builds are available
- QA Team
  - automatic distribution disabled
  - specific builds are manually added

关键点:

  • Development Team:开发组开启自动分发,当前和未来构建都会进入这个组。
  • automatic distribution enabled:适合需要持续跟进最新构建的人。
  • QA Team:QA 组关闭自动分发,只手动添加特定构建。
  • specific builds:适合只测试稳定候选版本的流程。

07:02)设置步骤发生在 App Store Connect。开发者点击 Internal Testing 旁边的加号创建组,命名后选择是否启用 automatic distribution。组创建后,可以手动添加构建和测试者。

Create internal groups in App Store Connect
1. Click the plus button next to Internal Testing
2. Give the internal group a name
3. Choose Enable automatic distribution for the Dev Team
4. Uncheck Enable automatic distribution for the QA Team
5. Add specific builds to the QA Team
6. Add testers to each group
7. Enable or disable feedback per group

关键点:

  • 第 1 步:入口在 Internal Testing 旁边。
  • 第 2 步:每个内部组都有自己的名称。
  • 第 3 步:开发组启用自动分发。
  • 第 4 步:QA 组关闭自动分发。
  • 第 5 步:QA 组通过加号手动选择构建。
  • 第 6 步:每个组手动选择对应测试者。
  • 第 7 步:反馈收集可以按组开关。

07:52)如果团队使用 App Store Connect API,可以通过 BetaGroups Resource 管理不同配置的内部组。Apple 在演讲中只点名了资源名称,没有给出具体请求路径或字段。

App Store Connect API resource
BetaGroups Resource
- manages internal groups
- supports different group configurations

关键点:

  • BetaGroups Resource:这是演讲明确提到的 API 资源。
  • manages internal groups:可以通过 API 管理内部组。
  • different group configurations:可以处理不同组配置。
  • 演讲没有展示 API 端点、请求体或字段名,实际接入应以 App Store Connect API 文档为准。

Xcode Cloud 构建进入 TestFlight

08:13)Xcode Cloud(Xcode 云)在同一年推出,并和 TestFlight 集成。它可以自动构建、测试和分发应用,构建完成后通过 TestFlight 分发到指定 beta groups(测试组)。

Xcode Cloud + TestFlight
1. Xcode Cloud builds the app
2. Xcode Cloud tests the app
3. Xcode Cloud distributes builds through TestFlight
4. TestFlight sends builds to specific beta groups

关键点:

  • 第 1 步:构建由 Xcode Cloud 执行。
  • 第 2 步:测试也在 Xcode Cloud 流程中运行。
  • 第 3 步:分发通过 TestFlight 完成。
  • 第 4 步:目标测试组可以预先指定。

09:04)App Store Connect 里新增 Build Groups(构建组)视图。构建按 Xcode Cloud workflow 和 Git branch(Git 分支)分组。内部测试者在 TestFlight 中也能按熟悉的分支名和 workflow 找构建。

Build Groups view
- grouped by Xcode Cloud workflow
- grouped by Git branch
- supported in the App Store Connect app on iOS
- visible to internal testers on TestFlight
- feedback can be filtered by a specific Build Group

关键点:

  • Xcode Cloud workflow:构建按工作流组织。
  • Git branch:构建按分支组织。
  • App Store Connect app on iOS:iOS 版 App Store Connect 也支持 Build Groups。
  • internal testers on TestFlight:内部测试者可以用这些分组找构建。
  • feedback:反馈区可以按特定 Build Group 筛选。

核心启发

  1. 做什么:给 Mac 应用接入 TestFlight beta 测试。 为什么值得做:TestFlight on Mac 支持安装 beta 应用、自动更新、截图反馈和崩溃日志收集,替代手动发包。 怎么开始:在 Xcode 中启用 Automatically manage signing,上传带 provisioning profile 的 macOS 构建到 App Store Connect,再创建 TestFlight 测试组。

  2. 做什么:为开发组和 QA 组拆分内部测试流程。 为什么值得做:内部测试支持多个组,每个组可以独立配置构建分发和反馈收集。开发组可以自动拿到所有构建,QA 组只测试稳定构建。 怎么开始:在 App Store Connect 的 Internal Testing 旁创建两个内部组,给开发组启用 automatic distribution,给 QA 组手动添加构建。

  3. 做什么:让 iOS 应用在 Apple Silicon Mac 上做定向 beta 测试。 为什么值得做:TestFlight 可以按测试组控制 iOS 构建是否在 Apple Silicon Mac 上可用,适合先让小范围用户验证 Mac 体验。 怎么开始:进入对应 tester group,启用 iOS builds on Apple Silicon Macs 的可用性设置,再查看 iOS 平台下的崩溃和截图反馈。

  4. 做什么:用 Xcode Cloud 自动把每次构建分发到 TestFlight。 为什么值得做:Xcode Cloud 可以自动构建、测试并通过 TestFlight 分发到指定 beta groups,减少上传和分发的手工步骤。 怎么开始:创建 Xcode Cloud workflow,关联 App Store Connect,把分发目标设置为指定 TestFlight 测试组。

  5. 做什么:按 Git 分支追踪测试反馈。 为什么值得做:Build Groups 会按 Xcode Cloud workflow 和 Git branch 组织构建,反馈区可以按特定 Build Group 筛选。 怎么开始:让不同开发线使用清晰的分支名和 workflow 名,在 App Store Connect 的 Feedback 区域按 Build Group 过滤问题。

关联 Session

评论

GitHub Issues · utterances