Как QA ресерчить почему отвалилась авторизация?

У 90% таких случаев всего 4 большие группы причин. Если идти по ним логично - обычно за 10-20 минут находишь виновника (или хотя бы сузишь круг до "это точно не клиент/бэк"

Шаг 0. Самое первое что нужно сделать: воспроизведи и зафиксируй

- На каком устройстве/ОС/версии приложения? - Wi-Fi или мобильный интернет? - После какого действия сломалось (регистрация, смена пароля, SSO(метод позволяющий юзеру получить доступ к множеству приложений с помощью 1 учетки), биометрия)? - Скриншот ошибки + что пишет в алерте (если есть)

Шаг 1. Ушел ли запрос вообще? (Нет соединения/нестабильная сеть) Самая частая причина что телефон просто не может достучаться до сервера Что делаем: - Открывам сниффер - Включаем захват трафика и пытаемся залогиниться - Видишь запрос? значит идем дальше Не видишь запрос? это проблема на клиенте или до сервера

Смотрим логи клиента: Android: adb logcat | grep -i "network|ssl|dns|timeout|http" iOS: Console.app или Xcode - ищем "CFNetwork", "NSURLSession", "SSL", "timeout" Подсказки: - DNS timeout/Name not resolved - плохой DNS (Wi-Fi в кафе, VPN) - Connection timed out - нет интернета/firewall/блокировка страны - SocketException/ECONNRESET - сеть отвалилась посреди запроса

Шаг 2. Запрос ушел, но сервер его не видит (TLS/сертификаты/прокси/gateway)

Запрос в Charles есть, но в бэклогах тишина, или ответ пришёл странный (502, 504, пустой) Чекаем: - TLS handshake прошел? В Charles смотри на SSL-иконку, должна быть зеленая Если красная, то сертификат не доверенный (Сертификат истек/отозван/не покрывает поддомен, антивирус, ATS блокирует слабые шифры) - Прокси/VPN/балансировщик/WAF/API Gateway - - В Charles видно, что запрос ушёл на Cloudflare/Akamai/NGINX - а дальше 403/429/502 - - Пользователь с VPN из другой страны - Cloudflare блокирует по гео/репутации IP - - Rate limit на gateway - слишком много попыток логина - 429 Too Many Requests

Выключи VPN/переключись на мобильный интернет без прокси и если заработало - виноват прокси/gateway

Шаг 3. Запрос дошел, сервер ответил 401/403 (логика backend)

Запрос в логах бэка есть, статус 401 Unauthorized/403 Forbidden/кастомный JSON {"error": "invalid_token"}

Теперь смотрим: 1) 401 - токен/логин/пароль неверные или просрочены. Проверяем что: - Refresh token живой (многие забывают рефрешить) - Access token правильный (иногда клиент шлет старый) - SSO (Google/Apple) - чекни id_token/access_token в запросе 2) 403 - доступ запрещен, хотя токен валидный, обычно бывает если пользователь заблокирован, роль не подходит или аккаунт не подтвержден 3) Бизнес-ошибки (422, 400 с текстом): "Слишком много попыток" "Неверный код из SMS" "Email не подтвержден"

Что делаем: - смотрим точный ответ сервера в респонсе - копируем токен и проверяем на jwt.io (если JWT) - берем тот же токен и шлем через Postman - если там тоже 401 значит бэк виноват - если в Postman работает, а в приложении нет, то клиент что-то портит (добавляет лишний заголовок, кодирует неправильно)

Краткий чек-лист куда смотреть в 80% случаев: 1) Нет запроса - логи клиента - сеть/DNS/SSL handshake 2) Запрос есть, ответа нет и 5xx - TLS/прокси/gateway/WAF 3) 401/403 - токен/refresh/SSO/блокировка аккаунта 4) Кастомная ошибка - бизнес-логика (напр email не подтвержден и тд)

Как QA ресерчить почему отвалилась авторизация? | Сетка — социальная сеть от hh.ru