Monkey測試中卡在開機階段的問題

2021-10-02 19:37:38 字數 2303 閱讀 9205

1.正常情況下,當手機非第一次重啟,kernel的hang_monitor 會正常啟動:

2. 當手機發生fwr後,由於kernel會正常執行,所以hang_detect的機制理論上會正常工作;

// hang_detect的工作機制流程

kernel-3.18/drivers/misc/mediatek/aee/aed/monitor_hang.c

以上是在monkey測試中發現一例卡在開機階段的問題。分析如下:

灰屏的問題現場debug分析如下:

1. 初步分析問題原因是由於在開啟過程中,啟動displaymanagerservice後,去等待螢幕亮起時,由於需要與sf進行ipc通訊;但sf binder現場耗盡無法處理,導致一直卡在開機階段;

//啟動display階段

06-06 17:44:09.958 10128 10128 i systemserver: waitfordisplay

06-06 17:44:19.343 10128 10140 i systemserver: msftime=0

06-06 18:14:01.059 10128 10140 i systemserver: msftime=0

//displaymanagerservice onbootphase 階段

06-06 17:44:09.954 10128 10128 i systemservicemanager: starting com.android.server.display.displaymanagerservice

06-06 17:44:09.958 10128 10128 i systemservicemanager: starting phase 100

//displaymanagerservice 新增預設display

06-06 17:44:09.954 10128 10128 i systemservicemanager: starting com.android.server.display.displaymanagerservice

06-06 17:44:09.965 10128 10152 i displaymanagerservice: display device added: displaydeviceinfo else

//每次count reset

reset_hang_info();

}log裡可以驗證這點:

count在11的基礎上加4 說明走了else的邏輯,且每次都reset了count的值

<6>[427067.792783] (2)[139:hang_detect][hang_detect] hang_detect thread counts down 15:11, status 0.

<6>[427067.792783] (2)[139:hang_detect][hang_detect] hang_detect thread counts down 15:11, status 0.

<6>[427097.796111] (2)[139:hang_detect][hang_detect] hang_detect thread counts down 15:11, status 0.

<6>[427097.796111] (2)[139:hang_detect][hang_detect] hang_detect thread counts down 15:11, status 0.

解決方案:

該問題hang_detect存在這種情況,且不止一例,如果以後在kernel檔案發現counts 比hd_timeout_count 大4 ,說明kick時,system_server 被重啟過。

由於這塊屬於bsp,給出的建議有如下2種:

1 . 當檢測到system_server 不存在時,繼續下一次迴圈

system_server_pid = findtaskbyname("system_server");

+if (system_server_pid != -1)

+if ((hd_detect_enabled == 1)) {

-  if ((hd_detect_enabled == 1) && (system_server_pid != -1))

2.去掉如下判斷,因為在if條件裡還會判斷hang_detect的超時機制,還會觸發hang_detect 

+if ((hd_detect_enabled == 1)) {

-  if ((hd_detect_enabled == 1) && (system_server_pid != -1))

方案由bsp 評估合入。

monkey入門 monkey測試入門

1.設安裝包 apk 包名為 com.2.把安裝包放在 c monkey monkey為新建的資料夾 3.cmd進入命令列,手機和電腦連線。手機開啟開發者模式,允許除錯 二 輸入命令 cd c monkey 這樣就進入了放置安裝包的目錄下,就可以安裝安裝包了 1.安裝包 adb install ap...

Monkey測試2 Monkey測試策略

monkey的測試策略 一.分類 monkey測試針對不同的物件和不同的目的採用不同的測試方案,首先測試的物件 目的及型別如下 測試的型別分為 應用程式的穩定性測試和壓力測試 測試物件分為 單一apk和apk集合 測試的目的分為 解決問題的測試 忽略異常的測試 和驗收測試 不忽略異常的測試 二.應用...

monkey測試 安卓測試之monkey

安卓手機最簡單的隨機壓力測試工具monkey真的是測試的福星,人人都可以用,只需要敲一串命令即可 舉例 adb shell monkey p com.android.camera ignore crashes ignore timeouts throttle 300 s 10 v 1000 各引數說...