Ответ
Тестирование технических запросов направлено на проверку корректности, безопасности и эффективности операций с данными.
Тестирование SQL-запросов:
- Корректность результата: Запрос возвращает ожидаемые строки и столбцы.
- Полнота данных: Не пропущены ли необходимые записи (проверка
JOIN,WHERE). - Производительность: Время выполнения, использование индексов (анализ
EXPLAIN). - Безопасность: Уязвимость к SQL-инъекциям. Неправильно:
"SELECT * FROM users WHERE id = " + user_input.
Пример проверки SQL-запроса:
-- Исходный запрос: получить активных пользователей из Москвы
SELECT id, email, city FROM users WHERE is_active = TRUE AND city = 'Moscow';
-- Что проверяем:
-- 1. Типы и имена возвращаемых колонок.
-- 2. Все ли строки с city='Moscow' и is_active=true попали в результат.
-- 3. Нет ли в результате пользователей из других городов.
Тестирование API-запросов (REST, GraphQL):
- HTTP-статусы:
200 OK,201 Created,400 Bad Request,404 Not Found,500 Internal Server Error. - Структура ответа: Соответствие контракту (JSON Schema, OpenAPI).
- Логика: Правильность фильтрации, пагинации, сортировки.
- Авторизация и права доступа: Доступен ли эндпоинт только для определённых ролей?
Пример теста API на Python (requests):
import requests
# Проверка GET-запроса
response = requests.get("https://api.example.com/users/1")
assert response.status_code == 200
user_data = response.json()
assert "email" in user_data
assert "@" in user_data["email"] # Базовая проверка формата