Ответ
Хранимая процедура (stored procedure) — это предварительно скомпилированный набор SQL-инструкций, хранящийся в базе данных. С точки зрения QA, это критически важный объект для тестирования, так как в нем часто содержится бизнес-логика.
Как я тестирую хранимые процедуры:
-
Проверка функциональности: Запускаю процедуру с различными входными параметрами и сверяю результат с ожидаемым.
-- Пример: тестирование процедуры, которая возвращает заказы клиента EXEC dbo.GetCustomerOrders @CustomerId = 123; -- Проверяю, что возвращаются именно заказы клиента 123 и что набор данных корректен. -
Проверка граничных значений и ошибочных сценариев: Что будет, если передать
NULL, отрицательный ID или несуществующий ID?EXEC dbo.GetCustomerOrders @CustomerId = NULL; -- Должна быть обработка EXEC dbo.GetCustomerOrders @CustomerId = -1; -- Должна быть обработка -
Проверка влияния на данные: Убеждаюсь, что процедуры, изменяющие данные (
INSERT,UPDATE,DELETE), делают это корректно и в рамках транзакции.BEGIN TRANSACTION; EXEC dbo.ApplyDiscount @OrderId = 456, @Discount = 10; -- Проверяю, что скидка применилась к нужному заказу и пересчиталась итоговая сумма ROLLBACK TRANSACTION; -- Откатываю изменения после теста -
Интеграционное тестирование: Проверяю, как процедура работает в связке с другим кодом приложения (например, вызывается ли она корректно из бэкенд-сервиса).
Основные риски, на которые я обращаю внимание: некорректная логика условий, ошибки производительности при работе с большими объемами данных, отсутствие откатов при ошибках (rollback).