前回記事「ゼロから始める!PlaywrightでのAndroidテスト環境構築ガイド(Mac編)」で自動テストにADB(Android Debug Bridge)を活用しましたが、
Androidアプリのテスト作業効率化にはADBの活用が不可欠です。
ADBを使えば、PCからAndroid端末を直接操作してアプリケーションのインストールやログ収集ができるほか、前回記事のような自動テストの作成や実行がスムーズに行えます。
ADBを自動テストに組み込むことで、手動テストの負担を減らし、安定した検証環境を構築できるのが大きなメリットです。
本記事ではソフトウェアテストに使えるADBの基本コマンドを紹介します。
ADBとは?ADBの基本概念
ADB(Android Debug Bridge)は、Android端末とPC間で通信を行い、Android端末の操作やログ収集、アプリケーションのインストールや削除などができるツールです。
Android開発者にとってADBは必須のツールですが、テストエンジニアにとってもテストの効率化やテスト自動化において非常に有用なツールです。
ADBの概要
ADBはコマンドラインを使用してAndroidを操作でき、手動での作業の自動化をスムーズに行えます。
また、テスト自動化においても、効率的にアプリケーションのインストールや起動、ログの収集を行えます。
Android端末とPCの接続はUSBケーブル経由もしくはWi-Fi経由で接続しコマンド実行をします。
ADBのインストール方法
ここでは、ADBを使用するためのインストール方法について解説します。
Windowsでのインストール
ゼロから始める!Appium + Python環境構築ガイド(Windows対応)の以下に詳細が載っていますので参考にしてください。
Macでのインストール
- Android Studioをインストールします
Android Studio とアプリツールのダウンロード – Android デベロッパー | Android Developers - Android Studioを起動し、上部メニューの Android Studio > Settings… でSettings画面を開きます
- Settings 画面の左のメニューから Language & Frameworks > Android SDK をクリックし上部の Android SDK Location を確認します(標準であれば、/Users/ユーザー名/Library/Android/sdk)
- 以下のコマンドで、上の 3 で確認した Android SDK Location のパスを通します
% echo 'export PATH=$PATH:/Users/ユーザー名/Library/Android/sdk/platform-tools' >> ~/.zshrc
- 以下のコマンドでパスを読み込ませ設定を反映させます
% source ~/.zshrc
- インストールが完了しているはずなので、ADBが使える状態か確認します
バージョンが表示されれば完了です% adb version Android Debug Bridge version 1.0.41 Version 35.0.2-12147458 (省略)
USBケーブルでの接続
Android端末とPCの接続自体はシンプルにUSBケーブルで接続するだけで可能です。
ただし、Android側でUSB接続を許可していないとPCから認識することができません。
Android側でUSBを許可するためには、開発者向けオプション の USBデバッグ を有効にする必要があります。
開発者向けオプションやUSBデバッグに関しては 公式サイト をご確認ください。
デバイスの開発者向けオプションを設定する | Android Studio | Android Developers
ネットワーク越しでの接続
Android端末とPCの接続は通常USBで行いますが、Wi-Fi経由で接続することも可能です。
ここではWi-Fi経由での接続方法を解説します。
- Android端末とPCを同じWi-Fiに繋ぎます
- Android端末とPCをUSBで接続し、以下のコマンドで接続できていることを確認します
% adb devices List of devices attached デバイスのシリアル番号 device # 例 % adb devices List of devices attached AB1234CDEF device # 上記シリアル番号はダミー
ここに表示されるデバイスのシリアル番号は電話アプリで *#06# と入力し、表示されるデバイス情報画面でも確認できます
- 以下のコマンドを実行し、TCP/IPモードを有効にします(デフォルトのUSBモードも維持されます)
ポート番号は 5555 〜 5585 の範囲で任意の番号を指定します% adb tcpip ポート番号 # 例 % adb tcpip 5555 restarting in TCP mode port: 5555
- 以下のどちらかの方法でAndroid端末のIPアドレスを確認します
- Android端末の 設定アプリ > ネットワークとインターネット > インターネット > 接続済みのWi-Fiアクセスポイントの歯車アイコン > IPアドレス で確認
- 以下のコマンドで確認
% adb shell 'ip addr show wlan0 | grep "^ *inet "' inet 192.168.1.100/24 brd 192.168.10.255 scope global wlan0 # 上記IPアドレスはダミー
- 以下のコマンドでPCからAndroid端末にWi-Fi経由で接続します
% adb connect 取得したAndroid端末のIPアドレス:adb tcpipで指定したポート番号 # 例 % adb connect 192.168.1.100:5555 connected to 192.168.1.100:5555
- Wi-Fi経由接続完了
これでUSBケーブルを抜いてもADBコマンドが実行できます(USBケーブルを接続したまま adb devices を実行するとUSBモードとしての接続とTCP/IPモードとしての接続の両方が表示されます) - Wi-Fi経由の接続の解除
Wi-Fi接続を解除したい場合は以下のコマンドを入力します% adb disconnect disconnected everything
- adb install -r <APKファイルのパス>
データを保持したまま、既存のアプリケーションを再インストール - adb install -d <APKファイルのパス>
ダウングレードを許可してインストール - adb install -g <APKファイルのパス>
インストール時にすべての権限を自動で付与 - adb uninstall -k <パッケージ名>
アプリケーション削除後も、データとキャッシュのディレクトリを保持します。
再インストール後もアプリケーションのデータを維持したい場合に便利です。 - adb shell pm list packages -3
サードパーティ製のパッケージ(Google Playストアからインストールしたアプリや自作アプリ)のみ表示します。 - ログイン情報をリセットし、新規ユーザーの状態でテストを行う
- 初回起動のみ表示されるチュートリアル等の表示確認を繰り返し行う
- キャッシュや意図しない環境の影響を排除し、動作確認を行う
- 不具合の再現テストの前にアプリをクリーンな状態に戻す
- adb logcat | grep “特定のキーワード”
- adb shell ls –l
詳細情報を表示 - adb shell ls –a
隠しファイルも含めて表示 - adb shell mkdir –p
親ディレクトリも同時に作成 - adb shell -r
ディレクトリも削除する - adb shell -f
確認なしで削除
ADBの基本コマンド一覧と使い方
Android端末とPCを接続して操作するADBの基本コマンドを紹介します。
デバイス接続
ADBを使うためには、まずAndroid端末とPCを接続する必要があります。
ここでは、ADBを使ってデバイスの接続状態を確認したり、上記ネットワーク越しでの接続で出したコマンドについて解説します。
adb devices
adb devices コマンドは、PCに接続されているAndroid端末の一覧を表示するためのコマンドです。
このコマンドを実行することで、接続されているデバイスのシリアル番号とその状態を確認することができます。
開発者向けオプション の USBデバッグ が無効(デフォルト)になっているとadb devicesでデバイスが表示されません。
adb devicesでデバイスが表示されない場合、USBデバッグの状態やUSBケーブルを確認してみてください。
adb connect <Android端末のIPアドレス:ポート番号>
adb connect コマンドは、ネットワーク越しにAndroidデバイスとPCを接続するためのコマンドです。
通常、ADBはUSB接続を介して動作しますが、adb connectを使用することで、Wi-Fi経由でも端末を接続することができます。
IPアドレスなどを指定したコマンド例は adb connect 192.168.1.100:5555 の形になります。
adb disconnect <Android端末のIPアドレス>
adb disconnect は上記コマンドとは逆に、ネットワーク越しに接続したAndroid端末との接続を切断するためのコマンドです。
IPアドレスを指定せず adb disconnect だけで実行することも可能で、その場合はすべてのネットワーク接続が解除されます。
アプリケーション操作系コマンド
ADBを使用することで、Android端末上のアプリケーションをPCから直接操作することも可能です。
アプリケーションのインストールやアンインストール、起動、ログ収集など、テストに必要な操作を効率よく実行できるのが特徴です。
特に、テスト自動化の際には、スクリプトの中でADBコマンドを活用することで、テストの準備や結果の確認をスムーズに行うことが可能です。
adb install <APKファイルのパス>
adb install コマンドは、PC上にある APKファイル をAndroid端末にインストールするためのコマンドです。
以下のオプションを指定することも可能です。
adb uninstall <パッケージ名>
adb uninstall コマンドは、Android端末にインストールされている指定のアプリケーションを削除するためのコマンドです。
以下のオプションを指定することも可能です。
adb shell pm
adb shell pm コマンドはAndroidの Package Manager を操作するコマンドです。
このコマンドにサブコマンドをつけて実行します。このコマンド単独で動かすことはありません。
adb shell pm list packages
adb shell pm list packages コマンドは、Android端末にインストールされている アプリケーションのパッケージ名 の一覧を取得します。
adb shell pm list package(最後のsなし) でも実行できます。
一覧は順不同で出力されるため、 adb shell pm list packages | sort とするとパッケージ名でソートされ見やすくなります。
また、大量のパッケージ名が表示されるので、adb shell pm list packages | grep “検索ワード” などで絞り込むことができます。
以下のオプションを指定することも可能です。
adb shell pm clear <パッケージ名>
adb shell pm clear コマンドは、指定のアプリケーションのデータを削除します。
これにより、アプリケーションの設定やキャッシュ、ログイン情報などが初期化され、インストール直後の状態になります。
設定アプリの アプリ > 該当アプリ > ストレージとキャッシュ > ストレージを消去 と同じ効果です。
テストでの活用例
adb shell am
adb shell am コマンドは、Androidの Activity Manager を操作するコマンドです。
このコマンドにサブコマンドをつけて実行します。このコマンドも単独で動かすことはありません。
adb shell am start -n <パッケージ名>/<アクティビティ名>
adb shell am start コマンドは、指定のアプリケーションを起動します。
アクティビティ名の確認方法は前回記事「ゼロから始める!PlaywrightでのAndroidテスト環境構築ガイド(Mac編)」を参考にしてください。
ファイル転送系コマンド
ADBを使用すると、PCとAndroid端末間でファイルの転送を簡単に行うことができます。
テスト時に取得したスクリーンショットの転送や、ログファイルの転送、テストデータの配置など、様々な場面で活用できる便利なコマンドです。
adb push
adb push コマンドは、PCからAndroid端末にファイルやディレクトリを転送するコマンドです。
テストデータやアプリケーションの設定ファイルなどを端末に転送する際に利用できます。
adb pull
adb pull コマンドは、Android端末からPCにファイルやディレクトリを転送するコマンドです。
テスト実行後のログファイルやスクリーンショット、アプリが生成したデータなどをAndroid端末から回収する際に利用できます。
システム操作系コマンド
ADBを使用すると、Android端末のシステムレベルでの操作も可能です。
端末のログ確認や再起動やファイル操作など、テスト環境の準備や制御に役立つコマンドが揃っています。
これらのコマンドを活用することで、テスト自動化の幅が広がります。
adb logcat
adb logcat コマンドは、Android端末のシステムログを表示するためのコマンドです。
アプリケーションのクラッシュ情報やデバッグ出力、システムの警告やエラーメッセージなどを確認できます。
標準出力は膨大なため、以下のように grep で絞り込むを使うと便利です。
adb reboot
adb reboot コマンドは、Android端末を再起動するコマンドです。
テスト中に端末の状態をリセットしたい場合や、特定の設定変更後に再起動が必要な場合に利用します。
テスト自動化の中では端末の状態をクリーンに保つために活用できます。
adb shell
adb shell コマンドは、Android端末上でLinuxシェルを起動し、コマンドを直接実行できるようにするコマンドです。
このコマンドを実行すると、Android端末内のシェルにアクセスでき、様々なシステムやファイル操作が可能になります。
adb shell シェルコマンド のように直接コマンドを実行させることも可能です。
adb shell cp <コピー元> <コピー先>
adb shell cp コマンドは、Android端末内のファイルやディレクトリをコピーするためのコマンドです。Android端末内のファイルを別の場所に複製したい場合に使用します。
テストデータの複製やバックアップの作成に活用でき、ワイルドカード「*」を使用して複数のファイルを一度にコピーすることも可能です。
adb shell ls
adb shell ls コマンドは、Android端末内の指定ディレクトリにあるファイルやディレクトリの一覧を表示します。
以下のオプションを指定することも可能です。
adb shell cd <パス>
adb shell cd コマンドは、Android端末内のカレントディレクトリを変更します。
adb shell pwd
adb shell pwd コマンドは、Android端末内の現在のカレントディレクトリのパスを表示します。
テスト実行中に正しいディレクトリにいることを確認したり、絶対パスを取得したりする場合に使用します。
adb shell touch <ファイル名>
adb shell touch コマンドで、Android端末内に空のファイルを作成します。
既存ファイルを指定した場合は、そのファイルのタイムスタンプが更新されます。
テスト用のダミーファイル作成や、ファイルの最終更新日時を変更してアプリの振る舞いをテストする場合などに活用できます。
adb shell mkdir <ディレクトリ名>
adb shell mkdir コマンドで、Android端末内に新しいディレクトリを作成します。
以下のオプションを指定することも可能です。
adb shell rm <ファイル名>
adb shell rm コマンドで、Android端末内のファイルやディレクトリを削除します。
以下のオプションを指定することも可能です。
adb shell settings put global stay_on_while_plugged_in 7
このコマンドで、充電中に画面をスリープモードにしない設定にします。
開発者向けオプションの スリープモードにしない と連動します。
adb shell settings put global stay_on_while_plugged_in 0
このコマンドは上記コマンドとは逆に、充電中に画面をスリープモードにする設定にします。
開発者向けオプションの スリープモードにしない と連動します。
adb shell settings put system show_touches 1
このコマンドは、Android端末上にタップ位置を示すマウスカーソルのようなものを表示させるためのコマンドです。
タッチ操作を視覚的に確認できるため、特に自動テストの際にプログラムがどこをタップしているかを把握するのに有効です。
テスト中に画面上のタップ位置を確認することで、意図しない場所をタップしている場合や、エラーが発生している原因を特定しやすくなります。
開発者向けオプション の 入力 > タップを表示 と連動します。
ただ、開発者向けオプション画面での反映には、一度スリープ状態にするもしくは画面移動する等の画面更新処理を行う必要があります。
adb shell settings put system show_touches 0
このコマンドは、上記コマンドとは逆に、タップ位置表示をオフにしてデフォルト状態に戻すコマンドです。
開発者向けオプション の 入力 > タップを表示 と連動します。
こちらも開発者向けオプション画面での反映には、一度スリープ状態にするもしくは画面移動する等の画面更新処理を行う必要があります。
まとめ
ADBを使うことで、PCからAndroid端末を直接操作し、アプリケーションのインストールやログ収集、ファイル転送、システム操作などを効率的に行うことができます。
ADBのコマンドは開発や手動テストの手助けだけでなく、コマンドをテスト自動化スクリプトに組み込むことで、手動テストの負担を減らし、より安定した検証環境を構築できます。
ぜひADBコマンドを活用してテスト作業の効率化をしていきましょう。
GENZでは、自動化でのお悩みを解決するサービス「G-SAT(ジー・サット)」もご提供しております。
ご興味のある方は、ぜひお問合せください!
<過去の記事>
ゼロから始める!PlaywrightでのAndroidテスト環境構築ガイド(Mac編)
ゼロから始める!Appium + Python環境構築ガイド(Windows対応)
Amazon AWS Lambda(Pythonと関数URL)で簡単な静的Webサイトを作ってみた
「生成AIで自動化」だけでテストは十分?自動・手動の最適バランス
自動化だけがすべてじゃない?!テストプロセス効率化の最適解