Ответ
Тестирование авторизации включает проверку функциональности, безопасности и устойчивости к атакам.
Основные сценарии:
- Позитивные тесты:
- Успешный вход с валидными учетными данными.
- Выход (logout) и завершение сессии.
- Восстановление пароля через email/телефон.
- Негативные тесты:
- Вход с неверным логином или паролем (должна быть общая ошибка, не уточняющая, что именно неверно).
- Вход с пустыми полями.
- Превышение лимита неудачных попыток с последующей блокировкой.
- Истечение срока действия сессии (timeout).
- Тесты на безопасность:
- SQL-инъекция: Попытка ввода
' OR '1'='1в поля логина/пароля. - XSS: Попытка ввода
<script>alert('XSS')</script>. - Перебор учетных данных (Brute-force): Проверка наличия задержки или капчи после нескольких неудач.
- Перехват сессии: Попытка использовать украденный или поддельный токен.
- SQL-инъекция: Попытка ввода
Пример теста для API на Python (с использованием requests):
import requests
def test_successful_login():
url = "https://api.example.com/login"
payload = {"username": "valid_user", "password": "valid_pass"}
response = requests.post(url, json=payload)
assert response.status_code == 200
assert "access_token" in response.json()
assert "refresh_token" in response.json()
def test_sql_injection_prevention():
url = "https://api.example.com/login"
payload = {"username": "' OR '1'='1", "password": "any"}
response = requests.post(url, json=payload)
# Ожидаем отказ в авторизации, а не успешный вход или 500 ошибку
assert response.status_code == 401 or response.status_code == 400