Девять запросов: 71 оплаченный заказ без платежа и 53 расхождения в суммах
Пять таблиц, 9675 строк, девять проверок целостности — с запросами и числами.
- Открыть чат14 дней бесплатно, токены в подарок
Что это
Агент ищет дефект в данных, а не только в интерфейсе
Половина «странных» дефектов объясняется данными: заказ оплачен, платежа нет; сумма в чеке не равна сумме строк. Агент пишет запросы, которые это показывают, и приносит число — не «где-то расходится», а «71 заказ из 1714 оплаченных без платежа».
Вход и выход
Что проверено запросами, а что подключим
Вход
База магазина: пользователи, заказы, платежи, строки заказа, события. 9675 строк в пяти таблицах.
Запросы — выполнены
Девять проверок целостности: JOIN, LEFT JOIN, GROUP BY, сравнение сумм. Данные кейса собраны искусственно.
Находки — посчитаны
71 оплаченный заказ без платежа, 53 расхождения суммы, 3 платежа по неоплаченному, 22 заказа удалённого пользователя.
Ложные тревоги — отсеяны
Дублей платежа нет, заказов без пользователя нет, заказов в будущем нет — три проверки дали ноль.
Боевая база — подключим
Postgres Pro или ЛИНТЕР: роль только на SELECT и адрес стенда, один день.
Что открывается: запросы, находки и что это значит
Данные кейса сконструированы; запросы, СУБД и правила проверки — настоящие
- 1
Девять запросов
Название проверки, SQL, результат: сколько строк и что это значит для дефекта.
- 2
Находки по целостности
Четыре проверки нашли расхождения, три дали ноль, две — справочные.
- 3
Вывод и что делать
Где ошибка пишется кодом, где данные уже испорчены, и что проверить в первую очередь.
Что агент делает и что остаётся человеку
| Пишет запрос | Агент: JOIN, GROUP BY, сравнение сумм — под конкретную гипотезу дефекта. Человек: говорит, что именно болит. |
|---|---|
| Считает находки | Агент: число строк и долю от общего. Человек: решает, что из этого дефект. |
| Отделяет ложные | Агент: проверки, которые дали ноль, тоже в отчёте — это доказательство, а не пустота. |
| Ищет причину | Агент: где запись появляется — код или миграция. Человек: исправляет и решает про данные. |
| Проверяет после | Агент: повторяет те же запросы после исправления. Человек: подтверждает, что данные чистые. |
Сценарий: от жалобы до запроса
- 1
Гипотеза
Из дефекта: «оплатил, а статус не тот» — значит проверяем связку заказ-платёж.
- 2
Схема
Агент читает структуру: ключи, связи, обязательные поля.
- 3
Запрос
LEFT JOIN ищет отсутствующее, сравнение сумм — расхождение, GROUP BY — дубли.
- 4
Число
Сколько строк затронуто и какая это доля — иначе находка не измерена.
- 5
Причина
Где запись появляется: код, миграция или ручная правка.
- 6
Выход
Запросы и находки файлами; повторный прогон после исправления.
Откуда данные
Что нужно на входе
Схема базы
Таблицы и связи: без них запрос пишется наугад.
Тестовый контур
Копия базы или стенд: на боевой агент ходит только на чтение и по разрешению.
Правила
Что считается целым: сумма заказа равна сумме строк, оплаченный заказ имеет платёж.
Выгрузка
Если доступа нет: файл выгрузки, загруженный в песочницу — третий законный вход.
Что читаем, что пишем и что нужно от вас
Что подключим
Postgres Pro
Читаем: таблицы, представления, планы запросов. Пишем: ничего — только SELECT. Нужно: роль на чтение и адрес стенда. Срок: 1 день.
СУБД ЛИНТЕР
Читаем: данные и планы запросов. Пишем: ничего. Нужно: доступ на чтение к тестовой базе. Срок: до 3 дней.
1С — своя база
Читаем: регистры и справочники через OData. Пишем: ничего. Нужно: адрес OData и право чтения. Срок: 1 день.
Astra Linux
Читаем: журналы СУБД рядом с запросом. Пишем: ничего. Нужно: SSH с правом чтения журналов. Срок: 1 день.
Яндекс Трекер
Читаем: дефект, из которого родилась гипотеза. Пишем: находку с числом. Нужно: очередь и токен. Срок: 1 день.
Норма, на которую опирается работа
- ГОСТ Р 56921-2016, часть 2Процессы тестирования: проверка данных — часть функционального уровня, а не «отдельная история».
- 152-ФЗ, ст. 5 и 7В выгрузку и отчёт не попадают настоящие персональные данные: только обезличенные строки.
- ГОСТ 34.603-92Протокол испытаний: находка фиксируется с числом, запросом и датой.
Краевые случаи
Где решает человек, а не агент
Данные испорчены исторически
Агент показывает объём; решение о миграции и потере — за владельцем.
Запрос тяжёлый
Агент не запускает его на боевой базе в час пик: сначала тестовый контур.
Нужны персональные данные
Агент останавливается: сверка идёт по обезличенным или агрегированным строкам.
Правило не задано
Агент предлагает правило («сумма заказа равна сумме строк») и ждёт подтверждения.
Что обычно возражают
«Разработчик сам посмотрит в базе»
Посмотрит — после дефекта. Запрос с числом экономит этот круг.
«Доступ к базе не дадим»
Тогда работаем по выгрузке в песочнице: результат тот же, риска меньше.
«Это же данные, а не код»
Половина дефектов живёт на стыке: код пишет не то, что ждут, и данные это показывают.
«Кто отвечает за исправление данных?»
Владелец данных; агент даёт объём и список затронутых строк.
«Почему 1857 расхождений по строкам?»
Потому что в кейсе суммы строк не сходятся с заказом — это и есть находка, а не сбой запроса.
Границы
Чего агент не делает
Не пишет в базу: только чтение, без UPDATE и DELETE. Не выгружает персональные данные (152-ФЗ). Не запускает тяжёлые запросы на боевой базе в рабочее время. Не объявляет данные испорченными без правила, с которым их сверяли. Гарантий нет — ст. 5 ФЗ-38.
Вопросы, которые задают первыми
С чего начать?
Пришлите схему базы и один спорный дефект — вернём запросы и число расхождений.
Что нужно от нас?
Роль только на SELECT и адрес тестового контура. Или выгрузку — тогда без доступа.
Это заменит DBA?
Нет: агент находит расхождения и считает объём, исправление — за командой.
Насколько тяжёлые запросы?
JOIN и GROUP BY по таблицам до сотен тысяч строк; на боевой базе не запускаем.
Как проверить, что стало чисто?
Тот же набор запросов после исправления: ноль находок — это доказательство.
Роль целиком
Что ещё берёт на себя агент
Тест-план и матрица трассируемости
Восемь ворот приёмки → восемнадцать проверок → метод и результат: что закрыто, а что нет.
Регресс к релизу: набор и прогон
Восемь автотестов, прогон 23 секунды, один красный: регресс ловит реальный дефект.
Баг-репорт с шагами и артефактами
Два дефекта с живого сайта: шаги, ожидаемо и фактически, фрагмент журнала, severity.
Разбор требований и вопросы к ТЗ
Пять противоречий в требованиях и вопросы, которые нужно закрыть до первого прогона.
Прогон API: REST, коды и JSON
Шесть проверок контракта: коды, тип, тело, схема, негативный случай — с временем ответа.
Отчёт о тестировании и готовности
Двадцать шесть находок по severity и вердикт: что блокирует релиз, а что нет.
Тест-кейсы доработки 1С
Двадцать четыре проверки и протокол испытаний — готовая страница по приёмке доработки.
Требования к доработке ERP
Карта влияния изменений и регресс — готовая страница по требованиям.
Роли
Сверить данные по одному дефекту
Пришлите схему и спорный случай — вернём запросы, число расхождений и вывод, где искать причину.