Что такое троттлинг (throttling) сети и как его использовать в тестировании?

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

Ответ

Троттлинг сети — это искусственное ограничение скорости или увеличение задержки (latency) сетевого соединения. Используется для симуляции работы приложения в условиях медленного или нестабильного интернета.

Зачем это нужно в тестировании:

  • Проверить поведение UI (лоадеры, таймауты, сообщения об ошибках).
  • Оценить производительность при ограниченной пропускной способности (3G, медленный Wi-Fi).
  • Протестировать механизмы повторных попыток (retry logic) и отказоустойчивость.

Способы применения троттлинга:

1. Инструменты браузера (Chrome DevTools):

  • Откройте Network панель.
  • Нажмите на выпадающий список Throttling (по умолчанию No throttling).
  • Выберите предустановку (Slow 3G, Fast 3G) или создайте Custom профиль.

2. Использование прокси (Charles Proxy): Настройте Throttle Settings (ProxyThrottle Settings) для ограничения скорости и добавления задержки для выбранных доменов.

3. Программная имитация (пример на Node.js):

const express = require('express');
const app = express();

// Middleware для добавления искусственной задержки
app.use('/api/*', (req, res, next) => {
  // Симулируем медленное соединение: задержка 2 секунды
  setTimeout(next, 2000);
});

app.get('/api/data', (req, res) => {
  res.json({ message: 'This response was delayed by 2s' });
});

app.listen(3000);

4. Тестирование на мобильных устройствах:

  • Android Emulator: Используйте настройки эмулятора для установки скорости сети и задержки.
  • Xcode Network Link Conditioner: Инструмент для macOS/iOS, позволяющий симулировать различные сетевые условия.

Ключевые параметры для настройки:

  • Пропускная способность (Bandwidth): Например, 1.5 Mbps для Slow 3G.
  • Задержка (Latency): Время отклика, например, 200 ms.
  • Потеря пакетов (Packet Loss): Процент теряемых пакетов для симуляции нестабильной сети.