新しいAndroidエミュレータ装置による継続的なテスト

新しいAndroidエミュレータ装置による継続的なテスト

開発者は日常の開発中に Android エミュレータを定期的に利用して、最新の変更をコミットする前に迅速にテストします。 同様に、開発者は、永続的な組み合わせ (CI) フレームワークでエミュレータを徐々に利用して、より大きな機械化されたテスト スイートを実行しています。 この利用事例をさらに支援するために、私たちは Android エミュレータ コンテナ スクリプトを公開し、次の XNUMX つの苦痛に焦点を当てたエンジニアの遭遇を改善します。

  •  導入可能性 – Android エミュレータの理想的なバージョンを見つけて実行します。
  • デバッグ可能性 – Android エミュレータのリモート ケースからバグを発見します。

展開性

Android ではさまざまな機器やソフトウェアが充実していますが、Android エミュレータも同様です。 いずれにせよ、この幅広い品揃えにより、条件設定が混乱する可能性があります。 エンジニアはどのような方法でエミュレータやフレームワークの画像を入手すればよいのでしょうか? どのようなドライバーが必要ですか? CPU または GPU の高速化の有無にかかわらず、どのようにして実行を続けるでしょうか? (などなど。)

これに対処するために、私たちは次のことを推進しました。

  • Android エミュレータのダウンロード スクリプト – このコンテンツでは、エミュレータ (Linux、Mac OS、および Windows をサポート) と同様に、エミュレータ ピクチャ (AOSP と Google Play サービスの両方) の最新の先進的な配置を提供します。 これを現在の永続的な組み合わせフレームワークに組み込むことができます。 今後は、最新の適応にもかかわらず、正当なテスト結果をより簡単に再現できるように、正当化されたフォームのダウンロードを可能にするこのサポートを改善する予定です。
  • Android エミュレータ Docker ピクチャ ジェネレーター – Android フレームワークの写真とエミュレータは、ストーリーのほんの一部にすぎません。 条件、ドライバー、および事前に導入されたフレームワーク条件については、Docker ピクチャ ジェネレーターを一緒にセットアップします。 これで Android エミュレータが動作する総合的な条件が整います。 Docker ピクチャを起動すると、1) ポート送信と ADB、または 2) gRPC と WebRTC により、エミュレータとの連携が考えられます。 現在、Docker ピクチャ ジェネレーターは Linux で動作することを目的としています。 私たちは Mac OS と Windows についても同様に調査していますので、乞うご期待!

再現性を高めるために、基本的な Dockerfile 形式により、必要なオーダー ライン バナーとフレームワーク条件がますます明確になります (そして、それらからの構造 Docker ピクチャによって再現可能になります)。 機器の速度向上については、に渡される有利なバナーに注意してください。 run.sh; エミュレータの実行時に CPU 高速化にアクセスできることを受け入れます。また、特別な場合は、CPU 高速化 (KVM) を有効にしてホルダーを実行することが期待されます。

デバッグ可能性

エミュレータが実行中で、テストまたはエミュレータが失敗した時点では、実行状態にジャンプして間違いを分析するのは非常に難しい場合があります。 通常、分析には仮想ガジェットとの直接の連携が必要です。 相互作用を指摘するための XNUMX つのメカニズムを提供します。

  1. ADB
  2. 遠隔噴出

ADB の都合上、Docker ビジターからホストに特定のポートを送信することにより、logcat やシェルなどのすべての方向が許可されます。 潮汐ポートは 5555 であるため、より多くの情報を収集し、さまざまなコンパートメントにわたってポートを横方向に分離する最適な方法についてさらなる研究を達成する必要があります。

遠隔からの流出

セキュリティ上の注意: リモート スピルの場合、管理が開始されると、ポート 80/443 で PC に接続できる人は誰でもエミュレータと共同作業できることに注意してください。 したがって、これをオープンサーバーで実行する場合は注意してください。

リモート ガッシングを使用すると、ホルダー内でエミュレータを実行でき、ローカルで実行するのと同じくらい直感的です。 コンパートメント内でエミュレータを実行すると、ADB の指示を利用して見つけるのが難しい問題の調査が簡単になります。 ビデオのストリーミングに使用される WebRTC と、マウスとコンソールの状況をエミュレータに送信するために使用される gRPC を備えたプログラムを使用して、エミュレータにアクセスできます。 遠隔噴出には XNUMX つのコンパートメントが必要です。

  1. 最新のエミュレータを搭載したホルダー
  2. gRPC には Envoy Web 仲介者が必要なホルダー
  3. React Web アプリケーションを提供するための nginx を備えたホルダー

ホルダーはポート 80 と 443 に接続されているため、Web サーバーが実行されていないことを確認してください。 プログラムを主催者として指定した場合、自己採点証書が提供されます。 プログラムをホストとして指定すると、下の図のようなものが表示されるはずです。

もう一度、ホストと関連付けることができる個人であれば誰でもエミュレータと共同作業できることを思い出してください。 したがって、これをオープンサーバーで実行する場合は注意してください。

テストをスケールしてみませんか!

テストは進歩にかかる時間の損失のように見える場合があります。 いずれにせよ、これまでに経験したのと同じ数の準備が整ったエンジニアが見てきたように、合法的なロボット化されたテストは、コード ベースが増加し、徐々に複雑になるにつれて、進歩の速度を拡大することができます。 継続的にテストを行うことで、加えた変更によってアプリケーションが破壊されないことを確信できるようになります。

コメントを残す

TEST1