Итоговый проект: аудит отчёта и целостности · QA Orbit
Перейти к содержимому
QA ORBIT
Новости Инструменты Библиотека Полезные сайты Курсы ИИ и тестирование
Войти
КурсыТренажёры3
Маршруты обучения
КурсыSQL для QA: запросы, связи и целостностьУрок 6
Программа курса

SQL для QA: запросы, связи и целостность

0 из 6 уроков пройдено
01SELECT, условия и смысл NULL≈ 45 мин02Агрегации, GROUP BY и HAVING≈ 45 мин03JOIN и кардинальность: как не потерять и не размножить≈ 50 мин04Подзапросы и проверки целостности≈ 45 мин05Ограничения, транзакции и безопасный откат≈ 50 мин06Итоговый проект: аудит отчёта и целостности≈ 65 мин
Учебные данные. Реальные навыки.
Урок 06 / 6 · 06 · Итоговый проект≈ 65 мин с практикой

Итоговый проект: аудит отчёта и целостности

Собираем воспроизводимый SQL-пакет, который обнаруживает три дефекта отчёта и подтверждает безопасный откат.

В своём темпе
Что вы сможете после урока
  • Связать требование, запрос, точный оракул и фактический результат.
  • Показать контрпримеры для потери строк, размножения и NULL.
  • Передать коллеге полный пакет запуска с границами вывода.

Задача проекта

Команда OrbitDesk готовит отчёт по работе пользователей. В нём должны остаться все четыре участника, число опубликованных задач каждого и отдельный список задач без комментариев. Старый вариант теряет пользователей без публикаций, новый после добавления комментариев завышает счётчик, а поиск свободных исполнителей возвращает пусто. Ваша работа — объяснить три независимые причины и передать исправления с доказательствами на SQLite-CORE-1.

Не начинайте с общего процента успешности. Сначала составьте матрицу: требование, идентификатор проверки, исходные строки, ожидаемые строки, фактические строки, статус. Результат «пройдено» допустим после запуска, а до него указывайте «не выполнено». Готовые ответы служат независимым оракулом и учебным разбором, но не являются доказательством вашего локального исполнения. Если SQLite недоступна, можно выполнить ручной разбор и честно оставить технический запуск незавершённым.

Минимальный полезный пакет

Включите fixture без клиентских данных, queries с Q1–Q13, JSON точных ожиданий, отдельный сценарий транзакций и команду python3 verify-sql.py. Для ручного запуска объясните, как создать новую пустую базу и включить внешние ключи на каждом используемом соединении. Не добавляйте DROP для удобства повторного выполнения в произвольном файле: однозначное создание изолированной базы делает восстановление прозрачнее.

Основные оракулы: опубликованные задачи по авторам u1=2,u2=1,u3=0,u4=0; задачи без комментариев t2,t4,t6; пользователь без назначений u4. После соединения с comments первый отчёт должен остаться прежним. Число всех задач шесть, оценённых четыре, сумма десять, среднее известных 2,5. Эти числа проверяют разные свойства; одно не заменяет другое. Для t2 после завершённого сценария отката требуются title=Draft,estimate=NULL,priority=1.

Как описать найденный дефект

Для потери пользователей приложите неправильный WHERE и его фактические строки: только u1 и u2. Для размножения покажите промежуточные t1/c1,t1/c2,t5/c5, затем неправильные 3 и 2 вместо 2 и 1. Для NOT IN приложите наличие NULL в assignee_id и ожидаемого u4. Каждый пример должен воспроизводиться на неизменённом снимке; исправление одного запроса не должно случайно менять данные для другого.

Отделяйте дефект самого SQL от изменения требования. Если менеджер теперь хочет исключить участников без публикаций, прежний полный список уже не тот оракул. Зафиксируйте новую версию постановки и пересчитайте ожидания. Аналогично «создатель» и «исполнитель» не взаимозаменяемы: переключение поля меняет предмет отчёта. В учебном проекте договор фиксирован, поэтому исправления можно оценить однозначно.

Границы результата

Успех этого проекта означает, что вы умеете читать схему, строить проверяемые запросы и объяснять последствия JOIN, NULL и транзакций на конкретном снимке. Он не доказывает качество реального отчёта под нагрузкой, безопасность доступа или соответствие другой СУБД. SQLite и PostgreSQL имеют различия, поэтому перенос требует проверки синтаксиса, типов и ограничений целевой системы.

Перед передачей распакуйте пакет в новую папку и повторите команду по собственной инструкции. Уберите абсолютные личные пути и случайные файлы базы. Запишите версию SQLite и Python, фактическое число проверок и код завершения. В рубрике оцените воспроизводимость, точность результатов, объяснение контрпримеров и честность статусов. Красивый отчёт без возможности заново получить строки не закрывает проект; небольшой пакет с точным оракулом и понятным запуском уже полезен коллеге.

Итоговый артефакт

Скачивания содержат эталонный пакет и решения. Сначала выполните собственные запросы и отчёт, затем сопоставьте с expected-results.json. Самопроверка на сайте подтверждает ваше знакомство с рубрикой, а не внешнюю экспертную оценку SQL.

Источники и проверка фактов

SQLite · Command-line shellРучная работа с изолированной базой и выводом.Python · sqlite3Встроенное соединение с SQLite и обработка ошибок.

Авторский учебный материал · Редакция QA Orbit · версия 2026-10-28.1

Теперь применим это к задачеПопробуйте сами, прежде чем открывать разбор.
Предыдущий урокОграничения, транзакции и безопасный откатПродолжить обучениеВыбрать следующий курс
QA ORBIT

Проверяй. Понимай. Расти.

Пространство осмысленного тестирования.
ИсследуйтеНовостиИнструментыБиблиотека
РазвивайтесьКурсыТренажёрыМаршруты обученияИИ и тестирование
Оставайтесь на орбитеО проекте Полезные сайтыГлоссарий
© 2026 QA Orbit. Сделано с вниманием к деталям.
КонфиденциальностьУсловия использования Всегда есть что исследовать