Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Методы генерации тестовых пользователей. Плюсы и минусы

664 views

Published on

Доклад Дмитрий Акмаева на конференции SQA Days-18, 27-28 ноября 2015 г., Москва
www.sqadays.com

Published in: Education
  • Be the first to comment

Методы генерации тестовых пользователей. Плюсы и минусы

  1. 1. 1 | © 2015 RingCentral, Inc. All rights reserved. Методы генерации тестовых аккаунтов в базе данных Акмаев Дмитрий. Санкт-Петербург. DINS
  2. 2. 2 | © 2015 RingCentral, Inc. All rights reserved. О себе ► Акмаев Дмитрий ► Lead QA Automation в DINS • до этого Quest Software (DELL), I-FREE ► 11 лет в тестировании ► Управляю проектом Global CI
  3. 3. 3 | © 2015 RingCentral, Inc. All rights reserved. Нет авторизации
  4. 4. 4 | © 2015 RingCentral, Inc. All rights reserved. Нет авторизации ► Нет проблем
  5. 5. 5 | © 2015 RingCentral, Inc. All rights reserved. Нужны пользователи
  6. 6. 6 | © 2015 RingCentral, Inc. All rights reserved. Создание вручную
  7. 7. 7 | © 2015 RingCentral, Inc. All rights reserved. Создание вручную
  8. 8. 8 | © 2015 RingCentral, Inc. All rights reserved. Создание аккаунтов вручную ►Плюсы • Правильные пользователи • Тесты не тратят время на создание пользователя
  9. 9. 9 | © 2015 RingCentral, Inc. All rights reserved. Создание аккаунтов вручную ►Минусы • Тесты сами должны возвращать базовое состояние пользователя • Нет гарантии идентичного состояния между тестами • Проблемы при переходе на другое тестовое окружение • Нельзя часто обновлять базу из бэкапа • Количество пользователей небольшое
  10. 10. 10 | © 2015 RingCentral, Inc. All rights reserved. Бэкап базы с созданными аккаунтами
  11. 11. 11 | © 2015 RingCentral, Inc. All rights reserved. Бэкап базы с созданными аккаунтами ►Плюсы • Единоразовое создание всех пользователей • Возможность легкого перехода на другое окружение • Можно восстановить базу, если пользователи были «испорчены» тестами • Можно получить идентичное состояние перед запуском тестов
  12. 12. 12 | © 2015 RingCentral, Inc. All rights reserved. Бэкап базы с созданными аккаунтами ►Минусы • Объем базы должен быть небольшим • Состояние пользователей между тестами может быть разным • Частое изменение базы требует обновление бэкапа
  13. 13. 13 | © 2015 RingCentral, Inc. All rights reserved. Копия с боевой базы
  14. 14. 14 | © 2015 RingCentral, Inc. All rights reserved. Копия с боевой базы ►Плюсы • Тестирование на пользователях с реальными настройками • Не надо ничего создавать вручную • Большое разнообразие типов
  15. 15. 15 | © 2015 RingCentral, Inc. All rights reserved. Копия с боевой базы ►Минусы • Необходимо производить обезличивание информации • Нестабильное состояние пользователей - могут меняться • Большой объем базы • Версия базы предыдущей версии
  16. 16. 16 | © 2015 RingCentral, Inc. All rights reserved. Генерация аккаунтов в базе
  17. 17. 17 | © 2015 RingCentral, Inc. All rights reserved. Генерация аккаунтов в базе
  18. 18. 18 | © 2015 RingCentral, Inc. All rights reserved. Генерация аккаунтов непосредственно в базе ►Плюсы • Быстрое добавление аккаунтов • Идентичность аккаунтов перед каждым тестовым запуском • Возможность использования скриптов создания пользователей нужной нам конфигурации
  19. 19. 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. 20. 20 | © 2015 RingCentral, Inc. All rights reserved. Генерация аккаунтов непосредственно в базе ►Еще минусы • Не используются проверки бизнес логики. Аккаунты могут быть некорректными • Скрипты чувствительны к изменению структуры базы данных
  21. 21. 21 | © 2015 RingCentral, Inc. All rights reserved. Использование внешнего API
  22. 22. 22 | © 2015 RingCentral, Inc. All rights reserved. Использование внешнего API
  23. 23. 23 | © 2015 RingCentral, Inc. All rights reserved. Использование внешнего API ►Плюсы • Аккаунты правильные (те же проверки со стороны бэкенда) • Скрипты создания аккаунтов устойчивы к изменениям в бэкэнде • Более простая возможность создания скриптов создания
  24. 24. 24 | © 2015 RingCentral, Inc. All rights reserved. Использование внешнего API ►Минусы • Нужно наличие такого API • Медленнее, чем работа с базой • Меньше гибкости, по сравнения с базой данных • Необходимо создавать програмные обертки для создания аккаунтов
  25. 25. 25 | © 2015 RingCentral, Inc. All rights reserved. Нет внешнего API
  26. 26. 26 | © 2015 RingCentral, Inc. All rights reserved. Использование внутреннего API
  27. 27. 27 | © 2015 RingCentral, Inc. All rights reserved. Использование внутреннего API
  28. 28. 28 | © 2015 RingCentral, Inc. All rights reserved. Использование внутреннего API ►Плюсы • Те же, что и у внешнего API (проверки на бэкенде, более устойчивы, проще сценарии) • Больше гибкости, чем у внешнего API
  29. 29. 29 | © 2015 RingCentral, Inc. All rights reserved. Использование внутреннего API ►Минусы • Те же, что и у внешнего API (наличие, медленнее, гибкость, доп обертки) • Изменения API непредсказуемы • Отсутствует документация • Меньше проверок на корректность
  30. 30. 30 | © 2015 RingCentral, Inc. All rights reserved. Довольно пользователей!
  31. 31. 31 | © 2015 RingCentral, Inc. All rights reserved. Как удалять? ►Восстановление базы из бэкапа • Плюсы - Точно все удалится • Минусы - Теряется кастомизация - Появляется время простоя
  32. 32. 32 | © 2015 RingCentral, Inc. All rights reserved. Как удалять? ►Пометка пользователей, как удаленные • Плюсы - Быстро - Нет простоя • Минусы - Пользователи реально не удаляются - База разрастается - Ресурсы могут быть ограниченными
  33. 33. 33 | © 2015 RingCentral, Inc. All rights reserved. Как удалять? ►Удаление пользователей из базы • Плюсы - База не растет - Ресурсы освобождаются • Минусы - Могут оставаться хвосты - Не всегда возможно - Нужно вычислять именно тестовых пользователей
  34. 34. 34 | © 2015 RingCentral, Inc. All rights reserved. А как мы удаляем? ►Тестовый флаг ►Регулярная джоба очистки базы
  35. 35. 35 | © 2015 RingCentral, Inc. All rights reserved. Не хочу ничего писать. Дайте просто пользователя
  36. 36. 36 | © 2015 RingCentral, Inc. All rights reserved. Не хочу ничего писать. Дайте просто пользователя ►Что не так? • Генерация дольше, чем сам тест • Зачем генерить каждый раз, если ничего не меняю? • Создание пользователя есть часть теста, а не предусловие
  37. 37. 37 | © 2015 RingCentral, Inc. All rights reserved. Не хочу ничего писать. Дайте просто пользователя ►Что делать? • Отделить генерацию от теста • Переиспользовать не изменяемых пользователей • Дать сценариям имена и сделать предусловием тестов • Создать запас готовых пользователей перед запуском тестов • Создать микросервис для генерации
  38. 38. 38 | © 2015 RingCentral, Inc. All rights reserved. Микросервис для генерации пользователей
  39. 39. 39 | © 2015 RingCentral, Inc. All rights reserved. Микросервис для генерации пользователей ►Состояние пользователя • Чистый • Измененный ►Доступность • Свободный • Занят
  40. 40. 40 | © 2015 RingCentral, Inc. All rights reserved. Варианты создания - Ручная генерация • генерация нужного сценария, нужного количества вручную
  41. 41. 41 | © 2015 RingCentral, Inc. All rights reserved. Варианты создания - Предоставление • генерить нужный сценарий по запросу, или брать готовый
  42. 42. 42 | © 2015 RingCentral, Inc. All rights reserved. Варианты создания - Предоставление
  43. 43. 43 | © 2015 RingCentral, Inc. All rights reserved. Варианты создания - Пополнение • поддержка неизменного количества заданных сценариев
  44. 44. 44 | © 2015 RingCentral, Inc. All rights reserved. Микросервис для генерации пользователей ►Плюсы для мануальных QA • Быстрое получение нужного аккаунта • В предусловии тест кейса можно добавить просто имя сценария • Минимизация ошибок при воссоздании предварительных условий
  45. 45. 45 | © 2015 RingCentral, Inc. All rights reserved. Микросервис для генерации пользователей ►Плюсы для автоматизаторов • Предварительная генерация нужного количества аккаунтов • Идентичность условий проведения тестов • Сокращение времени прохождения • Упрощение тестов
  46. 46. 46 | © 2015 RingCentral, Inc. All rights reserved. Микросервис для генерации пользователей ►Минусы • Дополнительная точка отказа • Необходимость поддержки генератора
  47. 47. 47 | © 2015 RingCentral, Inc. All rights reserved. Спасибо
  48. 48. 48 | © 2015 RingCentral, Inc. All rights reserved. Контакты ► dakmaev@gmail.com ► https://vk.com/akmaev ► https://www.facebook.com/dmitry.akmaev

×