皆さん、こんにちは。
先週に引き続き、JSTQBシラバス「モバイルアプリケーションテスト担当者」の
4項「モバイルアプリケーションのプラットフォーム、ツール、環境」についてご紹介していきたいと思います。
4項の構成は以下となっています。
■目次リンク
□4.1モバイルアプリケーション向け開発プラットフォーム
本項では、モバイルアプリケーション開発向け統合開発環境(IDE)についてご紹介していきます。
統合開発環境(IDE)では、主に以下の内容を行なうことができます。
・アプリケーションの設計、コーディング、コンパイル、インストール、アンインストール、監視、エミュレーション、ログ記録、およびテスト実施
現在の主流となっているモバイルOSのAndroid、iOSでは、以下のIDEが利用されています。
◇Android/Android Studio
Androidにおいては、「Android Studio」が挙げられます。
Android Studioでは、Androidアプリの開発の他、デバッグ、エミュレータ構築、キャプチャ、動画取得、ログ取得など、様々なことが行えます。
当ブログでも、Android Studioの導入、エミュレーターの構築、Android実機を使ったキャプチャ、動画撮影、ログ取得の方法など掲載しています。
https://susakiworks.com/category/android/
◇iOS/Xcode
iOSでは、「Xcode」が挙げられます。
iosアプリの開発、デバッグ、エミュレーター構築、テスト実施など行えます。
しかし、Android Studioと異なり、アプリを開発し、Apple Storeへリリースする場合や、Xcodeを介して「Appium」などのツールを使用し、テスト自動化を行なう場合、Xcodeの開発ライセンス(有料)が必要となります。
上記のAndroid Studio、Xcodeは、一般的なIDEとは異なり、モバイルプラットフォームのサポートが追加されています。
◇その他のIDE
その他IDEとしては、ゲームアプリ開発の「Unity」「Unreal Engine」などが挙げられます。
・Unity
https://unity.com/ja
・Unreal Engine
https://www.unrealengine.com/ja/
これらは、Android、iOSに限らず、Web、コンシューマ機器(Nintendo Switch、Xbox、PS4,5など)向けにもアプリ・ソフトウェア開発・ビルドなどが可能となっています。(それぞれのプラットフォーム向けのビルドに対しては、有料ライセンス要)
また、上記のようなクロスプラットフォームは、特有のコーディング(Java,Objective-Cなど)を必要とせず、他の言語でもコーディングすることが行えます。
□4.2一般的な開発プラットフォームツール
ソフトウェア開発キットは、アプリケーションの開発とテストに役立つ様々なユーティリティを備えています。
例として、スクリーンショットの取得、ログ記録の抽出、任意のイベントおよび通知のデバイスへの送信、メモリやCPUの使用率など様々なパラメータの監視、仮想デバイスの作成など可能です。
Android、iosの代表的なユーティリティは以下があります。
◇Android
・Android Vertual Device(AVD) Manager
Androidエミュレーターを構築することができます。
手元にAndroidデバイスが無い場合、エミュレーターを構築し、エミュレーター上でアプリをインストールし、テスト等行なうことができます。
(参考)https://susakiworks.com/win10_android_emulator/
・Android Debug Bride(ADB)
こちらも、Android Studioに格納またはオプションで追加で導入することができます。
ADBコマンドを使用することで、キャプチャ、動画撮影、ログ取得など行なうことができます。
(参考)https://susakiworks.com/androidstudio_adb_command/
・Android Device Monitor
こちらは、JSTQBでは紹介されていますが、情報が少し古く、Android Studio ver3.1でサポート終了となっており、Android Studio3.2からは削除されています。
(参考)https://developer.android.com/studio/profile/monitor?hl=ja
◇iOS
・Instruments
こちらは、iOSアプリのメモリ、CPU等の状況をモニタリング、ログ確認などが行えるツールです。
(参考)https://developer.apple.com/forums/tags/instruments
□4.3エミュレーターおよびシミュレーター
◇4.3.1エミュレーターおよびシミュレーターの概要
JSTQBのシラバスでは、エミュレーターおよびシュミレーターは、「モバイルエミュレーター」、「モバイルシュミレーター」を意味します。
エミュレーター、シミュレーターの特徴は以下となります。
「シミュレーター」
・実行環境をモデル化するもので、非デバイスの代用品としてテストで使用されることもある。
・シミュレーターでテストされるアプリケーションは、配布されるアプリケーションとバイトコードレベルで異なるため、エミュレータ使用時に比べて制限が多い。
「エミュレーター」
・ハードウェアをモデル化して、物理ハードウェアと同じ実行環境を使用する。
・模擬対象のモバイルデバイスとは異なる動作をする可能性があるためデバイスの完全な代用品としてなることはできない。
・マルチタッチや加速度センサーなどの一部の機能がサポートされていない場合がある。
◇4.3.2 エミュレーターおよびシミュレーターの使用
エミュレーターまたはシミュレーターを使用するには、それらを起動し、必要なアプリケーションをそれらにインストール後、実際のデバイスのようにアプリケーションをテストする必要があります。
エミュレーター、およびシミュレーターは、様々な利用時のパラメータが利用可能です。
(例)
・通信強度、パケット損失率でのネットワークエミュレーション、方位の変更、割り込み生成、GPS位置情報データなど
尚、インストールを目的としてエミュレーターに接続するには、Android用のADBのようなコマンドラインツール、Xcode、Android Studioのような統合開発環境からの接続が求められる場合があります。
Androidエミュレーターについては、当ブログでも、使用方法についてご紹介していますので、こちらも合わせてご確認いただければと思います。
(WindowsOS)
https://susakiworks.com/win10_android_emulator/
(MacOS)
https://susakiworks.com/macosandroid_emulator/
□4.4テストラボのセットアップ
JSTQBシラバスでは、テストラボについて、「オンプレミスラボ」、「リモートテストラボ」について記載されています。
まず、「オンプレミス」について、理解する必要があります。
「オンプレミス」は、サーバーやソフトウェアなどの情報システムを、ユーザー担当者が管理できる施設内に、設置して運用することです。
クラウドと異なり、社内サーバーで運用できるものと、とらえていただければと思います。
「オンプレミスラボ」
オンプレミスラボでは、すべてのデバイス、エミュレータ、シミュレーターが敷地内に配置されています。
(メリット)
オンプレミスラボのメリットには、特定のプロキシミティベースドテスト(近接ベースのテスト)や、バッテリー、タッチ、強化されたセキュリティなどセンサー固有の側面のための、デバイスの可用性が含まれます。
(デメリット)
このタイプのラボのセットアップには、調達および保守されたるデバイスに応じて、多額の予算が必要となる場合があります。
その他課題として、タイムリーな可用性や、異なる場所や環境でテストすることが困難な点があります。
「リモートテストラボ」
リモートテストラボでは、デバイスまたはネットワークが敷地内で物理的に利用できない場合のテストで重要かつ有益です。
主にクラウド環境を指すと認識しています。
リモートデバイスアクセス(RDA)を使用すると、プロバイダーのデータセンターでホストされている様々なデバイスに、ネットワーク接続経由でアクセスできます。
RDAプロバイダーの各利用候補は、要件に適合しているか、特にセキュリティの要件に適合しているかで評価される必要があります。
リモートラボでは、メリットとして以下の内容の機能の提供している場合もあります。
(メリット)
・専用の物理デバイスバージョン(例:Samsungモバイルデバイスラボ)
・特定のオぺレーティングシステムおよびバージョンだけのためのロボットアーム
・デバイスへのアクセスを可能にするための仮想プライベートネットワーク(VPN)
・様々な携帯電話事業者とのモバイルデータ通信接続
・自動化ツールおよびサービス
(デメリット/注意点)
リモートテストラボの留意点として、デバイスの反応が悪いこと、マルチタッチやジェスチャーなどのデバイス操作のオプションが制限されていることが挙げられます。
他の要点として、ローカルラボに存在しないデバイスにアクセスする必要性に対応できるオンデマンドプラットフォームの可用性、プロジェクトの進展に伴い拡大・縮小が可能なラボの拡張性が挙げられます。
NFC /Blutoothやバッテリー消費といったセンサーを含むテストシナリオは、クラウドでのテストが困難であることが多いケースがあります。
リモートラボの地位的な位置が異なることで、ネットワークやGPSの接続を必要とするテストのタイプに応じて、2つのアプローチのいずれか1つ、または組み合わせて使用できます。
■最後に
以上、JSSTQBシラバスモバイルアプリケーションテスト担当者の4項について紹介致しました。
次週は5項について、ご紹介したいと思います。
最後まで読んで頂き、ありがとうございました。
ソフトウェアテスト教科書 JSTQB Foundation 第4版 シラバス2018対応