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

Contract First

Contract First

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