マネーのAndroidアプリログ解析テスト

ターン:オリジナルます。https://blog.csdn.net/a136332462/article/details/76066909 

テスト結果の一般的な分析 - キーワード検索:

1、応答の問題がログに「ANR」を検索することはできません。

2は、検索 "CRASH" をクラッシュします。

3、メモリは、(さらなる分析が必要な)検索「GC」をリークします。

4、異常な質問検索「例外」(NULLポインタが表示された場合、NullPointerExceptionが、特別な注意が必要です)。

細部

1、ANRの問題:ログ「ANR」(「応答なしのアプリケーションを検索する 」)、 説明バグがあり、ANRは、メインスレッドに対応し、通常5秒以上である、またはBroadcastReceiverが10秒以内に応答しないで、表示されます。これは重大な欠陥です。それを処理するために、他のスレッドからの時間のかかる操作。
2、クラッシュ:検索ログで「例外」


第二に、猿のログの詳細な分析:
電話とログを表示するために開い由来実行ログ生成モンキー、パッケージ名のシード値の猿の実行、実行時間を示す、ログの開始時にテストされます。
まず、前述したように、猿のANRや異常があるかどうかを確認するために、特定のメソッドをテストする必要があります。次のように続いて、我々は、ログ内の特定の情報を分析する必要があります。
ビューは、主に猿がそう見て、最初のスイッチにログインするには、一つの活性は、例えば、次のログが、実行は次の、com.tencent.smtt.SplashActivityであるということですクラッシュやその他の異常がある場合swtichがある間、当該の活動で見つけることができます。


:スイッチ:#Intent;アクション= android.intent.action.MAIN;カテゴリ= android.intent.category.LAUNCHER; launchFlags = 0x10000000;コンポーネント= com.tencent.smtt / .SplashActivity;エンド 
意向{行為の許可//開始= android.intent.action.MAIN猫=
[android.intent.category.LAUNCHER】CMP = com.tencent.smtt / .SplashActivity}パッケージcom.tencent.smttで


次のポインタACTION_DOWNを送る、ログインして、ポインタを送信すると、現在ACTION_UPクリックの代わりに操作を実行するには、
眠っている500ミリ秒の文章ログ間隔はモンキーテストを実行する時間で、スロットル設定、それぞれに代わって、一度登場しましたイベント。


SENDKEY(ACTION_DOWN)// KEYCODE_DPAD_DOWN現在のナビゲーションキーのクリック操作に代わって実行するステップと、
摺動界面を行われている現在の動作を示すポインタACTION_MOVEを送信します。
:ポインタACTION_DOWN送信= 438.0 X = 47.0 Y
:ポインタACTION_UP Xを送る= 438.0Sleepingため47.0 Y = 500ミリ秒
:SENDKEY(ACTION_DOWN):// KEYCODE_DPAD_DOWN 20は:SENDKEY(ACTION_UP):// KEYCODE_DPAD_DOWNSleeping 20は、500ミリ秒である
ポインタを送信します。 X = Y = -2.0 ACTION_MOVE 3.0
:ポインタACTION_MOVE X = 4.0、Y = -3.0送信
ポインタACTION_MOVE X = Yを送る= -5.0 -3.0:
ポインタACTION_MOVE X = 3.0、Y = 4.0の送信
ポインタACTION_MOVE X Yを送る= -4.0ました: 1.0 =
:ポインタACTION_MOVE X = Yを送る= -1.0 -1.0
:Y = -4.0 -2.0 =ポインタACTION_MOVE Xを送信します


テストが成功した場合は猿の実行が完了すると、最後のログは、現在実行中のイベントの数と、それにかかる時間をプリントアウトします; //代表の猿は、実行が完了し終えました。猿が割り込みを実行し、最後のログには、現在実行の数を表示することができます。実行ログのサル完了次のように
注射イベント:6000
:ドロップ:= 0.9トラックボールキーがポインター= 0 = 0 =フリップ
##ネットワーク統計:経過時間= 808384ms(モバイルは0msは、接続された無線LAN、0msnotを808384ms)
//仕上がりモンキー
第三に、一般的な問題の特定分析
ヌルポインタ例外1、
ヌル・ポインタ例外は主にテストプロセス中にNullPointerExceptionチップ、猿を持って、情報は、典型的に(locatはまた、情報を持っている)plog.logに記録されています。
コマンドが異常情報と対応する印刷情報を示す中断猿である場合は、下記のメッセージを見ることができ、いくつかの質問:
Aは、プロセス異常android.process.acore
主として原因にNullPointerException例外情報に、Bを、それは、NULLポインタの登場です、デバッグにacoreプロセスを主導した
ように見える275行をファイルrollAnimate3dRotate.javaから得ることができるように、C、具体的な分析は、ラインがつながることで機能し続けることができます。
com.android.launcher.LauncherAnimator.ScrollAnimate3dRotate.drawFrame //(ScrollAnimate3dRotate.java:275)AT
D、同じアプリケーションの多くのヌルポインタ例外があるかもしれない、それは情報を分析し、比較することができるログ、空の異常事象を指し、 、その後、新しいログ情報は、バグに一緒に追加する必要がない場合は、ログ情報がされている場合、あなたは情報が必要ではないログ追加して続行する必要はありません。
************************************************** ************************
// CRASH:android.process.acore(PID 1339)
//ショートメッセージ:java.lang.NullPointerExceptionが
//ロングMSG:java.lang.NullPointerExceptionが
//ビルドレーベル:アンドロイド:FIH / msm7627_surf / msm7627_surf / F0X:1.6 / DONUT / 0001_0_020:Eの
NG /リリース-キー
//ビルドチェンジ:-1
//ビルド時間:1271397239
// ID :
//タグ:アンドロイドランタイム
//のjava.lang.NullPointerException:
// com.android.launcher.LauncherAnimator.ScrollAnimate3dRotate.drawFrame(ScrollAnimate3dRotate.java:275)で
com.android.launcher.Workspace.dispatchDrawで//(Workspace.java:605)
android.view.ViewGroup.drawChildで// (ViewGroup.java:1524)
// android.view.ViewGroup.dispatchDrawで(ViewGroup.java:1256)
com.android.launcher.DragLayer.dispatchDrawで//(DragLayer.java:258)
// android.viewで。 ViewGroup.drawChild(ViewGroup.java:1524)
android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)で//
android.view.View.drawで//(View.java:6329)
android.widgetで// .FrameLayout.draw(FrameLayout.java:352)
android.view.ViewGroup.drawChildで//(ViewGroup.java:1526)
// android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)で
android.view.View.drawで//(View.java:6329)
android.widget.FrameLayout.drawで//(FrameLayout.java:352 )
// com.android.internal.policy.impl.PhoneWindow $ DecorView.draw(PhoneWindow.java:1901)で
android.view.ViewRoot.drawで//(ViewRoot.java:1333)
android.viewで//。 ViewRoot.performTraversals(ViewRoot.java:1098)
android.view.ViewRoot.handleMessage(ViewRoot.java:1618)で//
android.os.Handler.dispatchMessageで//(Handler.java:99)
android.osで// .Looper.loop(Looper.java:123)
android.app.ActivityThread.main(ActivityThread.java:4203)で//
java.lang.reflect.Method.invokeNativeで//(Method.java:-2)
java.lang.reflect.Method.invoke //(Method.java:521)AT
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:799)AT //
com.android.internal AT // .os.ZygoteInit.main(ZygoteInit.java:557)
dalvik.system.NativeStart.main AT //(NativeStart.java:-2)
**持っているように見えますが、システムイベントは、使用してSEED 5000000 0の7908 ATクラッシュした
2、デバッグ例外
デバッグ障害があるため、アプリケーション自体に起因するエラーの異常です。テストでサルは、同じ情報(locatはまた、その中に情報を持っている)plog.logに記録されています。一般的に、問題が発生し、それはまた、テストする手動テストであってもよいです。
デバッグにプロセスcom.android.browser
あるB、浮上しているIllegalStateExceptionが例外は、一般的に異常なパラメータが呼び出されたときに違法または複数のオカレンスを通過
バグ情報が詳細情報を提出したときCは、一般的に含まれるべきです簡単な開発者の分析とポジショニングのために、次のログ情報。
************************************************** **********************
// CRASH:com.android.browser(PID 5683)
//ショートメッセージ:接続がオープンされていない
//ロングメッセージを:java.lang.IllegalStateException:接続がオープンされていない
ラベルを構築します。//:アンドロイド:FIH / msm7627_surf / msm7627_surf / F0X:1.6 / DONUT / 0001_0_020:ENG /解除、キー
//チェンジを構築:-1
//は時間のビルド:1271397239
// IDを:
//タグ:AndroidRuntime
// java.lang.IllegalStateException:接続がオープンされていない
AndroidHttpClien(android.net.http.AndroidHttpClientConnection.assertOpenで//
tConnection。 Javaの:153)
// android.net.http.AndroidHttpClientConnection.setSocketTimeout(AndroidHttで
pClientConnection.java:195)
android.net.http.Connection.openHttpConnectionで//(Connection.java:364)
android.net.http.Connection.processRequests //(Connection.java:225)AT
android.net.http.ConnectionThread.run(ConnectionThread.java:116)AT //
**持っているように見えますが5000000の34155 ATシステムイベントをクラッシュしましたSEED 0 **使用して
3、低メモリ例外
例外的な状況、一般的に低メモリで、主にOutOfMemoryErrorが発生した場合や結果は、同様に、OutOfMemoryErrorが表示され、メモリの不足プロンプトがスローされ、または解放するために、プロセスの強制終了処理部で殺すためにメモリ空間プロセスの重要なポイントを殺す場合は、もちろん、それはいくつかのアプリケーションが終了し、自動的に意志原因となることがあります。これが起こると、主操作の多数の頻繁な原因の間、再現行う手動で使用することも可能です。
、com.android.elastos.backup異常の過程で発生する
B、(可変リリースを適用するスペースがない、すなわち、複数の関数を呼び出す)は、一般に、より頻繁な操作は例外を引き起こしOutOfMemoryErrorが表示されている
C、バグ情報を提出する際、詳細な情報も簡単に開発者の分析とポジショニングのための次のログ情報が含まれている必要があります。
CRASH //:com.android.elastos.backup(PID 1581)
//ショートメッセージ:ビットマップのサイズは予算でVMを上回ります
//ロングメッセージ:java.lang.OutOfMemoryErrorを:ビットマップのサイズはVMの予算超え
//ラベルを構築します:アンドロイド:FIH / msm7627_surf / msm7627_surf / F0X:1.6 / DONUT / 0001_0_020:ENG /リリース-キー
//はチェンジをビルドします。-1
/ 1271397239:/時間のビルド
// IDを:
//タグ:AndroidRuntime
// java.lang.OutOfMemoryErrorを:ビットマップのサイズは、VMの予算を超え
android.graphics.Bitmap.nativeCreate(Bitmap.java:-2)で//
アンドロイドで//。 graphics.Bitmap.createBitmap(Bitmap.java:464)
android.graphics.Bitmap.createBitmap(Bitmap.java:431)で//
android.graphics.Bitmap.createScaledBitmap(Bitmap.java:336)で//
アンドロイドで// .widget.AbsListView.preScaleBitmapBG(AbsListView.java:2354)
android.widget.AbsListView.drawで//(AbsListView.java:2365)
// android.view.ViewGroup.drawChild(ViewGroup.java:1526)で
android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)で//
android.view.View.drawで//(View.java:6329 )
// android.view.ViewGroup.drawChild(ViewGroup.java:1526)で
android.view.ViewGroup.dispatchDrawで//(ViewGroup.java:1256)
android.view.View.drawで//(View.java: 6329)
// android.widget.FrameLayout.draw(FrameLayout.java:352)で
android.view.ViewGroup.drawChild(ViewGroup.java:1526)で//
android.view.ViewGroup.dispatchDrawで//(ViewGroup.java :1256)
// android.view.View.draw(View.java:6329)で
android.widget.FrameLayout.drawで//(FrameLayout.java:352)
// com.android.internal.policy.impl.PhoneWindow $ DecorView.draw(PhoneWindow.java:1901)で
android.view.ViewRoot.drawで//(ViewRoot.java:1333)
android.view.ViewRootで// .performTraversals(ViewRoot.java:1098)
android.view.ViewRoot.handleMessageで//(ViewRoot.java:1618)
android.os.Handler.dispatchMessageで//(Handler.java:99)
android.osで//。 Looper.loop(Looper.java:123)
android.app.ActivityThread.mainで//(ActivityThread.java:4203)
java.lang.reflect.Method.invokeNativeで//(Method.java:-2)
//でjava.lang.reflect.Method.invoke(Method.java:521)
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:799)で//
com.android.internal.osで//。 ZygoteInit.main(ZygoteInit.java:557)
dalvik.system.NativeStart.main //(NativeStart.java:-2)AT
**システムは、イベントで使用していたように見えるが墜落した143億SEED#0の290
または情報も同じ問題かもしれ次のログ情報の最後の発生をPLOGがあります:
【56351.640641】メモリ不足<3>:プロセス14177(app_process)を殺す247 872子のスコアまたは
[56351.641121]プロセス14177(app_process)を倒した<3>


図4は、異常な応答しない
サル動作は機能的応答しないが、「強制閉鎖」に促さまたは「待機中」に発生し、次のように対応するログ情報を印刷します主時、応答せずに操作を:
A、 com.android.soundrecorderは、プロセスが応答しなく表示されます説明することができ
、通常はプロンプトとkeyDispatchingTimedOut通常発生TimerOut例外、ときに発生する、Bを
クロック:Cが、現在では、uPhoneの電話が頻繁に含むいくつかのモジュールを応答しません。 、カメラ、soundrecorder、broserなど、開発者によると、彼は注意を払うように、他のモジュールもおそらく、テストプロセスを応答しませんされている分析。
D、応答しない、異常な、通常の状況下で修復することが困難と送信イベントの頻度は、最大品質要件から、また関連する場合、要求はオペレーティング無応答周波数と時間出現を最小限。
応答していない//:com.android.soundrecorder(PID 1931)
プロセスでのANR:(最終com.android.soundrecorder中)com.android.soundrecorder
注釈:keyDispatchingTimedOut
CPU使用率:
負荷:8.24 / 8.41 / 8.25
CPU使用率35911msからの前メンバー83ms:
  com.android.soundrecorder :. 3.4%=%+ 0%ユーザーカーネル/フォルト:997マイナー43 MAJある
又は
  メディアサーバ2%= 2%ユーザー+ 0%カーネル/障害:267マイナー3メジャー
  android.process.media:2%= 0%ユーザー+ 1%カーネル/障害:563マイナー194メジャー
  system_server:1%= 1%ユーザー+ 0%カーネル/障害:1279マイナー5メジャー
  com.cootek.touchpal:0%= 0%ユーザー+ 0%カーネル/障害:180マイナー1主要
  sensorserver_ya:0%= 0%ユーザー+ 0%カーネル/障害:47マイナー1主要
  mmcqd:0%= 0%ユーザー+ 0%カーネル
  app_process:0%= 0%ユーザー+ 0%カーネル/障害は:203マイナー1主要
  com.fihtdc.brservice:0%= 0%ユーザー+ 0%カーネル/障害:29マイナー
  kswapd0:0%= 0%ユーザー+ 0%カーネル
  com.android.settings:0%= 0%ユーザー+ 0%カーネル/障害:266マイナー
  ポートブリッジ:0%= 0%ユーザー+ 0 %カーネル/フォルト:19マイナー
  rpcrouter:0%= 0%ユーザー+ 0%カーネル
  com.android.mms:135マイナー8メジャー:= 0%ユーザー+ 0%カーネル/障害が0%
合計:13%= 8%ユーザー+ 4%カーネル+ 0% iowaitの


procrank:
  PID VssとのRss pssのUSSのCMDLINE
 1209 35368K 25376K 15283K 14036K system_server
 1342 32788K 24596K 14899K 14136K android.process.acore
 ......
// procrankステータスが0 WAS
ANRはトレース:
// meminfoのステータスは0 WAS
たように見えるが、イベントでクラッシュした**システムSEED 0 5000000 59034使用する
5、他の異常
、再始動システム異常(システム再起動)、つまり、ログの最後の数行は、電話機が自動的に再起動、または破壊されることを示す、印刷情報の再起動システムが表示され、いくつかあります原因
、動作中に、異常の有無を自動的に携帯電話に再起動される
動作中に図2に示すように、携帯電話を出荷時設定の設定を復元に進み、電話が再起動させる
など、他の理由のために、3を、携帯電話であれば、バックカバー、
B、のRuntimeException異常など同じことがplog.logで対応する印刷情報に見られるとき、java.lang.RuntimeException問題は、多くの場合、無応答後の動作で見られる、またはサービスまたは接続を開始することはできませんアプリケーションは、あなたが特定の問題の具体的な分析を必要とします
android.database.StaleDataException、異常動作を指定アンドロイドデータベース情報は、特定の問題の特定の分析要求値:C、StaleDataException、readException異常ようplog.log情報があります対応する、対応する印刷情報に見ることができます
不正または違法なパラメータの関数に説明として渡された多くの例は、特定の問題を分析する必要があるかD、はIllegalArgumentExceptionその他の異常、
Eを、補足説明や分析と他の

ポイントのカップル:
1、情報の分析をログには、明らかにそれは明らかに異常と特定のログ情報は、それが簡単に関係者を見つけて表示すること、詳細に記載された情報に別々に添加されることを示したかを説明することができます簡単にバグ情報を願っています。
2、新たな課題モンキーテスト用に提出購入
Aを、最初のログ情報の分析が必要です
バグが提出されているかどうかを確認するために、もう一度、bは?新しいバグかどうかは、一貫性の提出された質問を使い果たし?
Cは、そのような矛盾は、その後、同じ問題に属し、nullポインタ例外として、その後、一緒にバグ情報に問題コメントに関する情報を記録し、ログ情報のすべての追加置かれ
、その後、dは、そうでない場合、また同じ問題に属しています、あなたは新しいバグを提出することができます
3は、Javaプログラミングでは、汎用的な例外がxxxの例外情報をスローされます、あなたは、あなたが特定の問題を分析する必要がある特定の例外をxxxに関連する判断や分析をフォローアップすることができます。

6、共通の異常のjava

  • 算術例外クラス:ArithmeticExecption
  • nullポインタ例外クラス:NullPointerExceptionが
  • タイプキャスト例外:ClassCastExceptionが発生
  • 負の配列インデックスの異常:NegativeArrayException
  • クロスボーダーの異常な配列の添字:ArrayIndexOutOfBoundsExceptionが
  • 異常セキュリティ侵害:SecturityException
  • ファイルの末尾例外:EOFExceptionでは
  • 例外はファイルが見つかりません:FileNotFoundExceptionを
  • 数異常に文字列:NumberFormatExceptionが
  • オペレーションデータベース例外:のSQLException
  • 入力と出力の異常:IOExceptionが
  • 不正アクセスエラー:ないIllegalAccessError
  • メモリエラー:OutOfMemoryErrorが発生
  • スタックオーバーフローエラー:StackOverflowErrorが1

私たちは、イベントのタイプを指定しない場合は、イベントの種類を制御するための4つの.percent関連するコマンド。次のようにレポートの生成は、イベントの割合は次のとおりです。


//イベントの割合:

// 0:15.0%

// 1:10.0%

// 2:2.0%

// 3:15.0%

// 4:-0.0%

// 5:25.0%

// 6:15.0%

// 7:2.0%

// 8:2.0%

// 9:1.0%

// 10:13.0%


ここでイベントは、すなわち、10種類に分けられます。

0:タッチイベントの割合、その引数--pctタッチ

1:割合スリップイベント、すなわち--pct-動きパラメータ

2:--pct-pinchzoomをパラメータイベントの割合をスケーリング

3:パーセンテージトラックボールイベント、その引数--pct、トラックボール

4:パーセントスクリーン回転イベント

5:パーセンテージ基本的なナビゲーションイベント、その引数--pct-NAV

6:パーセンテージメインナビゲーションイベント、その引数--pct-majornav

7:--pct-SYSKEYSをパラメータシステムイベントの割合

8:開始イベントの活動の割合、--pct-appswitchその引数

9:--pctフリップをパラメータイベントのキーボードフリップ割合

10:--pct-anyeventをパラメータ他のイベントの割合

 



おすすめ

転載: www.cnblogs.com/wuzm/p/10965762.html