Что проверяют при тестировании технических запросов (SQL, API)?

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

Ответ

Тестирование технических запросов направлено на проверку корректности, безопасности и эффективности операций с данными.

Тестирование SQL-запросов:

  1. Корректность результата: Запрос возвращает ожидаемые строки и столбцы.
  2. Полнота данных: Не пропущены ли необходимые записи (проверка JOIN, WHERE).
  3. Производительность: Время выполнения, использование индексов (анализ EXPLAIN).
  4. Безопасность: Уязвимость к 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):

  1. HTTP-статусы: 200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Server Error.
  2. Структура ответа: Соответствие контракту (JSON Schema, OpenAPI).
  3. Логика: Правильность фильтрации, пагинации, сортировки.
  4. Авторизация и права доступа: Доступен ли эндпоинт только для определённых ролей?

Пример теста 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"]  # Базовая проверка формата