正確なmonkeyテストの方法


著者:王薇、テンセント雲と知恵産業高級エンジニアの商業転載テンセントWeTestに連絡して授権を得て、非商業転載は出典を明記してください.テキストリンク:https://wetest.qq.com/lab/view/413.html

WeTestガイド


モバイルエンドアプリケーションのmonkeyテストを知っていると思いますが、monkeyテストのあまりにもランダムな特性に困っていることはありませんか.少なくとも、私たちのようなインタフェースコントロールが少なく、コントロールの位置が偏っているappの使用では、テストの有効性が大幅に低下しています.そこで本稿では,主にこの問題に対して解決策を提供する.
_

1.問題の背景


Monkeyテスト:Android自動化テストの1つの手段であり、簡単に言えばサルのように乱点し、ボタン入力、タッチスクリーン入力、ジェスチャー入力などの擬似ランダムなユーザーイベントストリームをシステムに送信するランダム性テストであり、ソフトウェアの健壮性と安定性をテストするために、通常アンドロイドアプリケーションの圧力テストに用いられる.
従って,我々の製品もこのような従来のmonkey手段を用いてapp安定性試験を行い,しばらく使用した後,実際の問題は発見されなかった.しばらくの間の実行過程を観察することによって、私たちのappのいくつかのページコントロールのレイアウトは比較的に上と下のエッジに偏っているため、中間には大きなボタンしかありません.このように、中間の大きなボタンの命中率が高いと、同じページに入ることが多く、他のページとボタンの機能はほとんどクリックされません.この従来のmonkeyテストコントロールのヒット率は低すぎます!
市場には似たようなレイアウトのappが多く、従来のmonkeyテストを採用する際にもこのような問題があると信じています.

2.ソリューション


appページレイアウトのコントロールの位置、属性などの情報はandroid sdkツールパッケージのuiautomatorviewerで使用できることを知っています.batはmonkeyテスト時にこれらのコントロールの位置情報を得ることができれば、コントロールの正確なクリックを実現することができます.Android sdkはこのコマンド「adb shell uiautomator dump」を提供し、現在のactivityレイアウトファイルをxmlファイルにdumpすることで問題が解決します.
dumpレイアウトファイル:
手に入れたwindow_dump.xmlコンテンツ:




...


uiautomatorviewer.batコントロールのプロパティを表示するには、次の手順に従います.
しかし、もう一つの問題は、xmlのコントロールが非常に多く、各コントロールがクリックできるわけではありません.一つずつクリックしようとすると、実行効率も非常に遅く、予想に合わないということです.幸いなことに、コントロールにはclickableプロパティがあり、trueに等しい場合は、コントロールの可点、逆不可点を示します.では、コントロール情報xmlファイルの「clickable=true」のコントロールをフィルタリングし、これらのコントロールの位置を計算してクリックすると、正確なクリックが実現します.これで問題は完璧に解決された.
たとえば、実行プロセスは次のようになります.
もちろん、実際には、コントロールのクリック順の問題もあり、クリック順が適切でなければ、頻繁にクリックされるコントロールもあり、クリックできないコントロールもある.これには、現在のページでクリック可能なコントロールのリストで、ランダムにクリックしたり、順番にクリックしたり、各ページのコントロールのディレクトリツリーを保存したりして、深さループクリックを行うなど、実際のテストターゲットに基づいて実行ポリシーを指定する必要があります.
ランダムテストが完了すると、実行プロセスを復元する必要があり、発見された問題を位置決めする必要がある場合があるので、実行中に、コントロールをクリックするたびにクリック座標のマーク、スクリーンショットを行い、テストが完了すると、これらのスクリーンショットに基づいてランダムテスト全体のプロセスを完璧に復元することができ、問題の位置決めを大幅に簡素化することができます.たとえば、次の図は、実行中の連続スクリーンショットです.
→→
図中、赤点位置はクリック位置であり、実行過程を直感的に示している.

まとめ


本明細書で述べたスキームはmonkeyテストがコントロールレイアウトの不均衡なapp上で有効性の低い問題をうまく解決した.同時に、適応的なランダムテスト手段を実現し、すなわち、異なるappに対して異なるランダムテストスクリプトを記述する必要がなく、すべてのappのランダムテストに対するテストコードのセットを実現した.
_
自動化された互換性テストサービスは、クラウドの自動化された互換性サービスを提供し、クラウドの100台の本物を提出し、並列テストを行います.ゲーム/アプリケーションの互換性とパフォーマンスの問題を迅速に発見し、アンドロイドの主流機種をカバー
クリック:https://wetest.qq.com/product/auto-compatibility-testing詳細はこちら.
もし使用中に何か質問があれば、テンセントWeTest企業QQ:285235015に連絡してください.