Сокращение объема регрессионного тестирования.

Интеграционное тестирование в проекте.

Интеграционные тесты меняют перспективу.

Изолированный интеграционный тест

Если тестируется логика взаимодействия приложения с моком вместо реальных зависимостей, но само приложение работает в условиях, близких к реальному запуску (без изоляции отдельных классов, как в юнит-тестах). Например, проверка, что сервис правильно формирует HTTP-запросы к базе данных через моки

Контрактное тестирование

Контрактное тестирование — это методика тестирования точек интеграции, при которой каждое приложение проверяется в изоляции для подтверждения, что сообщения, которые оно отправляет или получает, соответствуют общему пониманию, задокументированному в “контракте”. Этот подход позволяет убедиться, что взаимодействие между различными частями системы происходит в соответствии с ожиданиями. Повышаем наглядность интеграционных тестов.

Качественна характеристика теста Хороший юнит-тест

Баланс между скоростью и качеством обратной связи у разных видов тестов

Интеграционные тесты медленнее unit-тестов

Статья про тестинг трофеи

О чем статья: о том как в разработке сервисов отдаю предпочтение интеграционным тестам уровня сервиса, вижу в этом значительную пользу и с какими трудностями имею дело.

Интеграционная логика и бизнес логика, дать определения и значения

Обзервабилити, тест который медленный, но наглядно показывающий что-то

Тесты важнее кода. Изменения тестов и кода идут в параллельных таймлайнах с нахлестом.

Цель в доставке функциональностей с минимизацией затрат на разработку и поддержку кода.

Задачи:

  • Реализация желаемого бизнес поведения

  • Соблюдение Контрактов интеграционного характера (sla, api)

  • Создания условий, позволяющих минимизировать затраты на поддержку.

  • Рефакторинг (на мой практике гарнизонами планирования функциональностей - квартал, мы рассматриваем инициативы в начале и планируем доставку, мы точно знаем что мы реализуем в ближайший квартал, дальше ничего не знаем, если думаем что знаем - скорее всего будем разочарованы), поэтому невозможно строить долгоиграющий дизайн, тем более если сервис только появился. Важно чтобы сервис был эволвобильным (легко и дёшево меняться) с сохранением контракта. Интеграционные енд - то- енд тесты уровня сервиса помогают значительно.

  • Доступность и актуальность информации о текущей бизнес логике приложения (влияет на оценку времени разработки, в любой момент времени знаем что и как работает - например документация по апи содержит только интеграционную логику)

Дисклеймер: 1 Статья для тех, кто пишет код с багами и использует тесты для их нахождения. Или тех, кому интересно?

может содержать баги стремящиеся попасть на прод и кто выбрал тесты, как средство

что использование тестов сводит к минимуму появление багов в проде

2 в данной статье я в том числе поделюсь своими мыслями и опытом касательно интеграционных тестов и тдд. Я постараюсь обьяснить, а ни в чем-то убедить. Я не ставлю свой целью убедить , я хочу описать причины.

Статьи с идеями

https://docs.pact.io/faq/convinceme - тут можно почитать о том, почему Contract tests save development time, суть та же и для TT.


Я познакомился давно, решил применять, у нас спринг и это было вызовом - медленно и плавающие баги.

Что такой тестинг трофи Дороже чем юнит В чем особенность спринга (контекст) Шаред инстансы баз и Кафки и изоляция или дешевое поднятие сервисов Что дает Проблемы - баги спринга


Идея для картинки юнит и интеграционные Юнит - маленькой линейкой измеряет рост Интеграции - большой линейкой

Когда размер имеем значение и глубина


Основная мотивация Перестать пользоваться постманом Перенести в тесты то что я бы вызвал постманом


Нет ни одной практики программирования, которая бы предложила способ написать такой код или ТАК его написать, который никто не будет менять. Вся затея с software буквально для того, чтобы делать «изменяемые» инструкции. Потому что меняется все. И все практики программирования направлены на то, чтобы писать поддерживаемый код. Т.е нужно писать код, который завтра кто-то перепишет. Так вот, покрытие кода юнитами это стрельнуть в ногу следующему разработчику. Интеграционные - помочь ему.


Важнотвремя обратной связи Требования предъявляются к поведению Юнит тесты не показывают поведение и не дают обратной связи о поведении Если нет интеграционных тестов, то обратная связь по поведению будет только на iaas

testingtesting_trophydraft