В каком сценарии тестирования необходима подмена (мокирование) сетевого трафика?

«В каком сценарии тестирования необходима подмена (мокирование) сетевого трафика?» — вопрос из категории Мобильное тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Типичный сценарий: Тестирование интеграции с внешним платёжным шлюзом в мобильном приложении.

Задача: Проверить логику обработки успешных и неуспешных платежей, не совершая реальных финансовых операций и не завися от доступности/стабильности стороннего API.

Решение: Подмена ответа от API платёжного сервиса на этапе подтверждения транзакции.

Практическая реализация:

  1. С помощью инструментов прокси (Charles Proxy, Fiddler):

    • Настроить Breakpoint или Map Local/Remote для эндпоинта подтверждения платежа.
    • Подменить реальный ответ (например, 200 OK с телом {"status": "success"}) или эмулировать ошибку (500, 402 Payment Required).
  2. С помощью мок-сервера в автотестах (Пример на JavaScript с библиотекой Nock):

    
    const nock = require('nock');

// Подменяем POST-запрос к платёжному шлюзу nock('https://api.payment.com') .post('/v1/charge') .reply(201, { // Эмулируем успешный ответ id: 'ch_mock_123', status: 'succeeded', paid: true });

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



**Преимущества такого подхода:**
*   **Безопасность:** Отсутствие реальных списаний.
*   **Надёжность:** Тесты не зависят от внешней инфраструктуры.
*   **Покрытие:** Возможность легко протестировать редкие и ошибочные сценарии (сеть отключена, таймаут, неверный формат ответа).
*   **Скорость:** Отсутствие сетевых задержек ускоряет выполнение тестов.