Тестирование StoreKit в Xcode 12 и iOS 14

Привет, Хабр!

Меня зовут Сэм, я разработчик в сервисе Qonversion. В этой статье описаны новые возможности для тестирования подписок, представленные Apple во время сессии Introducing StoreKit Testing in Xcode на WWDC 2020.

Рынок подписок в мобильных приложениях быстро растет, но набор инструментов тестирования до iOS 14 был скудными. Вдобавок всё усложнялось нестабильностью песочницы Apple.
Нововведения в Xcode 12 и iOS 14 сильно меняют ситуацию.

image


Что нового


  1. StoreKit Configuration File — позволяет настраивать продукты для тестирования прямо в Xcode без необходимости создавать их в App Store Connect;
  2. StoreKit Transaction Manager — менеджер транзакций в Xcode, позволяет видеть все локальные покупки и изменять статус по ним;
  3. StoreKitTest Framework — новый фреймворк для тестов в Xcode, даёт полный контроль над процессом тестирования;
  4. Управление Sandbox подписками на девайсе.


StoreKit Configuration File

Конфигурационный файл для StoreKit позволяет настроить локальное окружение разработчика для тестирования покупок без необходимости создавать подписки и инапы в App Store Connect.

image

Доступно три варианта продуктов:


  • Consumable In-App Purchase (многоразовые покупки, например, монетки в играх)
  • Non-Consumable In-App Purchase (покупается один раз, например, пожизненный доступ к приложению)
  • Auto-Renewable Subscription (авто-возобновляемая подписка)

Для тестирования авто-возобновляемых продуктов появилась возможность сократить время подписки с помощью Time Rate конфигурации:

image


StoreKit Transaction Manager

image

Ещё один замечательный инструмент для локальной разработки, позволяющий удобно дебажить покупки.

StoreKit Transaction Manager позволяет:


  • Отменять подписку
  • Совершать рефанд
  • Сбросить подписку
  • Установить состояние billing retry

Для доступа к StoreKit Transaction Manager необходимо выбрать ранее созданный конфигурационный файл и нажать на пиктограмму в Debugging Area.


StoreKitTest Framework

image

Новый фреймворк StoreKitTest работает в связке с конфигурационным файлом StoreKit и позволяет писать Unit и UI тесты. Таким образом можно автоматизировать процесс тестирования кода, который реализовывает бизнес-логику работы с покупками. Управление состояниями происходит с помощью объекта SKTestSession:

Что можно тестировать:


  • Успешное совершение покупки
  • Ошибки покупки
  • Отмененный процесс
  • Внешние транзакции
  • Продление подписки


Управление Sandbox подписками

Sandbox подписки можно отменить на девайсе, а также произвести переход на другую подписку в рамках Subscription Group. Также появилась специальная настройка Reset Eligibility, которая позволяет сбросить introductory offer. Последнее избавляет от необходимости каждый раз создавать новый Sandbox Account для тестирования.

image


Заключение

Новые продукты позволят разработчикам гибко управлять окружением и транзакциями, облегчит настройку авто- и ручных тестов, что ускорит доставку приложений в стор и сделает работу с подписками надёжнее и проще.

На моей памяти это самое масштабное обновление инструментов дебаггинга в Xcode для StoreKit и жизнь разработчиков благодаря нему должна стать значительно легче.

© Habrahabr.ru