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.

QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt

337 views

Published on

В этом докладе пойдет речь исключительно об автоматическом тестировании. Тестировать бэкенд можно только так. Я расскажу об используемых подходах и практиках, которые можно применить в работе. Мы поговорим с чего начинать автоматическое тестирование бэкенда. Задам направление развития и поделюсь идеями, так чтобы вы по-другому взглянули на профессию тестировщика.

Published in: Education
  • Be the first to comment

QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt

  1. 1. Киев 2016 Первый в Украине фестиваль тестирования Об автоматическом тестировании back-end-а в Игорь Любин 1
  2. 2. Киев 2016 Игорь Любин • К. ф.-м. н. • Родился в г. Казань • В QA с 2007 г.
  3. 3. Киев 2016
  4. 4. Киев 2016 Mediamarkt.ru • > 1 000 000 пользователей с картами лояльности • > 70 магазинов
  5. 5. Киев 2016 Mediamarkt.ru • > 100 IT специалистов • > 10 команд C# Php Ruby
  6. 6. Киев 2016 «Loyalty Awards Russia 2016» • Технологический лидер года
  7. 7. Киев 2016 Команда CRM QA CI Аналитик бизнес Аналитик 3rd sys Teamlead разработчик CRM Разработчик CRM + UI Разработчик Customer Разработчик Внтр.
  8. 8. Киев 2016 Доменная область CRM • Пользователи • Карты лояльности • Оплата баллами • Возвраты
  9. 9. Киев 2016 CRM Pinpad Киоск Web CallCen ter 3rd Mobile Front-end 9
  10. 10. Киев 2016 Back-end Customer Api Card Api Lottery Api Payment Api Sender Sync Card Sync Return Api Pinpad Api CallCenter.UI CrmManager.UI Lottery.UI + 10-20
  11. 11. Киев 2016 Пример контракта Customer API • find_customer_by_id • create_customer • update_customer • block_customer • confirm_email • …
  12. 12. Киев 2016 Обычный микросервис CRM Api DB jsonstatus+json Query
  13. 13. Киев 2016 Первый автоматический тест?
  14. 14. Киев 2016 Build, deploy, test 14
  15. 15. Киев 2016 Где лежат тесты? MM.Customer.Api MM.Customer.Api.Test
  16. 16. Киев 2016 Почему тесты рядом с кодом? • Тесты ближе к разработчикам • Один язык разработки проекта и тестов • Одинаковые инструменты обращения к Api и DB • Можно использовать наработки разработчиков
  17. 17. Киев 2016 Стратегия тестирования • Сначала позитив
  18. 18. Киев 2016 18 [Test] public void Shoud_find_customer_by_id() { var response = Api.Send("find_customer_by_id", new { "123" }); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK)); }
  19. 19. Киев 2016 19 [Test] public void Shoud_find_customer_by_id() { var id = Db.GetCustomerId(); var response = Api.Send("find_customer_by_id", new { id }); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK)); Assert.That(response.DeserializeTo<Customer>().Id, Is.EqualTo(id)); }
  20. 20. Киев 2016 20 [Test] public void Shoud_find_customer_by_id() { var id = Db.GetCustomerId(); var response = Api.Send("find_customer_by_id", new { id }); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK)); Assert.That(response.DeserializeTo<Customer>().Id, Is.EqualTo(id)); }
  21. 21. Киев 2016 Smoke тестирование
  22. 22. Киев 2016 Чек-лист покрытия API • Хотя бы один тест с ответом 200 ОК • Проверка бизнес-логики • «Плохие» статусы у пользователей и карт • Тесты на кэш • Проверка модели, JSON схемы ответа, проверка наличия полей и их правильных типов • Проверка измененного состояния • Проверить, что изменения легли в БД • Проверки очередей • Проверки в смежных системах • Вызов метода дважды, максимальное число параметров, расширения команды, другие способы вызова • Негативные проверки • Not found => Валидные, но несуществующие в системе значения параметров • Invalid => Плохие значения параметров, пробелы, выход за границу допустимых значений • Not specified => Пустые значения параметров, другие типы, проверка обязательных • Пустой запрос = {} и запрос без параметров = "" • Все ли покрыто из документации? 22
  23. 23. Киев 2016 23 [Test] public void Shoud_return_error_if_customer_blocked() { var id = Db.GetBlockedCustomerId(); var response = Api.Send("find_customer_by_id", new { id }); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NotFound)); }
  24. 24. Киев 2016 Тесты на кэш
  25. 25. Киев 2016 Полный набор api тестов
  26. 26. Киев 2016 Slack
  27. 27. Киев 2016 Интеграционное тестирование Api Sync 3rd
  28. 28. Киев 2016 GitFlow
  29. 29. Киев 2016 UI-тестирование 29
  30. 30. Киев 2016 Тесты для прода Critical Readonly
  31. 31. Киев 2016 Нагрузочное тестирование
  32. 32. Киев 2016 Заключение • AT + CI • Build, deploy, test • Тесты рядом с кодом проекта • Используем наработки разработчиков • Сначала позитив + бизнес логика
  33. 33. Киев 2016 Спасибо за внимание. Вопросы? • E-mail: igor.lyubin@outlook.com • Skype: igor.lyubin

×