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

iOSアプリのテストとは何ですか?
iOSアプリのテスト iOS アプリケーションを実際の Apple デバイスでテストし、インストール時間、ユーザー インターフェイス、ユーザー エクスペリエンス、外観、動作、機能、ロード時間、パフォーマンス、アプリなどの特定のユーザー アクションに対して期待どおりに動作するかどうかを確認するテスト プロセスです。ストアの掲載情報、OSバージョンのサポートなど。
iOS アプリのテストを行う理由
iOSアプリのテスト iOSはAppleのモバイルアプリケーションプラットフォームであり、2007年6月29日に初めてリリースされたため、iOSが必要です。 AndroidAppleは、Apple以外のハードウェアへのiOSのインストールを許可していません。iOSおよびiOSアプリケーションはAppleデバイスにのみインストールできます。したがって、iOSアプリは、ユーザーが所有するiOSバージョンおよびiOSデバイスと互換性がある必要があります。
下の図は、iOSアプリケーションを作成する際に開発者が直面する一般的な質問を示しています。
設計や実装にどれだけ時間をかけても、ミスは避けられず、バグは必ず発生します。下の図は、iOSアプリケーションでよく見られるバグの例を示しています。
アプリケーションのクラッシュ
Apple製品を使用する際に最も厄介な問題の一つは、アプリケーションが実行中に頻繁にクラッシュすることです。多くの場合、アプリのクラッシュはコードのバグやメモリリークが原因です。
アプリケーションの非互換性
お使いのiOSアプリケーションは現在のiOSバージョンでは問題なく動作するかもしれませんが、iOSがアップグレードされると、互換性の問題により動作しなくなる可能性があります。
セキュリティの脆弱性
iOSのセキュリティ脆弱性により、ハッカーがiOSデバイスを攻撃し、個人情報を盗み出すことが可能になります。長年にわたり、様々なiOSバージョンで深刻なiPhoneのセキュリティ脆弱性が発見されてきました。
メモリリーク
メモリ リークとは、プログラムが使用しなくなった、割り当てられたメモリのブロックです。 メモリ リークが発生すると、iOS アプリケーションがクラッシュします。
これらはバグなので、常に修正する必要があります。
iOS テスト マインドマップ
上記の図に示すように、iOS テスト マインドマップには、iOSのテストを実施する際にテスターが考慮すべきすべての項目が表示されます。
iOS アプリケーションのテスト チェックリスト
このチェックリストは、iOSモバイルアプリケーションの特性をテストするために特別に設計されています。当然ながら、テスト対象は一般的なアプリケーション特性のみであり、アプリの機能性はテスト対象外です。
- アプリケーションがデバイスにインストールされるまでの時間を確認してください。アプリケーションが許容時間内にインストールされることを確認してください。
- アプリケーションのインストールが完了したら、アプリのアイコンと名前が設定されているかどうかを確認してください。また、アイコンと名前の両方が、アプリケーションの本来の目的を反映した、分かりやすいものであることを確認してください。
- アプリケーションを起動し、スプラッシュ画面が表示されるかどうかを確認してください。
- スプラッシュスクリーンのタイムアウト時間とホーム画面の読み込み時間を確認してください。アプリケーションのホーム画面は許容範囲内の時間で読み込まれる必要があります。ホーム画面の読み込みに時間がかかりすぎると、ユーザーがアプリケーションを終了したり、アンインストールしたりする可能性が高くなります。また、ホーム画面にコンテンツがどのように読み込まれるかも確認してください。
- アプリケーションの主な機能はすぐにわかるはずです。 それ自体が物語るはずです。
- アプリが横向きと縦向きの両方に対応しているかどうかを確認してください。対応している場合は、両方の向きでアプリをテストしてください。アプリケーションのユーザーインターフェースはそれに応じて調整されるはずです。
- インターネット接続がない状態でアプリケーションを起動してください。アプリが設計どおりに動作することを確認してください。起動時にアプリケーションがクラッシュしたり、画面が真っ白になる場合があります。
- アプリケーションが位置情報サービスを使用している場合は、位置情報のアクセス許可を求めるアラートが表示されているかどうかを確認してください。このアラートはユーザーに一度だけ表示されるべきです。
- アプリケーションがプッシュ通知を送信する場合、プッシュ通知の許可に関するアラートが表示されているかどうかを確認してください。このアラートは、ユーザーに一度だけ表示されるようにしてください。
- アプリケーションを起動し、終了してから再度起動します。アプリが設計どおりに動作するか確認してください。
- タップしてアプリケーションを閉じますping デバイスのホームボタンを押して、アプリを再度開いてください。アプリが設計どおりに動作するかどうかを確認してください。
- インストール後、iPhoneの設定アプリにアプリが表示されているかどうかを確認してください。
- アプリケーションを公開したら、「App Store」でアプリケーションが見つかるかどうかを確認してください。アプリケーションにはサポート対象のOSバージョンがあります。そのため、サポート対象のOSバージョンを搭載したデバイスの「App Store」でアプリケーションが見つかることを確認してください。また、サポート対象外のOSバージョンを搭載したデバイスの「App Store」にはアプリケーションが表示されないようにしてください。
- バッテリーの消耗を防ぐために、アプリケーションがバックグラウンドで実行されているときにスリープ モードに移行するかどうかを確認します。
- アプリケーションのパフォーマンスが遅い場合、またはコンテンツがロードされている場合は、進行状況アイコン (「ロード中…」) が表示されているかどうかを、できれば特定のメッセージとともに確認してください。
- デバイスの検索バーにアプリ名を入力して検索してください。アプリが一覧に表示されるかどうか確認してください。
- アプリ内で、標準的な操作を実行するボタン(例:更新、整理、ゴミ箱、返信、戻るなど)の外観が変更されていないか確認してください。
- 標準ボタンが本来の用途以外の機能に使用されていないか確認してください。
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の利点の一部を下図に示します。
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フレームワークにおける一般的なクラスの一部を示しています。
- その 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種類のユーザーテストを示しています。
コンセプトテスト
アプリケーションのアイデアを市場に投入する前に、ユーザーの反応を評価しましょう。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 を使用します。
A/B テストには XNUMX つの主要なステップが含まれます
- テストを構成するiOSアプリの2つのバージョン(AとB)とテスト指標を用意してください。
- ホイール試乗上記2つのiOSアプリバージョンを、デバイス上で同時にテストしてください。
- 解析より良いバージョンを測定し、選択してリリースする
以下のツールは、iOS上でのA/Bテストをサポートしています。
- 起こる: iOS と両方の A/B テスト AndroidiOSアプリに統合でき、テストプロセスを迅速化できます。
A/B テストのベスト プラクティス
- 定義 ターゲット あなたのテストの。 目標がなければどんなテストも役に立ちません。
- UCCA現代美術センターがアップロードしたYouTubeで展覧会を見る エンドユーザーがアプリを初めて使用する
- ラン XNUMXつ アップデートごとにテストを実行します。これにより、テスト実施時の時間を節約できます。
- モニター テストを注意深く行ってください。テストを監視することで、そこから学ぶことができます。
iOS テストのベスト プラクティス
iOS アプリケーションのテストを計画する際に知っておくべきヒントをいくつか紹介します。
- アプリケーションをテストします。 実際のデバイス パフォーマンスを現実的に把握するため
- 向上させる 従来のテスト方法ではiOSテストのすべてのテストを網羅するには不十分であるため、テスト方法を変更する必要があります。
- コンソールログ iOSアプリケーションをテストするため。このiOS機能には、デバイス上のすべてのアプリケーションからの情報が含まれています。
- ドキュメント アプリケーションのバグは 内蔵スクリーンショット このコマンドは、開発者がバグの発生原因を理解するのに役立ちます。
- クラッシュレポート アプリケーションのテスト時には、ツールが役立ちます。クラッシュを検出し、詳細なログを記録できるため、バグの調査が容易になります。
iOS テストに関する誤解
このセクションでは、iOS テストに関するいくつかのよく知られた通説と現実を検証します。
iOS 上でアプリケーションをテストし、 Android 同じことです。
iOS (NAIST) と Android Apple Inc. が開発した 2 つのプラットフォームと Google それぞれ異なる。テスト環境、テストフレームワーク、プログラミング言語において、両者は全く異なる。
iOSシミュレーターでアプリケーションをテストすれば十分です。
iOSシミュレーターにはいくつかの制限があるため、アプリのテストには十分な性能を備えていません。
- ハードウェアの制限 (カメラ、マイク入力、センサー)
- アプリの UI は、デバイス上で実行するよりも高速かつスムーズに実行されるように見える場合があります
- APIの制限事項
- 一部のフレームワークはサポートされていません (メディア プレーヤー、ストア キット、メッセージ UI など)
私のアプリは多くの機能を備えているため、誰もがアプリストアからダウンロードするでしょう。
アプリケーションの機能が多ければ多いほど、より多くのバグが発生する可能性があります。 アプリケーションに多くの欠陥がある場合、ユーザーはアプリケーションをダウンロードしません。

.png)











