【Android】完璧なアプリを作るためのテスト方法まとめ

ログ印刷ログ

android.utilすべての開発者は、パッケージLog印刷ログの使用Androidを認識する必要があります。ログは、、、、、などのメソッドLog呼び出すことによってコンソールに出力できます。コンソールに出力されるログの数が制限を超えています今後、これ以上ログは出力されず、欠落しているログはコンソールに表示されません。vdiweLogcatLogLogcatString.length4061length4062Logcat

この問題を解決するには、ロガーコンポーネントを使用することをお勧めします。

1. プロジェクトのインポート

implementation 'com.orhanobut:logger:2.2.0'

2. 初期化

Logger.addLogAdapter(AndroidLogAdapter())

3. 使用する

Logger.d("hello")

logger印刷されるログがlengthsize より大きい場合4061、自動的に新しい行に折り返されて4062印刷が続行されます。

Junit 単体テスト

単体テストは、アプリケーション テスト戦略における基本的なテストです。コードを単体テストすることで、単一ユニットのロジックが正しいかどうかを簡単に検証できます。各ビルド後に単体テストを実行すると、コード変更による変更を迅速に把握して修正するのに役立ちます。 (再構築、最適化などによって引き起こされる回帰問題)。

一連の記事:
Android 単体テストについてはこの記事を読んでください
Android 単体テスト (1): 概要
Android 単体テスト (2): 単体テストとは
Android 単体テスト (3): テストの難しさと解決策の選択
Android 単体テスト (4) ) : JUnit による
Android 単体テストの紹介 (5): JUnit の高度なAndroid 単体テスト (6): Mockito によるAndroid 単体テストの
学習(7): Robolectric によるAndroid 単体テストの紹介 (8): 非同期コードのテスト方法

デバッグブレークポイントのデバッグ

Debugブレークポイント デバッグの場合は、コードをテストする必要がある行の左側にブレークポイントを配置します。デバイスを接続した後、Android Studio の右上隅にあるメニュー バーをクリックするか、アプリケーションの起動後に をクリックしてオンにしDebug appますAttach Debugger to Android Process。ブレークポイントのデバッグ。

ここに画像の説明を挿入します
Debugブレークポイントのテストを行うだけでなく、forループ内でブレークポイントの変数値を指定したり、if指定した判定値を変更したりすることもできます。

ここに画像の説明を挿入します
ここに画像の説明を挿入します

具体的な使用方法の詳細については、次の記事を参照してください。
1.アプリをデバッグする
2. Android デバッグの実践と原則の詳細な説明

その他の参考記事
1. Web アプリのデバッグ
2. WorkManager のデバッグ

サルのストレステスト

Monkeyエミュレータまたはデバイス上で実行され、擬似ランダムなユーザー イベント (クリック、タップ、ジェスチャなど) および多くのシステム レベルのイベントのストリームを生成するプログラムです。Monkey開発中のアプリケーションは、ランダムかつ反復可能な方法でストレス テストを行うことができます

Monkey使用方法は、スクリプトADBを介したAndroid システム コマンドの実行に基づいていますコンピュータのコマンド ラインまたはスクリプトを使用して起動できます。エミュレータ/デバイス環境で動作するため、その環境内から起動する必要があります。これを行うには、各コマンドに接頭辞を付けるか、単にコマンドを入力します。ADBshellMonkeyMonkeyshelladb shellshellMonkey

Monkeyイベントは実行時に生成され、システムに送信されます。また、テスト対象のシステムを監視し、次の 3 つの特別な条件を探します。

  • 1 つ以上の特定のパッケージでの実行を制限している場合はMonkey、他のパッケージへのアクセスを監視し、ブロックします。
  • アプリがクラッシュするか、未処理の例外を受け取ると、Monkeyアプリは停止してエラーを報告します。
  • アプリが「アプリケーションが応答していません」エラーを生成した場合、アプリMonkeyは停止してエラーを報告します。

基本的な使い方:

adb shell monkey -p your.package.name -v number.of.events

Monkey疑似ランダムなユーザー イベントを生成できるだけでなく、ユーザー イベントのトリガー場所を指定することもできます。詳細については、以下を参照してください。

1. UI/Application Exerciser Monkey
2. Android 自動テスト入門 (1) Monkey と MonkeyRunner
3. 【Geek Academy】Android テスト
4. Android View apk パッケージ名、現在のアクティビティ名など

プロファイラー パフォーマンス アナライザー

Android Studio 3.0 以降の Android Profiler は、Android Monitor ツールを置き換えます。Android Profiler ツールは、アプリケーションの CPU、メモリ、バッテリー リソースの使用状況を理解するのに役立つリアルタイム データを提供します。

Profilerチュートリアル: Android Profiler
Android Studio 3.0 は Android Profiler を使用してアプリケーションのパフォーマンスを測定します

ADB無線接続装置

なぜ紹介するのかADBADBただの無線接続機器ではないでしょうか?データケーブルでデバイスを接続した方が安定しないでしょうか? なぜそれを使うのですかADB

ADB正式名はAndroid Debug Bridge、デバッグブリッジの役割を果たすことができるということです。

ADBLAN内のIPアドレスを介してデバイスに接続し、Android Studioからデバイスのアプリケーションのインストールやデバッグ、デバイスの一連の操作を行うことができますが、ネットワークが不安定な場合、時間によっては接続が中断される場合があります。時間に。

携帯電話では、データ ケーブルを使用してデバイスを接続する方が比較的便利ですADB。Android 11 以降のデバイスでは、QR コードをスキャンしてワイヤレスで接続することもできます。ただし、この状況は小型デバイスと、コードをスキャンするためのカメラを備えたデバイスおよびシステム バージョン Android 11 以降に関連したものです。メーカーによって改造された一部の Android デバイスには Type-c インターフェイスがありません。一部のデバイスにはカメラが搭載されていますが、Android バージョン 10 を超えるデバイスはほとんどありません。TV デバイスについては、Type-c インターフェイスもカメラもありません。機器をインストールしてデバッグしたい場合は、これが唯一の方法ですADB

ADBデバイスのデバッグ接続については、私の記事を参照してください: ADB は Android デバイスをワイヤレスで接続します

さらに、Huawei の製品HDBも使用してADB接続できます。

Appium 自動テスト

Appiumは、ネイティブ、ハイブリッド、およびモバイル Web アプリケーションの自動テストのためのオープンソースのテスト自動化フレームワークです。

Appium接続されたデバイスのデバッグについては、私の記事「 App Automation Testing - Use of Appium」を参照してください。

私個人としては、Appium限界ですMonkeyAppium

上記に加えてAppiumMonkey誰もが選択できる多くの自動テスト ツールがあります。最もGoogle推奨されるものは、Espresso優れた自動テスト フレームワークでもあります。欠点は、コードを記述する必要があることです。興味がある場合は、次のことを行うことができます。詳しくはこちら: Android 自動テスト入門 (3) Espresso

BlockCanary インターフェイスのスタック検出

BlockCanaryこれは、Android プラットフォームの非侵入的なパフォーマンス監視コンポーネントです。アプリケーションは、抽象クラスを実装し、コンポーネントに必要なコンテキストを提供するだけで済みます。アプリケーションの使用時にメインスレッド上のさまざまな速度低下の問題を検出し、さまざまなコンポーネントによって提供される情報を使用して、ジャムの原因を分析できます。

BlockCanary使い方は非常に簡単で、build.gradle依存関係をインポートして初期化するだけです。

dependencies {
    
    
	implementation 'com.github.markzhai:blockcanary-android:1.5.0'
	// 仅在debug包启用BlockCanary进行卡顿监控和提示的话,可以这么用
	// debugImplementation 'com.github.markzhai:blockcanary-android:1.5.0'
	// releaseImplementation 'com.github.markzhai:blockcanary-no-op:1.5.0'
}
class MyApplication : Application() {
    
    

    override fun onCreate() {
    
    
        super.onCreate()
        BlockCanary.install(this, BlockCanaryContext()).start()
    }
}

ラグ ログのアップロード、ラグしきい値の調整などの一連の要件がある場合は、継承クラスを通じてBlockCanaryContext 関連するmethod実装を書き直すことができます。

デバイス上でコードを実行すると、メイン スレッドがブロックされると、上部の通知バーにブロック通知が表示されます。クリックすると、ブロックの詳細が表示されます。次の図に示すように、MainActivity のメイン スレッドの 16 行のコードには、1008 ミリ秒間ブロックされるという問題があります。

ここに画像の説明を挿入します

注: Android のバージョンによっては、BlockCanary.install(this, BlockCanaryContext()).start()インストール プログラムのインストール時にエラーが発生する場合があります。エラーが発生した場合は、別のデバイスでテストすることをお勧めします。

詳細については、AndroidPerformanceMonitorを参照してください。

アプリ検査 アプリ検査

App InspectionAndroid API 26 以降のデバイスは、Android Studio の下部にあるメニュー バーを介しておよび関連データをApp Inspection実行時に観察できます。DatabaseNetworkBackground Task

データベースインスペクター

Database Inspectorローカル データベース データを観察するために使用されます。

ここに画像の説明を挿入します

具体的な詳細については、「データベース インスペクターを使用したデータベースのデバッグ」を参照してください。

ネットワークインスペクター

Network Inspectorこの機能は、ネットワーク リクエスト関連のデータを観察するために使用され、パケット キャプチャに似ています。現在、およびネットワーク接続ライブラリNetwork Inspectorのみがサポートされています。アプリが別のネットワーク ライブラリを使用している場合、でネットワーク アクティビティを表示できない可能性があります。HttpsURLConnection OkHttpNetwork Inspector

ここに画像の説明を挿入します
具体的な詳細については、「Network Inspector を使用してネットワーク トラフィックを検査する」を参照してください。

バックグラウンド タスク インスペクター

Background Task Inspectorアプリケーションのバックエンドを視覚化、監視、デバッグできますworker

具体的な詳細については、「WorkManager ワーカーをデバッグするためのバックグラウンド タスク インスペクターを使用した
WorkManager コード サンプル」を参照してください。

Leakcanary メモリ リーク (ML)、メモリ オーバーフロー (OOM) の検出

メモリ リーク (略して ML) とは、プログラムがメモリを適用した後、適用されたメモリ空間を解放できず、システムが時間内にメモリを再利用できず、他のプロセスが使用するメモリを割り当てることができないことを意味します。通常、メモリの再利用が間に合わない回数が少ない場合はプログラムに影響はありませんが、メモリ自体が比較的小さく、メモリを何度も正常に再利用できない場合は、メモリの割り当て不足が発生し、最終的にはメモリオーバーフローを引き起こします。

メモリ不足 (略して OOM) とは、プログラムがメモリを申請したときに、申請者が使用できる十分なメモリがなく、その結果、データをメモリに正常に保存できなくなることを意味します。

LeakcanaryAndroid システム用のメモリ リーク検出ライブラリです。

Leakcanary依存関係を追加することで使用できます。アプリケーションがデバイスにインストールされると、同時にアプリもインストールされます。Leaksアプリケーションの実行中にメモリ リークが検出された場合、Leaks通知バーでメモリ リークの通知が表示されます。

dependencies {
    
    
	debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.10'
}

具体的な詳細については、以下を参照してください。

おすすめ

転載: blog.csdn.net/baidu_41616022/article/details/129712597