| © 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.