Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Contract First

Avatar for Nikita Galkin Nikita Galkin
September 23, 2017

Contract First

Avatar for Nikita Galkin

Nikita Galkin

September 23, 2017
Tweet

More Decks by Nikita Galkin

Other Decks in Programming

Transcript

  1. Никита Галкин Верю, что: ▰ Любая проблема должна решаться на

    нужно уровне ▰ Сложности не в технологиях, сложности в людях ▰ Проблемы надо обсуждать, идеи – продавать, а решения – демонстрировать 2
  2. Что такое качество? 5 Атрибуты: ▰ переносимость; ▰ функциональность; ▰

    эффективность; ▰ удобство использования (юзабилити); ▰ тестируемость; ▰ понятность; ▰ модифицируемость.
  3. Основные идеи 8 ▰ Задача QA Engineer проверять ожидания ▰

    Людям необходимо помогать договариваться ▰ Требования это синхронизированные ожидания ▰ Бизнес платит за реализацию своих ожиданий, за реализованную функциональность
  4. Виды тестов 10 ▰ Linting – между разработчиками, что код

    понятен ▰ Unit – между разработчиками, что код не сломают ▰ Functional e2e – между бизнесом и разработчиками, что ПО работает как ожидается ▰ Performance – между бизнесом и разработчиками, что ПО обеспечение эффективно
  5. Типичная ситуация 12 Мобильное приложение Новая фича не работает А

    может даже регрессия перестала работать Вопрос на кого отправлять баг? Mobile/Backend/Content?
  6. Что есть контракт 15 ▰ Между разработчиками из разных команд

    ▰ Человеко и машино читаемый ▰ Используется для тестирования и разработки, иначе устареет ▰ Является единственным источником правды о договорености ▰ Контракт это не документация, а скорее спецификация
  7. О чем надо договориться для использования REST 17 ▰ Endpoints

    – где лежат сущности ▰ Methods – действия с сущностями ▰ Headers – метаданные ▰ Status Codes – варианты ответов ▰ Body shemas – форматы ответов и запросов
  8. Использование контракта для тестирования 23 ▰ Одинаковые ожидания у всех

    членов команды ▰ Автогенерируемая документация ▰ Возможность загрузить сразу в Postman ▰ Создание mock для вашего REST API ▰ Автовалидация входных данных ▰ Упрощения тестирование для Backend ▰ И прочее...
  9. Использование контракта для тестирования 25 ▰ Тест кейс – endpoint

    + method + response ▰ Что проверяем: ▻ Код ответа ▻ Заголовки ▻ Формат body
  10. Использование контракта для тестирования 26 ▰ Arrange – Подготовить данные

    для запроса ▰ Act – Выполнить запрос ▰ Assert – Проверить соответствие ▻ Код ответа ▻ Заголовки ▻ Формат body ▰ PostAct – Убрать за собой
  11. Использование контракта для тестирования 28 ▰ Arrange – Подготовить данные

    для запроса ▰ Act – Выполнить запрос ▰ Assert – Проверить соответствие ▻ Код ответа ▻ Заголовки ▻ Формат body ▰ PostAct – Убрать за собой
  12. Использование контракта для тестирования 30 ▰ Arrange – Подготовить данные

    для запроса ▰ Act – Выполнить запрос ▰ Assert – Проверить соответствие ▻ Код ответа ▻ Заголовки ▻ Формат body ▰ PostAct – Убрать за собой
  13. Использование контракта для тестирования 31 ▰ Arrange – Подготовить данные

    для запроса – Before ▰ Act – Выполнить запрос – на основании контракта ▰ Assert – Проверить соответствие – на основании контракта ▰ PostAct – Убрать за собой – After
  14. Dredd 33 ▰ Поддерживаемые спецификации: ▻ Swagger ▻ Api BluePrint

    ▻ Что вы допилите в этот OpenSource проект ▰ Хуки на GO, PHP, Python, JavaScript ▰ Написан на Node.js
  15. Abao 35 ▰ Поддерживаемые спецификации: ▻ Raml 0.8 ▰ Хуки

    на JavaScript и CoffeeScript ▰ Написан на CoffeeScript
  16. 36 СПАСИБО! УПРАВЛЯЙТЕ ОЖИДАНИЯМИ, ДОГОВАРИВАЙТЕСЬ И АВТОМАТИЗИРУЙТЕ! Вы можете найти

    меня на твиттере @galk_in Слайды доступны speakerdeck.com/galkin Или на моем сайте galk.in