Ответ
Как QA-инженер, я проверяю редиректы, анализируя HTTP-ответы от сервера. Ссылка для редиректа передается в заголовке Location ответа с кодом состояния 3xx (например, 301 Moved Permanently, 302 Found, 307 Temporary Redirect).
Источники этой ссылки с точки зрения тестирования:
- Конфигурация сервера: Правила редиректа могут быть прописаны в
.htaccess(Apache) или конфиге Nginx. Я проверяю, соответствуют ли фактические редиректы заявленным в требованиях (например, редирект с HTTP на HTTPS). - Код бэкенд-приложения: Логика редиректа может быть реализована в контроллере (Spring, Django, Express.js). Я тестирую различные условия, которые приводят к редиректу (успешная аутентификация, обработка формы, ошибки).
- JavaScript на стороне клиента: Редирект может быть инициирован через
window.location.href. Это проверяется в ходе тестирования фронтенда.
Как я это тестирую:
- Вручную: Использую браузерные DevTools (вкладка Network), чтобы увидеть цепочку запросов и ответов, статусы и заголовки.
- Автоматизация (пример на Python с requests):
import requests
Отключаем автоматическое следование редиректам, чтобы проанализировать первый ответ
response = requests.get('http://old-site.com/page', allow_redirects=False)
print(f'Status Code: {response.status_code}') # Ожидаем 301 или 302 print(f'Location Header: {response.headers.get("Location")}') # Извлекаем ссылку
Проверяем, что редирект ведет на правильный URL
assert response.headers['Location'] == 'https://new-site.com/page'
Можно проверить конечный результат с включенными редиректами
final_response = requests.get('http://old-site.com/page', allow_redirects=True) assert final_response.url == 'https://new-site.com/page'
* **В Selenium:** Можно проверить текущий URL после выполнения действия, которое должно вызвать редирект.
**Ключевые проверки:**
* Корректность кода статуса (постоянный vs временный редирект).
* Корректность целевого URL (абсолютный или относительный).
* Сохранение параметров запроса (query string) при редиректе, если это требуется.
* Отсутствие циклических редиректов.