iOS アプリのテスト チュートリアル: 手動と自動化

iOSアプリのテストとは何ですか?

iOSアプリのテスト iOS アプリケーションを実際の Apple デバイスでテストし、インストール時間、ユーザー インターフェイス、ユーザー エクスペリエンス、外観、動作、機能、ロード時間、パフォーマンス、アプリなどの特定のユーザー アクションに対して期待どおりに動作するかどうかを確認するテスト プロセスです。ストアの掲載情報、OSバージョンのサポートなど。

iOS アプリのテストを行う理由

iOSアプリのテスト iOS は 29 年 2007 月 XNUMX 日にリリースされた Apple のモバイル アプリケーション用プラットフォームであるため、必須です。 Android, Apple は、Apple 以外のハードウェアに iOS をインストールするライセンスを付与していません。 iOS および iOS アプリケーションは Apple デバイスにのみインストールできるため、iOS アプリは iOS バージョンおよび iOS デバイスと互換性がある必要があります。

iOSアプリのテスト

これは、開発者が iOS アプリケーションを作成するときによくある質問です。

iOSアプリのテスト

設計と実装にどれだけ時間を費やしても、間違いは避けられず、バグも発生します。 iOS アプリケーションには一般的なバグがいくつかあります。 以下の図に示すように。

iOSアプリのテスト

アプリケーションのクラッシュ

Apple のデバイスを使用するときに最もイライラする問題の 1 つは、アプリケーションの実行中に頻繁にクラッシュする可能性があることです。多くの場合、アプリにバグやメモリ リークが原因でアプリがクラッシュします。

アプリケーションの非互換性

iOS アプリケーションは現在の iOS バージョンでは問題なく動作しますが、iOS をアップグレードすると、非互換性の問題により動作しなくなる可能性があります。

セキュリティの脆弱性

iOS のセキュリティの脆弱性により、ハッカーが iOS デバイスを攻撃し、個人情報を盗むことが可能になります。これまでに、iPhone の重大なセキュリティ脆弱性がさまざまな iOS バージョンで発見されています。

メモリリーク

メモリ リークとは、プログラムが使用しなくなった、割り当てられたメモリのブロックです。 メモリ リークが発生すると、iOS アプリケーションがクラッシュします。
これらはバグなので、常に修正する必要があります。

iOS テスト マインドマップ

IOS テストのマインドマップ

上図に示すように、iOS テスト MindMap は、iOS でテストを実施する際にテスターが考慮すべきすべての項目を示します。

iOS アプリケーションのテスト チェックリスト

このチェックリストは、iOS モバイル アプリケーションの特性をテストするために特別に設計されています。 明らかに、これは一般的なアプリケーションの特性のみをテストし、その機能はテストしません。

  • アプリケーションのデバイスへのインストールにかかる時間を確認します。 アプリケーションが許容可能な時間内にインストールされていることを確認してください。
  • アプリケーションがインストールされたら、アプリケーションにアプリのアイコンと名前があるかどうかを確認します。 また、アイコンと名前の両方がアプリケーションの中心的な意図を反映した一目瞭然であることを確認してください。
  • アプリケーションを起動し、スプラッシュ画面が表示されるかどうかを確認します。
  • スプラッシュ画面のタイムアウトとホーム画面のロードにかかる時間を確認します。 アプリケーションのホーム画面は、許容可能な時間内にロードされる必要があります。 ホーム画面の読み込みに時間がかかるだけであれば、ユーザーがアプリケーション自体を終了したりアンインストールしたりする可能性が高くなります。 また、ホーム画面にコンテンツがどのように読み込まれるかを確認してください。
  • アプリケーションの主な機能はすぐにわかるはずです。 それ自体が物語るはずです。
  • アプリが横向きと縦向きの両方をサポートしているかどうかを確認します。 その場合は、アプリを両方の方向で確認してください。 アプリケーションのユーザー インターフェイスはそれに応じて設定される必要があります。
  • インターネットに接続していない場合は、アプリケーションを起動します。 アプリが設計/意図どおりに動作することを確認してください。 アプリケーションの起動時にクラッシュするか、空白の画面が表示される可能性があります。
  • アプリケーションが位置情報サービスを使用する場合は、位置情報の許可に関する警告が表示されるかどうかを確認します。この警告は、ユーザーに 1 回だけ表示される必要があります。
  • アプリケーションがプッシュ通知を送信する場合は、プッシュ通知の許可アラートが表示されているかどうかを確認します。このアラートも、ユーザーに 1 回だけ表示される必要があります。
  • アプリケーションを起動し、終了して再起動します。 アプリが設計/期待どおりに動作するかどうかを確認する
  • デバイスのホームボタンをタップしてアプリケーションを閉じ、再度アプリを開きます。 アプリが設計/期待どおりに動作するかどうかを確認します。
  • インストールしたら、アプリが iPhone の設定アプリにリストされているかどうかを確認します。
  • アプリケーションを公開したら、そのアプリケーションが「App Store」にあるかどうかを確認します。 アプリケーションにはサポートされる OS バージョンがあります。 したがって、サポートされている OS バージョンのデバイスの「App Store」でアプリケーションが見つかることを確認してください。 また、サポートされていない OS バージョンのデバイスの「App Store」にアプリケーションを掲載しないでください。
  • バッテリーの消耗を防ぐために、アプリケーションがバックグラウンドで実行されているときにスリープ モードに移行するかどうかを確認します。
  • アプリケーションのパフォーマンスが遅い場合、またはコンテンツがロードされている場合は、進行状況アイコン (「ロード中…」) が表示されているかどうかを、できれば特定のメッセージとともに確認してください。
  • デバイス検索バーでアプリケーション名を使用してアプリケーションを検索します。 アプリがリストにあるかどうかを確認する
  • 標準アクションを実行するボタンの外観がアプリ内で変更されていないかどうかを確認します (例: 更新、整理、ゴミ箱、返信、​​戻るなど)。
  • 標準ボタンが通常使用されている機能以外に使用されていないか確認してください。

iOS テスト戦略

以下の図は、いくつかの一般的な iOS テスト戦略を示しています。

IOS テスト戦略

自動テスト

自動テストは iOS テストの最大の利点です。 これにより、バグやパフォーマンスの問題を迅速に検出できます。 自動テストの利点は次のとおりです。

  • 自動テストは複数のデバイスで実行できるため、時間を節約できます
  • 自動テストは SDK を対象にすることができます。 異なる SDK バージョンでテストを実行できます
  • 自動テストによりテストの生産性が向上し、ソフトウェア開発コストが節約されます
  • iOS での自動テストをサポートするオープンソースのテスト フレームワークが多数あります

OCUnitによる単体テスト

オリジナルの iOS SDK がリリースされたとき、それは欠けていました 単体テスト 能力。 そこでAppleは、 OCUnit iOS SDK バージョン 2.2 の単体テスト ソリューション。

OCUnit は、Mac OS の C-Objective のテスト フレームワークです。 OCUnit フレームワークの最大の利点は、OCUnit フレームワークと緊密に統合されていることです。 Xcode 開発環境は以下の通りです。

OCUnitを使用した単体テスト

OCUnit の利点の一部を以下の図に示します。

OCUnitを使用した単体テスト

UIAutomation を使用した UI テスト

UIAutomation を使用した UI テスト

UIオートメーション   Javaスクリプト Apple Inc が提供するライブラリ。これを使用して、実際のデバイスおよび iOS シミュレータで自動テストを実行できます。 このフレームワークは iOS SDK4.0 に追加されました。 UI オートメーションを使用すると、シミュレーターだけでなく実機上でのアプリケーションのテストも自動化できます。

UIAutomation は次の利点をもたらします。

  • 労力を軽減 手動テスト
  • すべてのテストを実行するために使用するメモリの使用量を減らします
  • UI テスト手順を簡素化します (XNUMX つまたは XNUMX つのボタンを押すだけで、テスト スイート全体を実行できます)。

UIAutomationインストルメントは、以下の言語で書かれたスクリプトから動作します。 Javaスクリプト。対象の iOS アプリケーションでユーザー イベントをシミュレートします。

UIAutomationの短所と長所

メリット デメリット
1. ジェスチャーと回転の優れたサポート オープンソースではないため、開発者からのサポートが少ない
2. 唯一のシミュレーターではなく、デバイス上で UIAutomation テストを実行できます。 他のツールとうまく統合できない
3. によって開発された Javaスクリプトは、人気のあるプログラミング言語です。

UIAutomation を使用した UI テスト

上の図は、UIAutomation フレームワークのいくつかの一般的なクラスを表しています。

  • この UIA要素 class は、オートメーションのコンテキストにおけるすべてのユーザー インターフェイス要素のスーパー クラスです。
  • この UIATarget クラスは、テスト対象システムの高レベルのユーザー インターフェイス要素を表します。
  • この UIAロガー クラスは、取得機能に関するテストおよびエラー情報を提供します。
  • この UIAアクティビティビュークラスを使用すると、アプリ内のアクティビティ ビューへのアクセスと制御が可能になります。
  • この UIAアクションシート クラスを使用すると、アプリ内のアクション シートへのアクセスと制御が可能になります。
  • ユーザー イベントアクション
  • UISliderクラス
  • UIAButtonクラス
  • UIAKey クラス
  • UIAキーボードクラス

その他の自動テスト フレームワーク

  • : 自動化 受け入れテスト iPhone および iPad 用のフレームワーク
  • キフ : iOSです 統合テスト フレームワーク。 OS が視覚障害を持つユーザーに提供するアクセシビリティ属性を活用することで、iOS アプリを簡単に自動化できます。

手動テスト

探索的テスト

これは正式なテスト計画のないテストです。 探索的テストは低コストのテスト方法ですが、iOS アプリケーションの潜在的なバグを見逃す可能性があります。

探索的テストの短所と長所

メリット デメリット
1. Less 重大なバグを早期に検出するには、準備が必要です。 テスターの高度なスキルが必要
2. 必要ない テスト計画 バグ検出を高速化します。 テストのカバレッジが低い。 すべての要件がテストされることを保証するものではありません。
3. ほとんどのバグは、ある種の探索的テストによって早期に発見されます テストに関するドキュメントが不足している

ユーザーテスト

ユーザーテストは、iOS 上の手動テストの一種です。 このテストの目的は、より良いアプリを作成することです。 バグフリー アプリ。 以下の図は XNUMX 種類のユーザー テストを示しています

ユーザーテスト

コンセプトテスト

市場にリリースする前に、アプリケーションのアイデアに対するユーザーの反応を評価します。 iOSでのコンセプトテストの手順は以下の通りです。

コンセプトテスト

ユーザビリティテスト

ユーザビリティテスト iOS アプリケーションの使いやすさをテストします。 iOS テストでは、ユーザビリティ テストは次のようになります。 記録された 思い出したり、他の人と共有したりするために。

iOS でのユーザビリティ テストをサポートするツールがいくつかあります。

TryMyUI モバイル ユーザー向けアプリのテスト Android およびiOS。

Delight.io, このツールは、iOS アプリ上での実際のユーザー インタラクションをキャプチャできます。

ベータテスト

ベータテストは、 統合テスト ユーザーから最終的なフィードバックを得るために実際のデータを使用します。 ベータテスト用にアプリを配布するには、以下の手順に従う必要があります。

ベータテスト

前提条件: リリースの最終候補をベータ テストしている場合は、テスターに​​配布する前に必ずアプリを検証してください。

サービス経由でテスターを探す: テスターからデバイス ID を収集し、それらを メンバーセンター

アドホック配布の作成: アドホック配布により、テスターは必要なく自分のデバイス上でアプリを実行できます。 Xcode。このステップには 2 つのサブステップが含まれています

  • 配布証明書を作成する
  • アドホック プロビジョニング プロファイルの作成

テスターからフィードバックを求めます。 テスターはテストを実施し、バグレポートを送信します。 アプリがリリースされた後は、次のサイトからレポートを取得できます。 iTunes 接続します。

A / Bテスト

A / Bテスト 最も強力な方法の XNUMX つです iOS アプリの有効性を評価する。 それは使用しています ランダム化された実験 XNUMX つのデバイス A と B を使用します。

A / Bテスト

A/B テストには XNUMX つの主要なステップが含まれます

  • テストを構成する: iOS アプリの 2 つのバージョン (A と B) とテスト指標を用意
  • ホイール試乗: 上記の 2 つの iOS アプリ バージョンをデバイス上で同時にテストします。
  • 解析: リリースするより良いバージョンを測定して選択します

以下のツールは iOS での A/B テストをサポートしています。

  • 起こる: iOS と両方の A/B テスト Android。 iOS アプリに統合して、テスト プロセスをより迅速に行うことができます。

A/B テストのベスト プラクティス

  • 定義 ターゲット あなたのテストの。 目標がなければどんなテストも役に立ちません。
  • よく見る エンドユーザーがアプリを初めて使用する
  • ラン XNUMXつ アップデートごとにのみテストします。 テストを実施する際の時間を節約できます
  • モニター テストは慎重に行ってください。 テストを監視することで、テストからの経験を学ぶことができます。

iOS テストのベスト プラクティス

iOS アプリケーションのテストを計画する際に知っておくべきヒントをいくつか紹介します。

  1. アプリケーションをテストします。 実際のデバイス パフォーマンスについての現実を知るために
  2. 向上させる 従来のテスト方法では、iOS テストのすべてのテストをカバーするには不十分であるため、テスト方法
  3. 使い方 コンソールログ iOS アプリケーションをテストします。 これは iOS の機能であり、デバイス上のすべてのアプリケーションからの情報が含まれます。
  4. ドキュメント アプリケーションのバグ 内蔵スクリーンショート 指示。 開発者がバグがどのように発生するかを理解するのに役立ちます。
  5. クラッシュレポート アプリケーションをテストするときに便利なツールです。 クラッシュを検出し、詳細をログに記録できるため、バグを簡単に調査できます。

iOS テストに関する誤解

このセクションでは、iOS テストに関するいくつかのよく知られた通説と現実を検証します。

iOS でのアプリケーションのテストと Android 同じことです。

iOS Android は、Apple Inc と Google によって開発された XNUMX つのプラットフォームです。 それらは全く異なります。 テスト環境、テスト フレームワーク、プログラミング言語など。

iOSシミュレータ上でアプリケーションをテストするだけで十分です。

iOS シミュレータはアプリをテストするには十分ではありません。iOS シミュレータにはいくつかの制限があるためです。

  • ハードウェアの制限 (カメラ、マイク入力、センサー)
  • アプリの UI は、デバイス上で実行するよりも高速かつスムーズに実行されるように見える場合があります
  • APIの制限事項
  • 一部のフレームワークはサポートされていません (メディア プレーヤー、ストア キット、メッセージ UI など)

アプリストアには多くの機能があるため、誰もが私のアプリをダウンロードします

アプリケーションの機能が多ければ多いほど、より多くのバグが発生する可能性があります。 アプリケーションに多くの欠陥がある場合、ユーザーはアプリケーションをダウンロードしません。