ドキュメント

開発の全段階におけるXcodeとSandboxによるテスト

開発の全段階を通してコードをテストすることで、App内課金の実装をテストします。

概要

XcodeとSandboxでAppleが提供するテスト環境を使い、StoreKitフレームワークを使ってApp内課金の実装をテストします。包括的なテストには、次のようなメリットがあります。

  • シームレスな購入フローを実現し、Appで優れたユーザー体験を提供する。

  • 購入、復元、サブスクリプションオファーなど、すべてのシナリオに対応できる完全なロジックを実装する。

  • App StoreにAppを公開した後の本番環境で、Appの購入機能が正しく動作することを検証する。

初期開発からベータテストの段階にわたってApp内課金をテストするには、以下のツールが必要です。

XcodeのStoreKitテスト

初期開発、継続的インテグレーション、デバッグに使います。

Sandbox

App Store Connectで設定したデータを使ったシナリオのテストに使います。Sandboxの利用を始めるには、「Sandboxテスターアカウントの作成」を参照してください。

TestFlight

内部および外部のテスターによるベータテストの管理に使います。詳しくは、「TestFlightでベータ版テストが簡単に」を参照してください。

必要なテストシナリオに対応し、テストしたい設定に基づいたツールを選択します。

開発の初期段階では、App Store ConnectでApp内課金を構成する準備ができていないかもしれません。XcodeのStoreKitテストでは情報をローカルで構成できるため、Sandbox Apple IDを作成する前にStoreKitのトランザクションをテストできます。ネットワーク接続も必要ありません。Xcodeのシミュレータまたは実際のデバイスでAppをテストできます。

App Store ConnectでApp内課金を設定した後、Sandboxを使用して、本番環境のAppで使用するプロダクト情報と同じ情報を使ってテストします。Sandboxのテストでは、トランザクションをクライアントからサーバまで、エンドツーエンドでテストできます。レシート検証やApp Storeサーバ通知など、Appに必要なサーバ間の機能もテストできます。

TestFlightでは、チームメンバーや外部テスターからのフィードバックを取得したり、Sandbox環境を使ってApp内課金をテストしたりできます。Sandboxでのトランザクションでは、購入操作による支払いは発生しません。次の表は、必要な環境設定、機能、請求の有無をツールごとに比較したものです。

ツール

App Store Connectの設定が必要

App Storeによって署名されたAppレシートを提供

購入トランザクションのテスト時にユーザーへの請求が発生

XcodeのStoreKitテスト

×

×(Xcodeによる署名)

×

Sandbox

×

TestFlight(Sandboxを使用)

×

テスト環境の制御

テストシナリオを設定して実行するには、多くの場合、テスト環境の制御が必要です。たとえば、同じテストを複数回実行するためにテストアカウントのリセットが必要な場合や、テストの条件に影響するApp外でのユーザー操作の再現が必要な場合があります。次の表は、各ツールでのテスト環境の制御機能を示したものです。

テストシナリオ

Sandbox

XcodeのStoreKitテスト

異なるストアフロントで価格帯とロケールが変わることをテストする

限定(価格帯を含まない)

購入履歴を消去する

×

サブスクリプションのアップグレード、ダウングレード、クロスグレード、および自動更新のキャンセルをテストする

お試しオファーの対象資格をリセットする

テスト用の強制的なStoreKitエラーを発生させる

×

サブスクリプション更新のテスト用に時間経過を速める/遅くする

×

一般的なStoreKitシナリオのテスト

App内課金を提供するすべてのAppで、購入の復元、ユーザーへのApp内課金の表示、基本的なトランザクションの処理をサポートする必要があります。次の表は、一般的なテストシナリオと、それらがSandboxまたはXcodeでテスト可能かどうかを示します。

テストシナリオ

Sandbox

XcodeのStoreKitテスト

購入を復元する

finishTransaction(_:)(英語)を呼び出す

消耗型または非消耗型のApp内課金を購入する

繰り返しテストするために非消耗型のApp内課金を再購入する

×

自動更新サブスクリプションを購入する

非自動更新サブスクリプションを購入する

×

App内課金を返金する

×

ユーザーがApp外で操作を完了する必要がある場合の購入の中断をテストする

支払い承認が拒否されたことによる購入の失敗をテストする

×

App Store Connectから構成済みのApp内課金を取得する

×(StoreKit構成ファイルのデータが返される)

サブスクリプションと「承認と購入のリクエスト」のテスト

Appで提供するApp内課金によっては、自動更新サブスクリプション、お試しオファー、プロモーションオファー、「承認と購入のリクエスト」に関連するテストシナリオが必要な場合があります。次の表は、それらのテストシナリオと、それらがSandboxまたはXcodeでテスト可能かどうかを示します。

テストシナリオ

Sandbox

XcodeのStoreKitテスト

「承認と購入のリクエスト」トランザクションを開始し、承認待ち状態にする

「承認と購入のリクエスト」トランザクションを承認または却下して承認待ち状態を解除する

×

自動更新サブスクリプションのお試しオファー利用する

自動更新サブスクリプションのプロモーションオファー利用する

サブスクリプションの更新を処理する

サブスクリプションのキャンセルまたは返金を処理する

×

ユーザーによるサブスクリプションのキャンセルおよび自動更新の無効化に応答する

期限切れになったサブスクリプションに応答する

サブスクリプションのアップグレードまたはダウングレードを処理する

同じ期間または異なる期間でのサブスクリプションのクロスグレードを処理する

詳しくは、「承認と購入のリクエスト」に関する情報を参照してください。

関連項目

App内課金のテスト