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

Integration Testing

Handshake

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

При проведении интеграционного тестирования могут тестироваться как два так и более компонентов.

Пример интеграционного тестирования

В качестве примера для проведения интеграционного тестирования возьмём систему, состоящую из трёх компонентов:

  • компонент 1 — браузерное приложение для добавления конфет на склад
  • компонент 2 — сервис, хранящий информацию о конфетах
  • компонент 3 — сервис, проводящий контроль качества конфет

Сценарий взаимодействия компонентов

  1. Браузер посылает запрос на добавление новой конфеты на склад
  2. Склад конфет посылает запрос в Сервис проверки качества конфет
  3. Проверка качества возвращает на Склад
    ответ «Одобрено» либо «Не одобрено» в соответствии с требованиями
  4. если Проверка качества вернула ответ «Одобрено»,
    Склад сохраняет конфету и отвечает Браузеру OK
    если Проверка качества вернула ответ «Не одобрено»,
    Склад не сохраняет конфету и отвечает Браузеру Bad Request
three-components

Использование заглушек

Как выяснилось, компонент Проверка качества ещё не готов к проведению тестирования. Мы не хотим ожидать окончания его разработки и готовы проверить взаимодействие компонента 1 с компонентом 2, используем заглушку!

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

Заглушка сымитирует работу компонента 3. Известно, что Склад конфет ожидает два варианта ответа: «Одобрено» либо «Не одобрено». Создадим примитивный сервис-заглушку, способный возвращать эти два ответа на основании упрощенной логики, например:

  • круглые конфеты «Одобрено»
  • некруглые конфеты «Не одобрено»
component-mock

Проведение тестирования

Интеграционное тестирование взаимодействия компонента 1 с компонентом 2 (вместо компонента 3 используется заглушка) сводится к проверке двух основных сценариев:

  1. конфета прошла проверку качества и должна быть добавлена на Склад,
    Браузер должен получить ответ OK
  2. конфета не прошла проверку качества и не должна быть добавлена на Склад,
    Браузер должен получить ответ Bad Request

HTTP-коды ответа

При положительном сценарии и успешной интеграции двух компонентов мы ожидаем, что на HTTP-запрос клиента сервер вернет HTTP-ответ с кодом 200 OK. Но бывают и другие коды ответа, приведенные в таблице.

Код Описание Пример
1xx Информационные 102 — запрос обрабатывается (Processing)
2xx Успешно 200 — запрос выполнен успешно (OK)
3xx Перенаправление 301 — ресурс по данному адресу был перемещен (Moved Permanently)
4xx Ошибка клиента 400 — запрос клиента содержит ошибку (Bad Request)
403 — у клиента нет прав для доступа к данному ресурсу (Forbidden)
5xx Ошибка сервера 500 — во время обработки запроса на сервере произошла ошибка (Internal Server Error)
Задача

Тестируемая система включает в себя два компонента: клиентское и серверное приложение.

Фронтэнд-разработчик создал клиентскую часть — «Форму для отправки HTTP-запроса», а бэкенд-разработчик написал логику обработки запроса на сервере. Они договорились об условиях успешного обмена данными (см. API).

Выступите в роли клиента, проверьте успешность взаимодействия компонентов.


Форма для отправки HTTP-запроса

Договорённость по формату запроса:

  • Эндпоинт /hello-server
  • HTTP метод, соответствующий получению данных с сервера

Ожидаемый при успешной интеграции ответ:

  • Статус ответа с кодом 200
  • Тело ответа отсутствует
На чьей стороне возникла ошибка?

ВВЕДЕНИЕ

БАЗОВЫЕ ЗНАНИЯ

УРОВНИ ТЕСТИРОВАНИЯ

UI ТЕСТИРОВАНИЕ

ТЕСТ ДИЗАЙН

ТЕСТОВАЯ ДОКУМЕНТАЦИЯ

АУТЕНТИФИКАЦИЯ И АВТОРИЗАЦИЯ

POSTMAN

БАЗЫ ДАННЫХ

ТЕСТИРОВАНИЕ РЕЛИЗА

АНАЛИЗ РАБОТЫ ПРИЛОЖЕНИЯ

ПОДГОТОВКА К СОБЕСЕДОВАНИЮ

Как составить резюме Топ вопросов Собеседование