Как тестируется авторизация в веб-приложении?

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

Ответ

Тестирование авторизации включает проверку функциональности, безопасности и устойчивости системы. Основные аспекты:

1. Функциональное тестирование:

  • Валидные учетные данные: Успешный вход с корректным логином и паролем.
  • Невалидные данные: Проверка обработки ошибок для неверного пароля, несуществующего пользователя, пустых полей.
  • Восстановление доступа: Работоспособность сброса пароля через email или SMS.
  • Управление сессией: Выход из системы, истечение срока действия сессии, параллельные сессии.

2. Тестирование безопасности:

  • Защита передачи данных: Все запросы должны использовать HTTPS.
  • Защита от атак: Наличие механизмов против brute-force (например, блокировка после N попыток).
  • Безопасное хранение: Токены доступа (JWT) и пароли должны храниться/передаваться безопасно (пароли хэшируются).
  • SQL-инъекции: Попытки ввода ' OR '1'='1 в поля логина должны корректно отклоняться.

3. API-тестирование (пример на Python с requests):

import requests

# Тест успешной авторизации
login_data = {"username": "test_user", "password": "secure_pass123"}
response = requests.post("https://api.example.com/auth/login", json=login_data)

assert response.status_code == 200
response_json = response.json()
assert "access_token" in response_json
assert "refresh_token" in response_json

# Тест с неверным паролем
wrong_pass_data = {"username": "test_user", "password": "wrong"}
response = requests.post("https://api.example.com/auth/login", json=wrong_pass_data)
assert response.status_code == 401  # Unauthorized