iOSアプリテストチュートリアル

⚡ スマートサマリー

iOSアプリテストは、アプリケーションがAppleデバイス上で正しくインストールされ、動作し、適切に機能することを検証します。手動によるテスト手法と、XCTestやXCUITestといった自動化フレームワークを組み合わせることで、クラッシュ、互換性の問題、メモリリークなどを早期に検出します。

  • ???? Foundation: iOSはApple製ハードウェアでのみ動作するため、すべてのアプリはサポートされているiOSバージョンとデバイスで検証される必要があります。
  • チェックリスト: 一般的なチェック項目には、インストール、起動時間、画面の向き、権限、およびApp Storeでの可視性が含まれます。
  • 🤖 オートメーション: XCTestとXCUITestは、非推奨となったOCUnitおよびUIAutomationフレームワークに代わる、単体テストおよびUIテスト用のツールです。
  • 🧪 手動による方法: 探索的テスト、ユーザビリティテスト、コンセプトテスト、ベータテスト、A/Bテストは、実際のユーザーからのフィードバックを収集するものです。
  • 🚀 影響: 実機テストとTestFlightによるベータ版配信により、App Storeでのリリース前に安定したパフォーマンスを実現します。

iOSアプリのテスト - 手動テストと自動化テスト

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

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

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

iOSアプリのテスト iOSはAppleのモバイルアプリケーションプラットフォームであり、2007年6月29日に初めてリリースされたため、iOSが必要です。 AndroidAppleは、Apple以外のハードウェアへのiOSのインストールを許可していません。iOSおよびiOSアプリケーションはAppleデバイスにのみインストールできます。したがって、iOSアプリは、ユーザーが所有するiOSバージョンおよびiOSデバイスと互換性がある必要があります。

iOSアプリを実行するAppleデバイス

下の図は、iOSアプリケーションを作成する際に開発者が直面する一般的な質問を示しています。

iOSアプリ開発におけるよくある質問

設計や実装にどれだけ時間をかけても、ミスは避けられず、バグは必ず発生します。下の図は、iOSアプリケーションでよく見られるバグの例を示しています。

iOSアプリケーションでよくあるバグ

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

Apple製品を使用する際に最も厄介な問題の一つは、アプリケーションが実行中に頻繁にクラッシュすることです。多くの場合、アプリのクラッシュはコードのバグやメモリリークが原因です。

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

お使いのiOSアプリケーションは現在のiOSバージョンでは問題なく動作するかもしれませんが、iOSがアップグレードされると、互換性の問題により動作しなくなる可能性があります。

セキュリティの脆弱性

iOSのセキュリティ脆弱性により、ハッカーがiOSデバイスを攻撃し、個人情報を盗み出すことが可能になります。長年にわたり、様々なiOSバージョンで深刻なiPhoneのセキュリティ脆弱性が発見されてきました。

メモリリーク

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

iOS テスト マインドマップ

iOSテストに関する検討事項のマインドマップ

上記の図に示すように、iOS テスト マインドマップには、iOSのテストを実施する際にテスターが考慮すべきすべての項目が表示されます。

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

このチェックリストは、iOSモバイルアプリケーションの特性をテストするために特別に設計されています。当然ながら、テスト対象は一般的なアプリケーション特性のみであり、アプリの機能性はテスト対象外です。

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

iOS テスト戦略

チェックすべき項目がわかったら、次はそれをどのようにテストするかです。下の図は、iOSのテスト戦略の一般的なタイプをいくつか示しています。

iOSテスト戦略の一般的な種類

自動テスト

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

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

OCUnitによる単体テスト

オリジナルの iOS SDK がリリースされたとき、それは欠けていました 単体テスト 機能。そこでアップルは OCUnit iOS SDKバージョン2.2に単体テストソリューションを組み込む。

OCUnitはMac(現在は)のObjective-Cのテストフレームワークでした。 macOS) OCUnitフレームワークの最大の利点は、 Xcode 開発環境は以下のとおりです。

注意: OCUnit (SenTestingKit) は非推奨です。 Xcode 5、アップルの XCTest フレームワークが標準として取って代わりました。下記の XCTest のセクションを参照してください。ここに掲載されているスクリーンショットは古いものです。 Xcode バージョン。

OCUnitの統合 Xcode 環境

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

OCUnitによる単体テストの利点

UIAutomation を使用した UI テスト

UIAutomation を使用した UI テスト

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

注意: AppleはUIオートメーションを廃止しました Xcode バージョン8(2016年)以降は削除されています。新しいUIテストプロジェクトにはXCUITestを使用してください。以下のクラスとスクリーンショットは、古いツールチェーンに基づいています。

UIオートメーションは、次のようなメリットをもたらしました。

  • 労力の削減 手動テスト
  • すべてのテストを実行するのに必要な労力が少なくて済みました。
  • UIテストの手順を簡素化しました(ボタンをいくつか押すだけで、テストスイート全体を実行できます)。

UIAutomation インストゥルメントは、 Javaスクリプト。対象となるiOSアプリケーション上でユーザー操作をシミュレートする。

UIオートメーションのデメリットとメリット

メリット デメリット
1. ジェスチャーと回転の優れたサポート オープンソースではないため、開発者からのサポートが少ない
2. シミュレーターだけでなく、実機上でもUIAutomationテストを実行できます。 他のツールとうまく統合できない
3. で開発 JavaScriptは、人気のプログラミング言語です。

UIAutomationフレームワークの共通クラス

上記の図は、UIAutomationフレームワークにおける一般的なクラスの一部を示しています。

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

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

  • : 自動化 受け入れテスト iPhoneおよびiPad向けフレームワーク(現在は積極的にメンテナンスされていません)
  • KIF: iOSです 統合テスト フレームワーク。 OS が視覚障害を持つユーザーに提供するアクセシビリティ属性を活用することで、iOS アプリを簡単に自動化できます。
  • Appium: 人気のオープンソース、 クロスプラットフォームの AppleのXCUITestドライバを介してiOSアプリを自動化するフレームワーク

XCTestとXCUITest:Appleの最新テストフレームワーク

OCUnitとUIAutomationは重要な歴史ですが、どちらも現在は廃止されています。AppleはOCUnitを XCTest in Xcode 5 (2013) および非推奨の UIAutomation Xcode 8 (2016) 賛成 XCUITestXCTest の UI テスト コンポーネントです。これらは、Apple が現在のすべてのバージョンで提供およびサポートしているテスト フレームワークです。 Xcode.

XCTest では、ユニットテストを次のように記述します。 Swift またはObjective-Cから実行します Xcode テストナビゲーター、 xcodebuild コマンドライン、シミュレーター、または実機上でテストを実行できます。XCUITestはアクセシビリティレイヤーを通してアプリを操作するため、UIテストは実際のユーザーとほぼ同じように動作します。

レガシーフレームワーク 現代の代替品 何が変わった
OCUnit(SenTestingKit) XCTest 同じ単体テストの概念が、今ではあらゆるものに組み込まれています Xcode プロジェクトテンプレート
UIオートメーション(Javaスクリプト) XCUITest UIテストは Swift またはObjective-Cの代わりに Javaスクリプト

💡 ヒント: クロスプラットフォームツールなど Appium 内部的にはXCUITestを使用してiOS開発を自動化するため、これらのスキルは直接応用できます。

手動テスト

自動化はスピードアップにつながるが、以下の手動手法は、スクリプトでは提供できない人間の判断力を加えることができる。

探索的テスト

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

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

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

ユーザーテスト

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

4種類のユーザーテスト

コンセプトテスト

アプリケーションのアイデアを市場に投入する前に、ユーザーの反応を評価しましょう。iOSにおけるコンセプトテストの手順は、下図に示されています。

iOSにおけるコンセプトテスト手順

ユーザビリティテスト

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

iOSのユーザビリティテストをサポートするツールには、以下のようなものがあります。

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

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

ベータテスト

ベータテストは、 統合テスト 実際のデータに基づいて、ユーザーから最終的なフィードバックを得ましょう。アプリをベータテスト用に配布するには、以下の手順に従ってください。

ベータテスト配布手順

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

サービス経由でテスターを探すテスターからデバイスIDを収集し、Apple開発者アカウントに追加します。

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

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

テスターからフィードバックを求めます。 テスターはテストを実施し、バグレポートをあなたに送信します。アプリがリリースされた後、レポートは以下から入手できます。 アプリストアコネクト (旧 iTunes 接続)。

注意: 今日、ほとんどのチームはベータ版ビルドを配布しています TestFlightこれにより、デバイスIDを手動で収集することなく、最大10,000人の外部テスターを招待できます。

A / Bテスト

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

2台のiOSデバイスでA/Bテストを実施

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

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

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

  • 起こる: iOS と両方の A/B テスト AndroidiOSアプリに統合でき、テストプロセスを迅速化できます。

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

  • 定義 ターゲット あなたのテストの。 目標がなければどんなテストも役に立ちません。
  • UCCA現代美術センターがアップロードしたYouTubeで展覧会を見る エンドユーザーがアプリを初めて使用する
  • ラン XNUMXつ アップデートごとにテストを実行します。これにより、テスト実施時の時間を節約できます。
  • モニター テストを注意深く行ってください。テストを監視することで、そこから学ぶことができます。

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

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

  1. アプリケーションをテストします。 実際のデバイス パフォーマンスを現実的に把握するため
  2. 向上させる 従来のテスト方法ではiOSテストのすべてのテストを網羅するには不十分であるため、テスト方法を変更する必要があります。
  3. コンソールログ iOSアプリケーションをテストするため。このiOS機能には、デバイス上のすべてのアプリケーションからの情報が含まれています。
  4. ドキュメント アプリケーションのバグは 内蔵スクリーンショット このコマンドは、開発者がバグの発生原因を理解するのに役立ちます。
  5. クラッシュレポート アプリケーションのテスト時には、ツールが役立ちます。クラッシュを検出し、詳細なログを記録できるため、バグの調査が容易になります。

iOS テストに関する誤解

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

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

iOS (NAIST) と Android Apple Inc. が開発した 2 つのプラットフォームと Google それぞれ異なる。テスト環境、テストフレームワーク、プログラミング言語において、両者は全く異なる。

iOSシミュレーターでアプリケーションをテストすれば十分です。

iOSシミュレーターにはいくつかの制限があるため、アプリのテストには十分な性能を備えていません。

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

私のアプリは多くの機能を備えているため、誰もがアプリストアからダウンロードするでしょう。

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

よくあるご質問

はい。AI 支援プラットフォームは、UI が変更されたときにテスト ケースを生成し、ビジュアル リグレッションを検出し、壊れた要素ロケーターを修復します。 テストシグマ チームが平易な英語でiOSテストを作成できるようにする。

AIベースの自己修復機能は、UI変更後に要素ロケーターを更新し、不安定なテストをフラグ付けし、リスクの高いケースを優先することで、iOSリリースごとに発生する手作業による再作業を削減します。

Yes. Appium AppleのXCUITestフレームワークを通じてiOSアプリを積極的にメンテナンスし、テストをサポートしています。 Javaスクリプト、 Python, JavaまたはC#。

いいえ。無料のApple IDには Xcode 自分のデバイスでテストできます。有料のApple Developer Program(年間99米ドル)が必要です。 TestFlight 配信およびApp Storeでのリリース。