Android環境におけるテストのトレンドを解説
Androidはスマートフォンに限らず、タブレットやカーナビ、チューナーレステレビなどさまざまなデバイスで利用されています。OSとしての価値はもちろん、Android上で動作するアプリもその価値の源泉となっています。
そうした多彩なデバイスで動作するアプリについて、手動でテストするのは非常に困難です。そのため、テストを自動化する仕組みが求められます。テストを自動化することで、アプリの品質を向上させ、開発効率も向上させられます。
本記事では、そうしたAndroidアプリにおけるテスト自動化の流れやトレンドについて解説します。
テスト自動化の基礎知識
テスト自動化を導入するメリットは大きく、以下のようなものが挙げられます。
- テストの再現性が高まる
- テストの効率が向上する
- デグレードのチェックが容易になる
- 開発効率が向上する
テストの再現性が高まる
テストにおいて、再現性はとても重要です。同じ処理を実行した時に同じエラーが出ないと、修正が難しくなります。テスト自動化のプロセスでは、最初にデータやデバイスの状態をリセットして実行されるので、再現性が高まります。
テストの効率が向上する
Androidアプリのテストは多岐に渡ります。ユニットテストや結合テストのようにプログラマブルにできるものもあれば、UX周りのテストのように人間の感覚が必要なものもあります。テスト自動化の導入によって、人間が行うべきテストを減らし、効率的にテストを行えます。
デグレードのチェックが容易になる
デグレードとは、アプリの更新によって過去に問題がなかった部分に対して不具合が発生する現象です。関数やモジュールの変更によって、発生します。こういった過去に正しく実行できていた部分は、人手によるテストでは見過ごされがちです。テスト自動化の対象になっていることで、こうしたデグレードを発見しやすくなります。
開発効率が向上する
一般的にテストはプロジェクト全体における20〜30%と言われるほど、多くの工数を必要とします。Androidアプリが更新される度にテスト対象が増え、テスト工数も徐々に増えていきます。その結果、開発効率が悪化していくケースがあります。テスト自動化によってある程度のテストについて自動化されれば、テスト工数の増大を防げるため、開発効率が向上します。
アプリ開発における最新のテスト自動化ツール
Androidアプリのテスト自動化には、以下のようなツールが利用されています。
AppiumはUIテストにおいて広く利用されているツールです。Androidのみならず、iOSやブラウザ、デスクトップアプリなどにも対応しています。EspressoとUI AutomatorはAndroid公式に提供されているUIテストツールです。利用できる機能やサポートOSが異なるので、組み合わせて利用されることが多いようです。
この他、UI周りの自動テストには必須の仮想デバイスサービスもあります。AnyTestは当社、バルテスの提供するサービスになります。
テスト自動化ツールを選定する際には、アプリの特性やテストの目的に合わせて選定することが重要です。たとえばゲーム分野においては、Playable!というゲーム特化型のUIテストサービスがあります。提供するAndroidアプリのジャンルに合わせたツールの選定が求められます。
また、各ツールの情報量にも注意しましょう。何か困ったことがあった場合に、情報が探し出せることや、質問できるコミュニティの存在は大きな差になります。テストは開発工程の後工程に回りやすく、そこで躓いてしまうと開発全体に影響が出てしまいます。低い学習コストで導入でき、すぐに使いこなせるものを選びましょう。
最後に、テストは一度作ったら終わりではなく、継続的にメンテナンスが求められます。特にUI周りはAndroidアプリの更新に合わせて微調整が行われるケースも少なくありません。大量のテストケースを作成すれば、その分だけメンテナンス工数も増えてしまいます。最近ではAIを用いてテストケースを自動補正してくれるものも登場しています。そういったものも含めて、メンテナンス工数が抑えられるツールを選びましょう。
最新トレンド1: AIと機械学習の活用
最近のトレンドはやはりAIや機械学習です。開発におけるAIの導入は、プログラミングコードの補完と、テスト分野が進んでいます。テストにおいては、主に以下のような利用が期待されています。
- テストケースの自動生成
- UIテストの自動補正
- テスト結果の分析
- テスト結果からのバグ修正の提案
- プロジェクト全体におけるテストの効率化
Androidをはじめとするモバイルアプリでは、UIだけでなくUXや状態管理が重要になります。モバイルアプリ特有の操作(ピンチ、スワイプなど)への対応や、前画面の状態によって表示が変わったりします。そうした場合に、AIを使ったテストツールでは画面の状態のずれを柔軟に吸収し、テストを行ってくれます。
また、既存のコードを利用したテストケース自動生成などもAIを使うことで容易に実現できます。さらに、実際に起こった不具合に対してどの部分をどう修正すべきか提案してくれたり、テスト結果の分析もしてくれたりするのは、AIの得意分野と言えるでしょう。
最新トレンド2: モバイルアプリに特化したCI/CDパイプライン
テスト自動化において必須なのが、CI/CDパイプラインとの統合です。CI/CDパイプラインとは、継続的インテグレーション(CI)と継続的デリバリー(CD)を組み合わせたもので、開発からリリースまでの一連の流れを自動化する仕組みです。
Androidアプリのテストでは、エミュレータや実機を利用してテストを行う必要があります。そのため、特化型のCI/CDを提供するサービスとしてCodemagicやBitriseなどが利用されています。また、アプリのビルドやGoogle Play Consoleへのアップロードを行う際にはFastlaneのようなツールが知られています。
Androidアプリ開発においては、以下のような流れが一般的です。
- プルリクエストをマージする
- ビルドを実行する
- 自動テストを実行する
- テスト結果を通知し、関係者にアプリを配布する
- Google Play Consoleにアップロードする
これらの一連の流れを自動化し、開発効率の向上を図ります。特にテストが通過した後、関係者にアプリを自動配布する流れは、CI/CDパイプラインの統合により実現できます。テストを通過し、ビルドしたアプリを手作業で配布しているのでは、その作業時間が無駄になります。自動テストを通過後、関係者がすぐに確認できれば、迅速なリリースにつなげられるでしょう。
まとめ
今回は、テスト自動化の流れについてAndroidアプリの面から解説しました。Androidアプリは多彩なデバイスで実行されます。デバイスによってはカメラがなかったり、位置情報が無効になっているなど、多彩なテストケースが求められます。そのため、テスト自動化は必須と言えます。
ローコードテスト自動化ツールであるT-DASHでは、Androidアプリのテスト自動化に対応しています。誰でもカンタンにテスト自動化が実現できますので、T-DASHを使ってAndroidアプリの品質向上を実現してください。
誰でもカンタンにテスト自動化ができる時代は、すぐそこまできています。当サイトでは、テスト自動化ツールに興味のある方へ、「テスト自動化 推進ガイドブック」と「テスト自動化ツールT-DASH 基本ガイドブック」のダウンロード資料をご用意しております。ぜひダウンロードいただき、資料をご覧ください。
またテスト自動化ツール「T-DASH」を無料でトライアル利用できる環境もご用意しています。ぜひ、お試しいただき、ツールを活用したテスト自動化に挑戦してみてください。