Что такое хранимая процедура в контексте тестирования?

«Что такое хранимая процедура в контексте тестирования?» — вопрос из категории Базы данных и SQL, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Хранимая процедура (stored procedure) — это предварительно скомпилированный набор SQL-инструкций, хранящийся в базе данных. С точки зрения QA, это критически важный объект для тестирования, так как в нем часто содержится бизнес-логика.

Как я тестирую хранимые процедуры:

  1. Проверка функциональности: Запускаю процедуру с различными входными параметрами и сверяю результат с ожидаемым.

    -- Пример: тестирование процедуры, которая возвращает заказы клиента
    EXEC dbo.GetCustomerOrders @CustomerId = 123;
    -- Проверяю, что возвращаются именно заказы клиента 123 и что набор данных корректен.
  2. Проверка граничных значений и ошибочных сценариев: Что будет, если передать NULL, отрицательный ID или несуществующий ID?

    EXEC dbo.GetCustomerOrders @CustomerId = NULL; -- Должна быть обработка
    EXEC dbo.GetCustomerOrders @CustomerId = -1;   -- Должна быть обработка
  3. Проверка влияния на данные: Убеждаюсь, что процедуры, изменяющие данные (INSERT, UPDATE, DELETE), делают это корректно и в рамках транзакции.

    BEGIN TRANSACTION;
    EXEC dbo.ApplyDiscount @OrderId = 456, @Discount = 10;
    -- Проверяю, что скидка применилась к нужному заказу и пересчиталась итоговая сумма
    ROLLBACK TRANSACTION; -- Откатываю изменения после теста
  4. Интеграционное тестирование: Проверяю, как процедура работает в связке с другим кодом приложения (например, вызывается ли она корректно из бэкенд-сервиса).

Основные риски, на которые я обращаю внимание: некорректная логика условий, ошибки производительности при работе с большими объемами данных, отсутствие откатов при ошибках (rollback).