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