Здравствуйте, друзья,
Статья для тех, кто часто сталкивается с заполнением различных форм регистрации, персональных данных и так далее. Как правило это, инженеры отдела качества и разработчики, которые проверяют работоспособность собственного продукта.
Если вы до сих пор делаете это вручную, то вы просто обязаны дочитать до конца :)
Исходные данные:
Приложение для Android 2.2, имеет 2 формы:
Форма регистрации пользователя (6 полей ввода и кнопка сабмит)
Форма подтверждения регистрации с кнопкой возврата на форму регистрации
Задача: нам нужно протестировать поля ввода, кнопку Submit и возврат со второй формы на первую, за результатом следим самостоятельно.
Напишем скрипт, который за нас будет N раз заполнять форму регистрации (bash, Ubuntu 11.04, Android 2.2).
При вызове скипта, передается целочисленный параметр N, который определяет количество повторений.
Не судите строго, это просто пример того, как можно автоматизировать достаточно нудный и рутинный процесс, цель поста показать как это сделать, а не то, как глубоко можно с этим зайти :)
# 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, то после того, как вы ему дадите права на выполнение (используя chmod), вызвать его можно будет так:
~$ ./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
На заметку:
1. Если вы используете "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
}
Тестируйте в радость! (:
С уважением,
Егор
Какие курсы по тестированию пройти. Для новичков и специалистов (май, 2023)
Профессия тестировщика стала одной из самых востребованных для входа в IT в последние несколько лет. Поэтому мы собрали эту подборку, чтобы вы знали, где на какие курсы тестировщика пойти в 2023 году и какую образовательную платформу выбрать для обучения.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.