モバイルアプリのテスト自動化でスピードと品質を両立する
モバイルアプリは、一度リリースしたら終わりではありません。むしろそこからがスタートで、ユーザーの利用状況や市場の変化に合わせて素早い改善とリリースが求められます。そのため、モバイルアプリ開発においては、スピードと品質を両立させることが重要です。
本記事では、モバイルアプリのテスト自動化に焦点を当て、開発スピードと品質を両立させる方法を解説いたします。
モバイルアプリテスト自動化の基本
テスト自動化では、テスト領域として主に回帰テストを対象としています。つまり、同じ操作を自動で繰り返すので、テストを高速化・省力化できます。また、新しい修正によって発生する既存コードでの不具合を発見するのにもつながります。
モバイルアプリはWebアプリケーションとは異なり、状態の管理が大事です。同じ操作であっても、状態によって表示される内容が異なることは多々あります。そのため、テストケースが複雑になりやすく、テスト自動化の難易度も高くなります。
また、モバイルアプリの操作は、画面のタップやスワイプなどの操作が主体です。そのため、テスト自動化ツールの選定も重要です。モバイルアプリに対応したテスト自動化ツールを選択しなければなりません。
ネイティブアプリのテスト自動化ツールの選定
ここでは、ネイティブアプリ(JavaやSwiftで開発されたアプリ)のテスト自動化ツールを紹介します。
- Appium
- Espresso
- XCUITest
- Shirates
- monkeyrunner
Appium
Appiumは、モバイルアプリの自動テストツールで、iOS、Android、Windowsアプリをサポートしています。WebDriverプロトコルを使用しており、アプリを自動操作してテストを行えます。
Espresso
Espressoは、AndroidアプリのUIテストを行うためのテストフレームワークです。Android Studioに統合されており、簡単にテストを作成・実行できます。コードを書いて画面を操作し、その結果を検証できます。
XCUITest
XCUITestは、iOSアプリのUIテストを行うためのフレームワークです。Xcodeに統合されており、Objective-CやSwiftでテストを記述できます。シナリオコードを書いて、ユーザーの操作をシミュレーションできます。
Shirates
ShiratesはAppiumをより簡単に使えるようにするオープンソース・ソフトウェアです。要素の検証や分岐、キーボード操作などを使えるようにします。ローソンデジタルイノベーションという日本企業により開発されている点も特徴です。
monkeyrunner
monkeyrunnerは、AndroidのUIテストを行うためのツールです。Pythonスクリプトを使って、Androidデバイスやエミュレータを操作できます。画面のタップやスワイプ、キーボード入力などを自動化できます。Android Studioに統合されているため、使いやすいです。
テスト自動化の実践
モバイルアプリのテスト自動化は、以下のステップで進めます。
- テストケースの作成
- テストスクリプトの作成
- テスト環境の構築
- テストの実行
- テスト結果の分析
1.テストケースの作成
テストケースは、テスト対象のアプリケーションの振る舞いを規定するものです。テストケースは、アプリの機能や操作に対応するように作成します。たとえばログイン機能や決済機能など、アプリの主要な機能に対応するテストケースを作成します。
2.テストスクリプトの作成
テストスクリプトは、テストケースを自動化するためのコードです。自動化ツールの場合、コードで操作を記述するケースや、GUIで操作を記録してコードを生成するツールがあります。テストスクリプトは、テストケースに対応するように作成します。
3.テスト環境の構築
テスト環境は、テストを実行するための環境です。開発時には、ローカル環境下でテストデータを用いて行われます。CI/CDを用いている場合には、ステージング環境や本番環境でテストを行います。
4.テストの実行
テストスクリプトを実行します。シミュレーターやエミュレーターが立ち上がって、テストを実行します。この際、ヘッドレスのツールでは画面が表示されず、バックグラウンドでテストを行います。
5.テスト結果の分析
テスト結果は、スクリプトの標準出力やログファイルに出力されます。テスト結果を分析し、不具合があれば修正して再度テストを実行します。基本的にすべてのテストをパスするまで、繰り返し修正とテストを行います。
テスト自動化の課題と解決策
モバイルアプリのテスト自動化には、以下のような課題があります。
- テストケースの作成が難しい
- テストスクリプトの保守が難しい
- テスト環境の構築が複雑
- テストの実行時間が長い
テストケースの作成が難しい
テストケースをコードで作成する場合、そのプログラミング言語の理解度が求められます。また、モバイルアプリの操作は複雑で、テストケースの作成が難しい場合があります。この場合、GUI操作を記録するツールを利用すると省力化できます。
テストスクリプトの保守が難しい
テストスクリプトが増えると、モバイルアプリの開発によってテストスクリプトのメンテナンスが増え、徐々に開発工数を逼迫するようになります。すべてのフローをテスト自動化するのではなく、重要なフローを中心にテスト自動化することで、保守対象を絞り込めます。また、テストスクリプトの定期的なリファクタリングも重要です。
テスト環境の構築が複雑
モバイルアプリのテスト環境は、実機やエミュレーター、シミュレーターなどが必要です。また、多くの場合クラウドとの通信が絡みます。これらの環境を構築するのは複雑で、テスト環境の構築に時間がかかる場合も多いです。Dockerなどを使って、環境をコンテナ化し、テスト実行後に破棄・再構築できる環境が望ましいです。
テストの実行時間が長い
モバイルアプリのテストは、UI操作が主体であるため、テストの実行時間が長くなりがちです。テストの実行時間を短縮するためには、テストケースの絞り込みや、テストスクリプトの最適化が必要です。また、並列実行やクラウドの実機サービスを利用することで、テストの実行時間を短縮できます。
まとめ
今回はモバイルアプリのテスト自動化について解説しました。モバイルアプリを素早く開発、リリースするためにはテスト自動化が欠かせません。すでにさまざまなツールがありますので、それらを組み合わせて効率的な自動テスト環境を構築しましょう。
誰でもカンタンにテスト自動化ができるT-DASHでは、 AnyTestと組み合わせることでモバイルアプリのテスト自動化が可能です。ぜひお試しください。
誰でもカンタンにテスト自動化ができる時代は、すぐそこまできています。当サイトでは、テスト自動化ツールに興味のある方へ、「テスト自動化 推進ガイドブック」と「テスト自動化ツールT-DASH 基本ガイドブック」のダウンロード資料をご用意しております。ぜひダウンロードいただき、資料をご覧ください。
またテスト自動化ツール「T-DASH」を無料でトライアル利用できる環境もご用意しています。ぜひ、お試しいただき、ツールを活用したテスト自動化に挑戦してみてください。