|
© 2015 RingCentral, Inc.
All rights reserved.
Методы генерации тестовых
аккаунтов в базе данных.
Акмаев Дмитрий.
Санкт-Петербург. DINS
2
|
© 2015 RingCentral, Inc.
All rights reserved.
Нет авторизации
3
|
© 2015 RingCentral, Inc.
All rights reserved.
Нет авторизации
►
Нет проблем
4
|
© 2015 RingCentral, Inc.
All rights reserved.
Нужны пользователи
5
|
© 2015 RingCentral, Inc.
All rights reserved.
Создание вручную
6
|
© 2015 RingCentral, Inc.
All rights reserved.
Создание вручную
7
|
© 2015 RingCentral, Inc.
All rights reserved.
Создание аккаунтов вручную
►
Плюсы
•
Правильные пользователи
•
Тесты не тратят время на создание пользователя
8
|
© 2015 RingCentral, Inc.
All rights reserved.
Создание аккаунтов вручную
►
Минусы
•
Тесты сами должны возвращать базовое состояние
пользователя.
•
Нет гарантии идентичного состояния между тестами
•
Проблемы при переходе на другое тестовое окружение
•
Нельзя часто обновлять базу из бэкапа
•
Количество пользоваателей небольшое
9
|
© 2015 RingCentral, Inc.
All rights reserved.
Бэкап базы с созданными аккаунтами
10
|
© 2015 RingCentral, Inc.
All rights reserved.
Бэкап базы с созданными аккаунтами
►
Плюсы
•
Единоразвое создание всех пользователей
•
Возможность легкого перехода на другое окружение
•
Можно восстановить базу если были «испорчены» тестами
пользователи
•
Можно получать идентичное состояние перед запуском тестов
11
|
© 2015 RingCentral, Inc.
All rights reserved.
Бэкап базы с созданными аккаунтами
►
Минусы
•
Объем базы должен быть небольшим
•
Состояние пользователей между тестами может быть разным
•
Частое изменение базы требует обновление бэкапа
12
|
© 2015 RingCentral, Inc.
All rights reserved.
Бэкап базы с созданными аккаунтами
►
Минусы
•
Объем базы должен быть небольшим
•
Состояние пользователей между тестами может быть разным
•
Частое изменение базы требует обновление бэкапа
13
|
© 2015 RingCentral, Inc.
All rights reserved.
Копия с боевой базы
14
|
© 2015 RingCentral, Inc.
All rights reserved.
Копия с боевой базы
►
Плюсы
•
Тестирование на пользователях с реальными настройками
•
Не надо ничего создавать вручную
•
Большое разнообразие типов
15
|
© 2015 RingCentral, Inc.
All rights reserved.
Копия с боевой базы
►
Минусы
•
Необходимо производить обезличивание информации
•
Нестабильное состояние пользователей. Могут меняться
•
Большой объем базы
16
|
© 2015 RingCentral, Inc.
All rights reserved.
Генерация аккаунтов в базе
17
|
© 2015 RingCentral, Inc.
All rights reserved.
Генерация аккаунтов в базе
18
|
© 2015 RingCentral, Inc.
All rights reserved.
Генерация аккаунтов непосредственно в базе
►
Плюсы
•
Быстрое добавление аккаунтов
•
Идентичность аккаунтов перед каждым тестовым запуском
•
Возможность использования скриптов создания пользователей
нужной нам конфигурации
19
|
© 2015 RingCentral, Inc.
All rights reserved.
Генерация аккаунтов непосредственно в базе
►
Минусы
•
Скрипты могут оказаться очень сложными
INSERT INTO
`customer` (`secure_key`
,
`lastname`
,
`firstname`
,
`email`
,
`passwd`
,
`last_passwd_gen`
,
`id_gender`
,
`birthday`
,
`newsletter`
,
`newsletter_date_add`
,
`ip_registration_newsletter`
,
`optin`
,
`website`
,
`company`
,
`siret`
,
`ape`
,
`outstanding_allow_amount`
,
`show_public_prices`
,
`id_risk`
,
`max_payment_days`
,
`active`
,
`deleted`
,
`note`
,
`is_guest`
,
`id_shop`
,
`id_shop_group`
,
`id_default_group`
,
`id_lang`
,
`date_add`
,
`date_upd`)
VALUES
(
'd8c8331f109f4c3946fd062ee9f3038d'
,
'Пупкин'
,
'Вася'
,
'vasya3@mail.ru'
,
'3626426342d1d9eeac5e91489129c2a2'
,
'2015-10-23 04:26:10'
,
'0'
,
'1991-5-11'
,
'1'
,
'2015-10-23 10:26:10'
,
NULL
,
'1'
,
NULL
,
NULL
,
NULL
,
NULL
,
'0'
,
'0'
,
'0'
,
'0'
,
'1'
,
'0'
,
NULL
,
'0'
,
'1'
,
'1'
,
'3'
,
'1'
,
'2015-10-23 10:26:10'
,
'2015-10-23 10:26:10'
)
DELETE FROM
`customer_group`
WHERE
`id_customer` =
5
INSERT
IGNORE
INTO
`customer_group` (`id_customer`
,
`id_group`)
VALUES
(
'5'
,
'3'
)
INSERT
IGNORE
INTO
`customer_group` (`id_customer`
,
`id_group`)
VALUES
(
'5'
,
'2'
)
INSERT
IGNORE
INTO
`customer_group` (`id_customer`
,
`id_group`)
VALUES
(
'5'
,
'1'
)
INSERT INTO
`log` (`severity`
,
`error_code`
,
`message`
,
`object_id`
,
`id_employee`
,
`object_type`
,
`date_add`
,
`date_upd`)
VALUES
(
'1'
,
'0'
,
'Customer добавление'
,
'5'
,
'1'
,
'Customer'
,
'2015-10-23 10:26:10'
,
'2015-10-23 10:26:10'
)
INSERT INTO
`address` (`id_customer`
,
`id_manufacturer`
,
`id_supplier`
,
`id_warehouse`
,
`id_country`
,
`id_state`
,
`alias`
,
`company`
,
`lastname`
,
`firstname`
,
`vat_number`
,
`address1`
,
`address2`
,
`postcode`
,
`city`
,
`other`
,
`phone`
,
`phone_mobile`
,
`dni`
,
`deleted`
,
`date_add`
,
`date_upd`)
VALUES
(
'5'
,
'0'
,
'0'
,
'0'
,
'177'
,
'0'
,
'Дом'
,
'Частное лицо'
,
'Пупкин'
,
'Вася'
,
''
,
'Бухарествская улица д.22 кв.13'
,
''
,
'192241'
,
'Санкт-Петербург'
,
''
,
'715-22-36'
,
'+7 905 225-56-45'
,
''
,
'0'
,
'2015-10-23 10:28:28'
,
'2015-10-23 10:28:28'
)
INSERT INTO
`log` (`severity`
,
`error_code`
,
`message`
,
`object_id`
,
`id_employee`
,
`object_type`
,
`date_add`
,
`date_upd`)
VALUES
(
'1'
,
'0'
,
'Address добавление'
,
'5'
,
'1'
,
'Address'
,
'2015-10-23 10:28:28'
,
'2015-10-23 10:28:28'
)
20
|
© 2015 RingCentral, Inc.
All rights reserved.
Генерация аккаунтов непосредственно в базе
►
Еще минусы
•
Не используются проверки бизнес логики. Аккаунты могут быть
некорректными.
•
Скрипты чувствительны к изменению структуры базы данных
21
|
© 2015 RingCentral, Inc.
All rights reserved.
Использование внешнего API
22
|
© 2015 RingCentral, Inc.
All rights reserved.
Использование внешнего API
23
|
© 2015 RingCentral, Inc.
All rights reserved.
Использование внешнего API
►
Плюсы
•
Аккаунты правильные (те же проверки
со стороны бэкенда)
•
Скрипты создания аккаунтов устойчивы к изменениям в бэкэнде
•
Более простая возможность создания
скриптов создания
24
|
© 2015 RingCentral, Inc.
All rights reserved.
Использование внешнего API
►
Минусы
•
Нужно наличие такого API
•
Медленнее, чем работа с базой
•
Меньше гибкости, по сравнения с базой данных
•
Необходимо создавать програмные обертки для
создания
аккаунтов
25
|
© 2015 RingCentral, Inc.
All rights reserved.
Нет внешнего API
26
|
© 2015 RingCentral, Inc.
All rights reserved.
Использование внутреннего API
27
|
© 2015 RingCentral, Inc.
All rights reserved.
Использование внутреннего API
28
|
© 2015 RingCentral, Inc.
All rights reserved.
Использование внутреннего API
►
Плюсы
•
Те же, что и у внешнего API
(проверки
на бэкенде, более устойчивы, проще сценарии).
•
Больше гибкости, чем у внешнего API
29
|
© 2015 RingCentral, Inc.
All rights reserved.
Использование внутреннего API
►
Минусы
•
Те же, что и у внешнего API (наличие, медленнее, гибкость, доп
обертки)
•
Изменения API непредсказуемы
•
Отсутствует документация
•
Меньше проверок на корректность
30
|
© 2015 RingCentral, Inc.
All rights reserved.
Не хочу ничего писать. Дайте просто пользователя
31
|
© 2015 RingCentral, Inc.
All rights reserved.
Схема со сценариями
►
Что не так?
•
Генерация дольше, чем сам тест
•
Зачем генерить каждый раз, если ничего не меняю?
•
Создание пользователя есть часть теста, а не предусловие
32
|
© 2015 RingCentral, Inc.
All rights reserved.
Схема со сценариями
►
Что делать?
•
Отделить генерацию от теста
•
Переиспользовать не изменяемых пользователей
•
Дать сценариям имена и сделать предусловием тестов
•
Создать запас готовых пользователей перед запуском тестов
33
|
© 2015 RingCentral, Inc.
All rights reserved.
Схема со сценариями
►
Варианты создания?
•
Пополнение – поддержка неизменного количества заданных
сценариев
•
Предоставление – генерить нужный сценарий по запросу, если
нет готового прямо из теста
•
Ручная генерация – генерация нужного сценария, нужного
количества вручную
34
|
© 2015 RingCentral, Inc.
All rights reserved.
Схема со сценариями.
35
|
© 2015 RingCentral, Inc.
All rights reserved.
Схема со сценариями.
36
|
© 2015 RingCentral, Inc.
All rights reserved.
Схема со сценариями
►
Плюсы для мануальных QA
•
Быстрое получение нужного аккаунта
•
В предусловии тест кейса можно добавить просто имя сценария
•
Минимизация ошибок при воссоздании предварительных
условий
37
|
© 2015 RingCentral, Inc.
All rights reserved.
Схема со сценариями
►
Плюсы для автоматизаторов
•
Предварительная генерация нужного количества аккаунтов
•
Идентичность условий проведения тестов
•
Сокращение времени прохождения
•
Упрощение тестов.
38
|
© 2015 RingCentral, Inc.
All rights reserved.
Схема со сценариями
►
Минусы
•
Дополнительная точка отказа
•
Необходимость поддержки генератора
39
|
© 2015 RingCentral, Inc.
All rights reserved.
Спасибо
40
|
© 2015 RingCentral, Inc.
All rights reserved.
Методы генерации тестовых пользователей. Плюсы и минусы