Здравствуйте, друзья,
Статья для тех, кто часто сталкивается с заполнением различных форм регистрации, персональных данных и так далее. Как правило это, инженеры отдела качества и разработчики, которые проверяют работоспособность собственного продукта.
Если вы до сих пор делаете это вручную, то вы просто обязаны дочитать до конца :)
Исходные данные:
Приложение для Android 2.2, имеет 2 формы:
На заметку:
1. Если вы используете
- Форма регистрации пользователя (6 полей ввода и кнопка сабмит)
- Форма подтверждения регистрации с кнопкой возврата на форму регистрации
# author: [email protected]
#
# User registration form stress test example
# Repeats 5 times
# adb shell input keyevent 23 - DPAD Center, to focus field
# adb shell input keyevent 20 - DPAD Down, to move to the next field
# adb shell input keyevent 66 - Enter, to hit the button
for (( i=1; i
~$ ./test.sh 5
Тестовое приложение, для Android 2.2 можно скачать здесь: git pull https://github.com/ypaulavets/Test-user-registration-form
Приложение абсолютно примитивное, исключительно для демонстрации выше изложенного скрипта :)
Таблица кодов, которые вы можете использовать в команде "adb shell input keyevent"
:
Код | Значение |
---|---|
0 | KEYCODE_UNKNOWN |
1 | KEYCODE_MENU |
2 | KEYCODE_SOFT_RIGHT |
3 | KEYCODE_HOME |
4 | KEYCODE_BACK |
5 | KEYCODE_CALL |
6 | KEYCODE_ENDCALL |
7 | KEYCODE_0 |
8 | KEYCODE_1 |
9 | KEYCODE_2 |
10 | KEYCODE_3 |
11 | KEYCODE_4 |
12 | KEYCODE_5 |
13 | KEYCODE_6 |
14 | KEYCODE_7 |
15 | KEYCODE_8 |
16 | KEYCODE_9 |
17 | KEYCODE_STAR |
18 | KEYCODE_POUND |
19 | KEYCODE_DPAD_UP |
20 | KEYCODE_DPAD_DOWN |
21 | KEYCODE_DPAD_LEFT |
22 | KEYCODE_DPAD_RIGHT |
23 | KEYCODE_DPAD_CENTER |
24 | KEYCODE_VOLUME_UP |
25 | KEYCODE_VOLUME_DOWN |
26 | KEYCODE_POWER |
27 | KEYCODE_CAMERA |
28 | KEYCODE_CLEAR |
29 | KEYCODE_A |
30 | KEYCODE_B |
31 | KEYCODE_C |
32 | KEYCODE_D |
33 | KEYCODE_E |
34 | KEYCODE_F |
35 | KEYCODE_G |
36 | KEYCODE_H |
37 | KEYCODE_I |
38 | KEYCODE_J |
39 | KEYCODE_K |
40 | KEYCODE_L |
41 | KEYCODE_M |
42 | KEYCODE_N |
43 | KEYCODE_O |
44 | KEYCODE_P |
45 | KEYCODE_Q |
46 | KEYCODE_R |
47 | KEYCODE_S |
48 | KEYCODE_T |
49 | KEYCODE_U |
50 | KEYCODE_V |
51 | KEYCODE_W |
52 | KEYCODE_X |
53 | KEYCODE_Y |
54 | KEYCODE_Z |
55 | KEYCODE_COMMA |
56 | KEYCODE_PERIOD |
57 | KEYCODE_ALT_LEFT |
58 | KEYCODE_ALT_RIGHT |
59 | KEYCODE_SHIFT_LEFT |
60 | KEYCODE_SHIFT_RIGHT |
61 | KEYCODE_TAB |
62 | KEYCODE_SPACE |
63 | KEYCODE_SYM |
64 | KEYCODE_EXPLORER |
65 | KEYCODE_ENVELOPE |
66 | KEYCODE_ENTER |
67 | KEYCODE_DEL |
68 | KEYCODE_GRAVE |
69 | KEYCODE_MINUS |
70 | KEYCODE_EQUALS |
71 | KEYCODE_LEFT_BRACKET |
72 | KEYCODE_RIGHT_BRACKET |
73 | KEYCODE_BACKSLASH |
74 | KEYCODE_SEMICOLON |
75 | KEYCODE_APOSTROPHE |
76 | KEYCODE_SLASH |
77 | KEYCODE_AT |
78 | KEYCODE_NUM |
79 | KEYCODE_HEADSETHOOK |
80 | KEYCODE_FOCUS |
81 | KEYCODE_PLUS |
82 | KEYCODE_MENU |
83 | KEYCODE_NOTIFICATION |
84 | KEYCODE_SEARCH |
85 | TAG_LAST_KEYCODE |
"adb shell input text "bla bla bla"
, будьте внимательны с использованием пробелов, данная команда вводит текст до первого пробела :)
2. Скрипт также можно полностью параметризировать, например заменить все вводимые значения в ковычках на $2 $3 $4 $5 $6 $7 соответственно, в этом случае, вызов теста будет выглядеть так: ./test.sh 5 "[email protected]" "pass" "MyFirstName" "MyLastName" "+375283334456" "Male"
3. Исходя из пункта #2 можно сделать более серьезную автоматизации, точно так же, как удобный помощник для ввода текста на Андроид устройстве, например прописав скрипт в .bashrc
, как alias testRegistration="/home/yahor/test.sh 5 "[email protected]" "pass" "MyFirstName" "MyLastName" "+375283334456" "Male""
и вызывать по мере необходимости будет очень просто и удобно.
4. Если у вас подключенно постоянно несколько устройств, то необходимо добавить в скрипт параметр серийного номера устройства, чере параметр -s:
adb -s $2 shell [...]
В этом случае вызов скрипта будет таким: ./test.sh 5 emulator-5554
5. Практически аналогичным способом можно оттестировать и более сложные сценарии, симулируя пользовательское нажатие на экран и кнопки устройства, если вам это интересно - сообщите, я напишу еще один пост :)
6. Для устранения большого числа копи паста, разумно одинаковые блоки кода собирать в функции (должны быть объявлены строго в начале файла):
function clickNextField {
adb shell input keyevent 23
adb shell input keyevent 20
}
Тестируйте в радость! (:
С уважением,
Егор
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.