Charles, mitmproxy
Тема дорожной карты · QA-инженер
Charles Proxy — это кросс-платформенный отладчик HTTP/HTTPS-прокси, захватывающий весь сетевой трафик между мобильным приложением и его бэкенд-серверами, что делает его незаменимым инструментом для тестирования мобильных приложений, когда QA-инженерам нужно проверять, изменять и воспроизводить API-запросы без доступа к логам устройства или исходному коду. Для использования Charles Proxy с физическим устройством iOS или Android QA-инженер настраивает Wi-Fi-прокси устройства на хост и порт Charles (по умолчанию 8888), устанавливает SSL-сертификат Charles на устройство для расшифровки HTTPS-трафика и затем наблюдает за каждым API-вызовом приложения — заголовки запроса, тела payload и данные ответа — в представлении Structure или Sequence в Charles. Функции Rewrite и Breakpoint в Charles Proxy позволяют QA-инженерам перехватывать живые запросы и на лету изменять параметры, коды статусов ответа или тела ответа, реализуя негативные сценарии тестирования (имитация ошибок 500, сетевых таймаутов, некорректных JSON-ответов), которые сложно воспроизвести в контролируемой тестовой среде. Для команд, предпочитающих open-source альтернативы, mitmproxy предоставляет аналогичные возможности с интерфейсом командной строки и веб-UI (mitmproxy -p 8080), и оба инструмента интегрируются с сессиями мобильной автоматизации Appium для проверки корректности API-вызовов при автоматизированных UI-взаимодействиях. Charles Proxy особенно ценен при исследовательском тестировании мобильных приложений для составления карты полной API-поверхности приложения перед написанием коллекций REST Assured или Postman, выявляя недокументированные эндпоинты и скрытые параметры.
Как это работает
Charles, mitmproxy покрывает native (iOS, Android) и cross-platform (React Native, Flutter) приложения. Инструменты: Appium (cross-platform, Selenium-like), Espresso (Android native), XCUITest (iOS native), Detox (React Native). Стратегии устройств: физические (дорого, точно), cloud-фермы (BrowserStack, Sauce Labs, AWS Device Farm, Yandex Cloud Mobile Testing Service — для РФ), эмуляторы/симуляторы (быстро, менее точно). Платформенно-специфичные concerns: permissions, push-уведомления, deep links, offline-режим.
Когда применять
Тестируйте на реальных устройствах для release-кандидатов — эмуляторы пропускают platform quirks (обработка notch, vibration-паттерны, биометрия). Поддерживайте device-матрицу, покрывающую версии OS + размеры экрана, которыми пользуются юзеры (analytics показывает). Эмуляторы в CI — для быстрого фидбека. Offline-поведение тестируйте явно; mobile-сети ломаются способами, которыми desktop нет.
Типичные ошибки
Ловушки Charles, mitmproxy: тестируют только последние iOS/Android (старые версии — всё ещё 30%+ реальных юзеров); игнор low-end устройств (ваш premium-CPU dev-телефон прячет perf-проблемы); не тестируют под плохой сетью (3G, packet loss); deep-link тесты работают в симуляторе, но ломаются на реальном Android (intent filters).