Моки и стабы

Что такое стаб

Стабы — объекты, также называемые заглушками, которые возвращают заранее определенные значения на определенные входные данные. 

Другими словами, стаб/заглушка — это объект, который выглядит как настоящий объект, но содержит только методы, необходимые для тестирования. Когда мы не хотим (или не можем) использовать объекты, которые могут отвечать реальными данными, используем стабы. 

Итак, самый простой и статичный вид тестового дубликата называется заглушкой.

stub
Что такое стаб

Когда применяются стабы

  • Когда нужно имплементировать интерфейс, который отделит нас от сторонней библиотеки, если мы разрабатываем бекенд небольшого приложения, которое будет взаимодействовать с API. Этот интерфейс будет выдавать нам hardcoded-значения, таким образом, служить заглушкой. 
  • Если мы тестируем отдельное небольшое приложение, то мы можем создать стаб для Rest API, на котором работает приложение. Это можно сделать с помощью любого внутреннего инструмента, созданного dev-командой.

Что такое мок

Более сложные объекты, хранящие вызовы методов, называются моками (реже макетами). К ним относятся динамические обертки для зависимостей, используемые в тестах. Они используются для документирования и проверки того например, как Java-классы взаимодействуют друг с другом. 

Итак, более мощная и адаптируемая разновидность тестовых дубликатов называется моками. Моки и заглушки идентичны по общему предназначению, однако например к объекту-моку можно применять assert’ы, а к стабу — нет. Мок-объект определяет, прошел или не прошел тест. Обычно на один отдельный тест приходится не более одного объекта-мока.

mock
Что такое мок

Когда применяется мок

  • Популярный фреймворк Mockito применяется для создания моков зависимых классов, если в разрабатываемом приложении много классов, которые необходимо протестировать.
  • Фреймворки типа mountebank или WireMock можно использовать, если при построении бекенда приложения нам необходимо отойти от требований API в HTTP. Затем создается фейк (это еще одна разновидность тестовых дубликатов) для зависимых классов теста.

Стабы и моки — в чем разница

СтабМок
Источник данныхИсточник данных в стабе — hardcoded. Часто он тесно связан с тестовым наборомИз тестов
Предназначение Верификация состоянияВерификация характеристик
Создается вручную или инструментомБольшинство пишутся вручную, но иногда инструментамиОбычно используются библиотеки Mockito, JMock и WireMock
Применение Для простых тестовых наборовДля больших сложных тестовых наборов
Есть ли GUIНет GUIЕсть
Преимущества Много бесплатных инструментов и онлайн-ресурсовТоже есть много ресурсов и бесплатных открытых инструментов
Недостатки В связи с тем, что данные hardcoded, в тест-кейсах нужно это учитыватьИспользуется в основном разработчиками, а не тестировщиками
Какие нужны скиллыСредниеПрокачанные скиллы
Кем имплементируетсяРазработчиками, тестировщиками, самостоятельно или инструментамиС помощью библиотек JMock, WireMock и пр.

Источник


Подготовка к собеседованию в Телеграме — вопросы с ответами

Официальный канал портала TestEngineer.ru — там нужное

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас