Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple errors when running Q-Testing on a large dataset of apps #8

Open
RichardHoOoOo opened this issue Jan 9, 2021 · 0 comments

Comments

@RichardHoOoOo
Copy link

I have tested Q-Testing on a dataset containing more than 100 apps. It turns out Q-Testing behaves abnormally on a majority of them. I tested Q-Testing with all the required settings. I ran it on CentOS 8 with 8 Android Emulators (Android 7.0) running simultaneously. I set the time limit as 3600s. I summarized some common errors as follows:

  1. UNKNOWN uiautomator dump error (occurs in 49 apps)
    This error is the most common one. Q-Testing usually works fine for a random duration (10mins, 20mins, 30mins, etc). Then it will show the UNKNOWN uiautomator dump error all the way to the end. I attach part of the logs as follows:
========episode 1_8========
the chosen action is restarting app
get stuck in an error state that cannot launch main target activity, now release current error app first.
UNKNOWN uiautomator dump error
UNKNOWN uiautomator dump error
the current states is not in q_table and the current activity is UNKNOWN
the jumped state is UNKNOWN


========episode 1_9========
the chosen action is restarting app
get stuck in an error state that cannot launch main target activity, now release current error app first.
UNKNOWN uiautomator dump error
UNKNOWN uiautomator dump error
the current states is not in q_table and the current activity is UNKNOWN
the jumped state is UNKNOWN


==============episode 2_=============

UNKNOWN uiautomator dump error
UNKNOWN uiautomator dump error
========episode 2_0========
the chosen action is restarting app
get stuck in an error state that cannot launch main target activity, now release current error app first.
UNKNOWN uiautomator dump error
UNKNOWN uiautomator dump error
the current states is not in q_table and the current activity is UNKNOWN
the jumped state is UNKNOWN
  1. could not install smartsocket listener: Address already in use (occurs in 8 apps)
    When this error occurs, Q-Testing will usually work for a while but then quickly shut down. A sample log is shown below:
==============episode 12_=============

info is   mCurrentFocus=Window{d6349f7 u0 de.baumann.browser/de.baumann.browser.activity.BrowserActivity}
current_activity_name is: de.baumann.browser.activity.BrowserActivity
current existing state id :10
========episode 12_0========
the state has been visited before
the selected action string is     14@click(resource-id='de.baumann.browser:id/floatButton_more', instance='0'):android.widget.ImageButton@""
info is   mCurrentFocus=Window{d6349f7 u0 de.baumann.browser/de.baumann.browser.activity.BrowserActivity}
current_activity_name is: de.baumann.browser.activity.BrowserActivity
current existing state id :11
the updated action is     14@click(* daemon not running; starting now at tcp:5037
ADB server didn't ACK
Full server startup log: /tmp/adb.31172.log
Server had pid: 1352849
--- adb starting (pid 1352849) ---
adb I 01-07 00:24:27 1352849 1352849 main.cpp:60] Android Debug Bridge version 1.0.41
adb I 01-07 00:24:27 1352849 1352849 main.cpp:60] Version 29.0.6-6198805
adb I 01-07 00:24:27 1352849 1352849 main.cpp:60] Installed as /xxx/SDK/android_sdk_linux/platform-tools/adb
adb I 01-07 00:24:27 1352849 1352849 main.cpp:60] 
adb I 01-07 00:24:27 1352852 1352852 adb.cpp:110] emulator-5576: already offline
adb F 01-07 00:24:27 1352794 1352794 main.cpp:144] could not install *smartsocket* listener: Address already in use
adb F 01-07 00:24:27 1352795 1352795 main.cpp:144] could not install *smartsocket* listener: Address already in use
adb F 01-07 00:24:27 1352796 1352796 main.cpp:144] could not install *smartsocket* listener: Address already in use
adb F 01-07 00:24:27 1352800 1352800 main.cpp:144] could not install *smartsocket* listener: Address already in use
adb F 01-07 00:24:28 1352792 1352792 main.cpp:144] could not install *smartsocket* listener: Address already in use
adb F 01-07 00:24:28 1352847 1352847 main.cpp:144] could not install *smartsocket* listener: Address already in use
adb F 01-07 00:24:28 1352848 1352848 main.cpp:144] could not install *smartsocket* listener: Address already in use
adb F 01-07 00:24:28 1352849 1352849 main.cpp:144] could not install *smartsocket* listener: Address already in use

* failed to start daemon
error: cannot connect to daemon
resource-id='de.baumann.browser:id/floatButton_more', instance='0'):android.widget.ImageButton@""

the jumped state is de.baumann.browser.activity.BrowserActivity


========episode 12_1========
the state has been visited before
the selected action string is     14@click(resource-id='de.baumann.browser:id/floatButton_more', instance='0'):android.widget.ImageButton@""
info is   mCurrentFocus=Window{d6349f7 u0 de.baumann.browser/de.baumann.browser.activity.BrowserActivity}
current_activity_name is: de.baumann.browser.activity.BrowserActivity
current existing state id :11
q-current is assigned with 0
the updated action is     14@click(resource-id='de.baumann.browser:id/floatButton_more', instance='0'):android.widget.ImageButton@""

the jumped state is de.baumann.browser.activity.BrowserActivity


========episode 12_2========
the state has been visited before
the selected action string is     16@back
info is   mCurrentFocus=Window{d758d2f u0 de.baumann.browser/de.baumann.browser.activity.BrowserActivity}
current_activity_name is: de.baumann.browser.activity.BrowserActivity
current existing state id :32
q-current is assigned with 0
the updated action is     16@back

the jumped state is de.baumann.browser.activity.BrowserActivity


========episode 12_3========
the state has been visited before
the selected action string is     4@back
info is   mCurrentFocus=Window{b18fec9 u0 de.baumann.browser/de.baumann.browser.activity.BrowserActivity}
current_activity_name is: de.baumann.browser.activity.BrowserActivity
current existing state id :4
q-current is assigned with 0
the updated action is     4@back

the jumped state is de.baumann.browser.activity.BrowserActivity


========episode 12_4========
the state has been visited before
the selected action string is     3@menu
info is   mCurrentFocus=Window{b18fec9 u0 de.baumann.browser/de.baumann.browser.activity.BrowserActivity}
current_activity_name is: de.baumann.browser.activity.BrowserActivity
current existing state id :4
q-current is assigned with 0
the updated action is     3@menu

the jumped state is de.baumann.browser.activity.BrowserActivity


========episode 12_5========
the state has been visited before
the selected action string is     2@click(className='android.widget.Button',instance='1'):android.widget.Button@"OK"
view_string is: android.widget.Button@"OK"

info is   mCurrentFocus=Window{d758d2f u0 de.baumann.browser/de.baumann.browser.activity.BrowserActivity}
current_activity_name is: de.baumann.browser.activity.BrowserActivity
current existing state id :31
the updated action is     2@click(className='android.widget.Button',instance='1'):android.widget.Button@"OK"

the jumped state is de.baumann.browser.activity.BrowserActivity


========episode 12_6========
the state has been visited before
the selected action string is     3@click(content-desc='View code'):android.widget.Button@""
view_string is: android.widget.Button@""

the executation cmd is: timeout 2s python /xxx/Q-testing/q-testing-wgx-publish-pyinstaller/events/click_by_content_desc.py emulator-5570 'View code'
info is   mCurrentFocus=Window{d758d2f u0 de.baumann.browser/de.baumann.browser.activity.BrowserActivity}
current_activity_name is: de.baumann.browser.activity.BrowserActivity
current existing state id :31
q-current is assigned with 0
the updated action is     3@click(content-desc='View code'):android.widget.Button@""

the jumped state is de.baumann.browser.activity.BrowserActivity


========episode 12_7========
the state has been visited before
the selected action string is     2@click(content-desc='…'):android.widget.Button@""
view_string is: android.widget.Button@""

the executation cmd is: timeout 2s python /xxx/tool/Q-testing/q-testing-wgx-publish-pyinstaller/events/click_by_content_desc.py emulator-5570 '…'
info is   mCurrentFocus=Window{d758d2f u0 de.baumann.browser/de.baumann.browser.activity.BrowserActivity}
current_activity_name is: de.baumann.browser.activity.BrowserActivity
current existing state id :31
q-current is assigned with 0
the updated action is     2@click(content-desc='…'):android.widget.Button@""

the jumped state is de.baumann.browser.activity.BrowserActivity


========episode 12_8========
the state has been visited before
the selected action string is     6@menu
info is   mCurrentFocus=Window{29be85 u0 de.baumann.browser/de.baumann.browser.activity.BrowserActivity}
current_activity_name is: de.baumann.browser.activity.BrowserActivity
current existing state id :10
q-current is assigned with 0
the updated action is     6@menu

the jumped state is de.baumann.browser.activity.BrowserActivity


========episode 12_9========
the state has been visited before
the selected action string is     16@back
info is   mCurrentFocus=Window{d758d2f u0 de.baumann.browser/de.baumann.browser.activity.BrowserActivity}
current_activity_name is: de.baumann.browser.activity.BrowserActivity
current existing state id :31
the updated action is     16@back

the jumped state is de.baumann.browser.activity.BrowserActivity


==============episode 13_=============

info is error: protocol fault (couldn't read status): Success
Traceback (most recent call last):
  File "main.py", line 189, in <module>
  File "main.py", line 137, in main
  File "qlearning_final_coverage_multi.py", line 959, in qlearning_loop
  File "qlearning_final_coverage_multi.py", line 283, in get_current_state_retry
  File "qlearning_final_coverage_multi.py", line 410, in get_current_state
ValueError: substring not found
Failed to execute script main
  1. get stuck in an error state that cannot launch main target activity, now release current error app first. (occurs in 22 apps)
    A typical error log is:
========episode 0_1========
the chosen action is restarting app
get stuck in an error state that cannot launch main target activity, now release current error app first.
info is   mCurrentFocus=Window{4a7e90f u0 com.android.packageinstaller/com.android.packageinstaller.permission.ui.GrantPermissionsActivity}
current_activity_name is: com.android.packageinstaller.permission.ui.GrantPermissionsActivity
the current states is not in q_table and the current activity is com.android.packageinstaller.permission.ui.GrantPermissionsActivity
the jumped state is com.android.packageinstaller.permission.ui.GrantPermissionsActivity

I know this error occurs because Q-Testing is not able to grant permissions when they are required by an app under test. Q-Testing requires us to manually grant permissions before testing. However, when there are a large amount of apps to be tested, it is not possible to manually grant permissions one by one. Can Q-Testing implement this function in its code?

  1. Error: Activity class {com.duckduckgo.mobile.android/noactivityname} does not exist. (occurs in 5 apps)
    Q-Testing fails to launch 5 apps. Maybe the launching function has some bugs.

Could you fix these issues or are there any workarounds we can adopt? Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant