ios app testing beginners guide with practical approach
iOSアプリテストの基本的な知識の収集:
「ご存知のとおり、誰もが携帯電話を持っていますが、自分の携帯電話が好きな人は1人も知りません。人々に愛される電話を作りたいです。」 - スティーブ・ジョブズ。
それはスティーブジョブズによるiPhoneについてでした。スティーブは本当にAppleに彼らのモバイルデバイスを誰にとってもずっとお気に入りのものにすることに向けて努力させました。
ユーザーは、iPhone、iPod Touch、iPadなどのAppleモバイルデバイスを常に愛してきました。現在のデータによると、iOSで実行されているAppleデバイスは世界中で約10億台あります。
それはそれらの10億です。
以下は、2016年のiPhoneの市場シェア分析です。
(画像 ソース )
学習内容:
- ios
- iOSテスト
- iOSアプリケーションテストの種類
- 手動テスト–デバイスの使用
- 手動テスト–エミュレーターの使用
- iOSオートメーション
- iOSアプリをテストするためのベストプラクティス
- iOSオートメーションフレームワーク
- 結論
- 推奨読書
ios
iOSは、Appleがデバイス用に正確に設計したモバイルオペレーティングシステムであり、多くの場合iDevicesと呼ばれます。 iOSがiPhone専用に作られた2007年以降、オペレーティングシステムはTouchデバイスとiPadもサポートするように進化しました。
現在の調査によると、iOSは市場で2番目に人気のあるモバイルオペレーティングシステムです。 Androidはさまざまなメーカーが製造したデバイスで動作しますが、iOSの優れている点は、オペレーティングシステムの人気を明確に示しているAppleハードウェアのみに制限されていることです。
iOSは、長年にわたって合計10のメジャーリリースを確認しており、すべてのリリースで注目すべき機能の更新を提供しています。
このiOSオペレーティングシステムは、使いやすさ、操作の流動性、クラッシュのないアプリなどで有名です。アプリについて説明している間、iOS用のApple iTunesアプリストアは非常に豊富で、最大220万のアプリがあります。アプリのダウンロード数は急速に1,300億に達しました。
アルファテストとベータテストの違い
iOSはオペレーティングシステムであり、ゾーンや言語の壁によって制限されていません。これは、このオペレーティングシステムの主要な要因の1つであり、開発からわずか10年で非常に有名になりました。 40の異なる言語をサポートします。
言語だけでなく、iOSデバイスのUIでさえ、Androidデバイスと比較すると非常に魅力的で上品です。
アプリケーションについて詳しく説明している間、以下にその統計の一部を示します。
- Apple iTunes App Storeは、毎日約1000件の新しいアプリケーションの提出を受け取ります。
- 約1/3rdApple iTunes App Storeの全アプリケーションのうち、無料でダウンロードできます。
- 有料のiOSアプリケーションの料金は、平均で1.10〜1.30 $の範囲です。
- iOSゲームの平均価格は0.55から0.65 $の範囲です。
iPhone、iPod Touch、またはiPadでいくつのアプリケーションを使用しましたか?
かなり一握り!正しい? GmailやFacebookからクラッシュ・オブ・クランやアスファルトまで。この種のアプリケーション、数、およびユーザーの多様性は、ソフトウェアテスターに深刻なビジネスをもたらします。ね?
テスターとして、iPhone、iPod、iPadのサイズにはばらつきがあるため、機能だけでなく、詳細なUIテストも行ってアプリを検証する必要があります。
iOSテスト
前に説明したように、iOSはAppleハードウェアまたはApple製デバイスにのみ制限されています。それは確かに大きな安心です。ただし、iOSをサポートするAppleデバイスとそのバージョンは多数あります。
要するに、オープンシステムであるAndroidとは異なり、Appleはクローズドシステムを持っているということです。 OSまたはデバイスのリリースは十分に計画されています。
これは、次の理由で追加の利点です。
- 利用可能な、またはリリースされる予定のデバイスのサイズは固定されており、QAとして、すべてのデバイスが市場に出ていないことを非常に明確に把握する必要があります。 QAがテスト用のテストベッドを決定しやすくなります
- デバイスと同様に、OSはクローズドシステムであるため、詳細な分析を行う必要はありません。OSテストのテストベッドを決定するのにかかる時間(および労力)が少なくて済みます。
- Appleには、習得するのが少し難しいものの、さまざまな独自の自動化ツールがあります。
- AndroidのGPSテストでは、偽の場所を送信するためのダミースクリプトを作成する方法を見つけるために2〜3日を費やさなければならなかったことを覚えています。しかし、iOSでは、ウォーキング、ランニング、サイクリングなどのために偽のGPSを送信する機能が組み込まれているため、非常にシンプルで簡単でした。
- 初期テストでは、フィールドテストでGPSをテストすることはお勧めしません。ダミーのGPSデータを送信することをお勧めします。これにより、時間も節約できます。
- Appleには、アプリケーションを提出するための厳格なガイドラインがあります。これは、厳格なガイドラインがない他のOSとは異なり、提出後に拒否されるのではなく、成功の可能性が高いという点で大きな助けになります。
- デバイスとOS自体の機能は固定されており、わかりやすいため、アプリの動作方法を見逃す可能性が低くなります。 iOSでは、Androidでアプリを強制終了して強制停止することはできますが、アプリを強制的に停止する方法はありません。したがって、ここでのテストでは複雑さが軽減されます。
これらは、アップル製品から得られる利点の一部ですが、必ずしもすべての製品またはアプリの利点であるとは限りません。クロスプラットフォームで開発されたアプリの場合、iOSは扱いが難しいです。
ザ・ 高いレベル 分類は以下のとおりです。
iOSアプリケーションのテストを開始する最初のステップは、実装の種類を検討することです。
アプリケーションの実装は、次の3つのタイプのいずれかになります。
1)Webベースのアプリケーション: これらは、iOSアプリケーションのビルドと同様に動作するアプリケーションです。これらは、ユーザーがiPhoneのSafariブラウザでアクセスする通常のWebサイトです。
2)ネイティブアプリケーション: iOS SDK (ソフトウェア開発キット)を使用して開発されたアプリケーションは、VLC、Flipboard、UberなどのサポートされているiOSデバイスでネイティブに実行されます。
3)ハイブリッドアプリケーション: これは、上記の両方のタイプの混合物またはハイブリッドです。これにより、Webコンテンツ表示領域からWebコンテンツにアクセスできるようになり、iOS用のいくつかのユーザーインターフェイス要素もあります。 例えば。 Zomato、Twitter、Gmailなど
iOSアプリケーションテストの種類
(通常の条件で行われる)さまざまなタイプのiOSアプリケーションテストは、次のようになります。
- 手動テスト–デバイスの使用
- システムテスト
- UI / UXテスト
- セキュリティテスト
- フィールドテスト
- 手動テスト–エミュレーターの使用
- ユニットテスト
- 統合テスト
- UIテスト
- 自動化テスト
- 回帰試験
- BVTテスト
- 互換性テスト
- 性能試験
アプリケーションの例:
iOSテストプロセスのさまざまな側面に移る前に、典型的なiOSアプリケーションの例を見てみましょう。
スポーツチームの資金調達アプリケーションを考慮に入れましょう。アプリケーションには、ソーシャルアカウントログイン(Google / Facebook)と支払いページがあります。
支払いページに移動する前に、システムで定義された金額を選択するオプション、または金額を入力するカスタムフィールドが必要です。支払いが完了すると、証明書のPDFが画面に表示されると同時に、現在ログインしているユーザーの電子メールアカウントにPDFを電子メールで送信する必要があります。
手動テスト–デバイスの使用
a)システムテスト:
このタイプのiOSテストは、システムのさまざまなコンポーネントが連携して動作するかどうかを確認するためにシステムで実行されます。
このテストプロセスでは、iOSアプリケーションが実際のAppleデバイスで起動され、続いてユーザーインターフェイスと対話して、特定の1つまたは複数のユーザーアクションのセットがトリガーされます。一般的なユーザーアクションは、画面上のタッチ操作またはスワイプ操作です。
最後に、結果は期待される結果に対してテストされます。
私たちのために例上記のように、一般的なシステムテストは次の手順で構成できます。
- オープン認証を使用したFacebookアカウントログインを使用して、iOSスポーツチームと資金調達アプリケーションにログインします。
- 指定されたオプションから、事前定義されたシステム金額$ 10を選択します。
- 支払いゲートウェイに進みます。
- 支払いプロセスにPayTmモバイルウォレットオプションを選択します。
システムテストは、主にシステム内のさまざまなエンドツーエンドフローをカバーする操作です。各テストは、利用可能なさまざまな構成で実行する必要があります。また、アプリケーションがインストールされているデバイスとiOSのバージョンによっても異なります。
b)iOSUIテスト
iOSデバイスのUI / UXは、サクセスストーリーの重要な要素です。
iOSデバイスでのUI / UXテストは、次のカテゴリに分類できます。
- 入力: タッチスクリーン機能(ロング/ショートタッチ、3Dタッチ、スクロールなど)、ボタンサイズ、ボタンの配置、フォントの色とそのサイズなどのテストは、このカテゴリに分類されます。
- ハードキー: ネイティブアプリケーションは、ホームキー、サウンドボタンなど、デバイスに存在する組み込みのハードウェアキー/ハードキーとシームレスに機能します。テスト対象のアプリケーションも、同様の方法でハードキーと対話する必要があります。
- ソフトキー/ソフトキーボード: Whatsappメッセージページにいるときにキーボードが表示されないのは、どれほど迷惑ですか?キーボードの外観、不要なときに非表示にする機能、スマイリー、記号、すべての文字/記号などのサポートが必要です。
- 私たちの中で 例 、キーボードは、カスタム金額の入力、支払いゲートウェイでの資格情報/カードの詳細の入力など、複数の場所で画像に表示されます。
- 画面: アプリケーションが複数のデバイスでサポートされている場合は、すべてのデバイスでその方向をテストする必要があります。テストプロセス用に選択されたデバイスに基づいて、解像度が変更される場合があります。同時に、ポートレート/ランドスケープモードおよびそれぞれの場合のキーボードの使用についてもテストを実行する必要があります。
アプリがiOS専用ではなく作成されている場合は、次のようにiOS用に特別にテストする必要のあるポインターがいくつかあります。
- リスト: iOSでは、表示するリストがある場合、ポップアップが表示されるAndroidとは異なり、常にまったく新しい画面が表示されます。
以下は同じ例です。
( ソース )
- メッセージ: アプリがクラッシュすると、iOSに表示されるメッセージはAndroidのメッセージとは異なります。また、「#GB memory freed」などのメモリを解放すると、Androidスマートフォンで小さなメッセージが点滅しますが、iOSではフラッシュメッセージを表示できません。
次に例を示します。
( ソース )
- 削除確認: iOSアプリをよく見ると、削除確認ポップアップの(削除)オプションの左側に(キャンセル)アクションがあります。 Androidまたは他のOSでは、その逆も同様です。
これらは、iOSにはデフォルトのUIやメッセージなどがあり、変更できないため、個別のテストケースとテストが必要な例の一部です。
c)セキュリティテスト:
私たちの中で 例 、ソーシャルページ統合でサポートされている支払いゲートウェイとログインページを備えたアプリケーションがあります。
例えば 、電話にICICIアプリがあり、アカウント情報ではなくログインしたときに、他の人の情報が表示された場合、または送金を実行してアプリがOTPを自分以外の電話番号に送信した場合を想定します。 、あなたは何が起こるか想像することができます。したがって、セキュリティテストは必須です。
アプリケーションをハッキングから保護するために、ソーシャルメディアログインと支払いゲートウェイに関するデータは暗号化または保護する必要があります。
d)フィールドテスト:
スマートフォンのデータネットワークでのアプリの動作を確認するために、フィールドテストが行われます。
このテストは通常、アプリが安定した段階に達したときに実行され、社内でテストしてもクラッシュせず、すべての機能の問題が修正されています。これは主に、低速のデータネットワークでアプリのパフォーマンスをテストするために行われます。
手動テスト–エミュレーターの使用
a)ユニットテスト:
これは主に開発チーム/個々の開発者によって行われます。このテストでは、ソースコードの特定のモジュールが期待どおりに機能しているかどうかを確認します。
開発者は、単一のコンポーネント、つまり、それらが動作する分離されたモジュールの単体テストケースを設計します。このテストは、個々のモジュールが機能していることを証明し、その後、統合アーキテクチャの要素として機能するようにソースコードに挿入されます。ヘッダーにあるように、これはほとんど手動のテスト実行であり、テストエミュレーションを使用して実行されます。
b)統合テスト:
前の手順では、単体テストについて詳しく説明しました。さて、個々のユニット/モジュールの機能を確認しているので、統合もチェックする必要があります。このテストは、さまざまな統合ポイントに関連する問題を見つけるために実行されます。
私たちの中で 例 、ログインを1つのモジュールとして呼び出し、支払いゲートウェイを別のモジュールとして呼び出すことができます。
ユニットテストでは、両方のテストを個別にカバーします。ただし、統合テストでは、両方のモジュールの整合性がテストされます。
c)UIテスト:
上で説明したように、UIテストはアプリの成功の重要な要素であるため、アプリに対して実行する必要があります。
テスト用にすべての電話モデルを購入することは、費用がかかるため、実際には不可能です。したがって、エミュレーターを使用することは、無料であり、明らかなUIバグがエミュレーターで簡単に検出されるため、最良のオプションです。
iOSオートメーション
a)回帰テスト:
絶えず変化する環境では、アプリケーションを強化したり、以前のバージョンで見つかった問題を修正したりするために、継続的に変更が行われます。変更を実装しているときに、アプリケーションに加えられた変更によって既存の機能が変更される可能性があります。
簡単に言うと、行われた変更により、アプリケーションに新しい一連の問題が発生する可能性があります。
変更が実装された後でもアプリケーションが同じように実行されるかどうかを確認するには、回帰テストを実行する必要があります。また、反復的なアクティビティであるため、この種のテスト実行には自動化が役立ちます。
b)BVTテスト:
自動化されたスイートをテスト用にリリースされた新しいビルドで実行することは、多くの時間を節約し、基本的な機能がクラッシュした場合にすぐに報告されるため、良い習慣です。手作業と比較すると、ビルドを承認または拒否するための自動化された基本的な検証テストの結果を数分で取得できます。
c)互換性テスト:
すでに説明したように、Appleによってリリースされているデバイス/タイプは多数あります。正確には、15種類のiPhone、6つのiPod Touchモデル、10のiPadモデル、2つのiPadProモデルが市場に出回っています。
さて、私たちの(スポーツチーム募金アプリ)のようなアプリが開発されると、それは上記のすべてのデバイスでサポートされるはずです。これは、すべてのテストケースがこれらすべてのデバイスで実行されることを意味します。
現在、このようにデバイスの数が膨大な場合、手作業は不可能です。互換性のために、自動化テストが推奨されます。
d)パフォーマンステスト:
パフォーマンステストでテストされるもののいくつかは次のとおりです。
- アプリケーションが操作可能になったとき、または非常に長時間実行されたときのアプリケーションの動作。運用期間中は、アプリケーションを通信/対話/アイドル状態のままにします。
- 毎回異なる負荷量で同じ操作を実行する必要があります。
- データ転送が非常に大きい場合のシステムの動作。
これらのケースは本質的に反復的であり、ほとんどの場合自動化を使用して行われます。
iOSアプリをテストするためのベストプラクティス
iOSアプリケーションのテストは、正しく行われない限り、困難で、注意が必要で、困難な場合があります。
iOSアプリのテストを正しい方向に進めるために、次のプラクティスを実装できます。
#1)エミュレーターを忘れる: ほとんどの場合、エミュレータは実際のデバイスよりも優先されます。しかし、それは理想的なケースではありません。ユーザーの操作、バッテリーの消費、ネットワークの可用性、使用状況のパフォーマンス、メモリの割り当てなどは、エミュレーターではテストできません。したがって、常に実際のデバイスでテストしてみてください。
#2)手動で行うのではなく自動化する: 特定のタスクを実行するのにどれくらいの速さですか?今日の世界では、誰もが主に費やした時間について心配しています。自動化は、実行時間を短縮するだけでなく、ソフトウェアテストの有効性、効率、および適用範囲を拡大します。
#3)作業を共有する: 開発チームを含むチーム間でテストを共有します。テストケースを手動で実行するという点で助けを得ることができ、手動テストケースを自動化するという点で開発チームから助けを得ることができます。
#4)クラッシュログをキャッチする: iOSのアプリケーションは、特定の状況下でフリーズまたはクラッシュする可能性があります。この問題を修正するには、クラッシュログが重要な役割を果たします。
クラッシュログをキャプチャするには、次の手順を実行できます。
- MacOSの場合:
- iOSデバイスをコンピューター(Mac)と同期します。
- Mac OSの場合は、Optionキーを押しながらメニューバーを開きます。
- (移動)メニューに移動し、(ライブラリ)をクリックします。
- 〜/ Library / Logs / CrashReporter / MobileDevice //に移動します。
- ログファイルの名前は、アプリケーションの名前で始まる必要があります。
- Windows OSの場合:
- iOSデバイスをコンピューターと同期します(Windows)。
- C: Users AppData Roaming Applecomputer Logs CrashReporter MobileDevice \に移動します
- ログファイルの名前は、アプリケーションの名前で始まる必要があります。
#5)コンソールログのキャプチャ:
コンソールログは、iOSデバイス上のアプリケーションの全体的な情報を提供します。
これは、iToolsなどのツールを使用して実行できます。 iToolsアプリケーションで、iOSデバイスがiToolsを実行しているシステムに接続されているときに、「ツールボックス」アイコンをクリックします。 「リアルタイムログ」をクリックすると、リアルタイムのコンソールログが表示されます。
#6)キャプチャ画面: 問題を理解しやすくなるため、手順が視覚的であれば修正も簡単です。
開発チームが問題をよりよく理解できるように、画面を記録するか、問題のスクリーンショットを撮ることをお勧めします。スクリーンショットは、電源ボタンとホームボタンを同時に押すことにより、組み込み機能を使用して撮影できます。
画面の記録は、iOSデバイスがLightningケーブルを使用してMacに接続されているときに、QuickTimeプレーヤーの記録を使用して実行できます。
iOSオートメーションフレームワーク
最も一般的に使用される自動化フレームワークのいくつかを以下に示します。
#1)エポック;
Appiumは、SeleniumWebドライバーを使用してiOSアプリケーションのテストを自動化します。
このプラットフォームは独立しており、Webデバイスとモバイルデバイス(AndroidとiOSの両方)の両方で使用できます。これはオープンソースのものであり、言語による制限はありません。 Appiumを使用した自動化には、アプリケーションの変更やソースコードへのアクセスは必要ありません。
Appiumは、ネイティブ、ハイブリッド、Webなどのアプリケーションタイプに関係なくシームレスに動作します。
#2)ひょうたん:
Calabashは、AndroidとiOSの両方の自動化テストをサポートするオープンソースのクロスプラットフォームフレームワークです。
バーチャルリアリティゲーミンググラスxbox360
ひょうたんテストは、仕様に似ていて理解しやすいキュウリで書かれています。 Calabashは、ユーザーがネイティブアプリケーションとハイブリッドアプリケーションの両方と対話できるようにするライブラリで構成されています。ジェスチャー、アサーション、スクリーンショットなどのインタラクションをサポートします。
#3)アールグレイ:
アールグレイは、Google独自の内部UIテストフレームワークです。これは、YouTube、Googleフォト、Google Playミュージック、Googleカレンダーなどのテストに使用されています。
アールグレイは最近オープンソースになりました。アールグレイの主な利点のいくつかは、組み込みの同期、対話前の可視性チェック、真のユーザー対話(タップ、スワイプなど)です。これは、AndroidUIオートメーションに使用されるEspressobyGoogleと非常によく似ています。
#4)UIオートメーション:
UIオートメーションはAppleによって開発されており、AndroidのUIAutomatorと非常によく似ています。 APIはAppleによって定義され、テストはJAVAで記述されています。
#5)方法:
KIFは「KeepitFunctional」の略です。これはサードパーティのオープンソースフレームワークです。
これは、XCTestテストターゲットに密接に関連して使用されるiOS統合テストフレームワークです。 KIFはXcodeプロジェクトで簡単に構成または統合できるため、追加のWebサーバーや追加のパッケージは必要ありません。 KIFはiOSバージョンに関して幅広いカバレッジを持っています。
結論
iOSアプリケーションのテストは、実行するのが最も難しいタスクになる可能性があります。この記事を通じて、iOSアプリケーションのテストについて十分に理解していただければ幸いです。
ただし、適切なアプローチ、可能な限り最良のテストプロセス、方法論、ツール、エミュレーター/デバイスなどを選択すると、iOSアプリケーションのテストが非常に成功します。
今後のチュートリアルでは、関連するすべての基本概念について簡単に説明します。 Androidアプリのテストチュートリアル 。
推奨読書
- 最高のソフトウェアテストツール2021 (QAテスト自動化ツール)
- 実用的な例を含む移植性テストガイド
- アルファテストとベータテスト(完全ガイド)
- 機能テストと非機能テスト
- iOSアプリのAppiumテストを作成する
- PrimereBookダウンロードのテスト
- 早期テストとは:早期テスト、頻繁なテスト、しかしどのように? (実用ガイド)
- モバイルアプリテストチュートリアル(30以上のチュートリアルを含む完全ガイド)