SQL для QA-инженеров: T-SQL в повседневном тестировании
T-SQL как рабочий инструмент проверки, а не как тема. Для QA-инженеров, знающих основы и которым теперь нужно проверять, что система действительно записала: сверка миграций, поиск дубликатов, распознавание запроса, который зеленеет там, где должен краснеть. Всё на одной вымышленной платформе — от чужой схемы до детерминированного ассерта. Юниты открыты в любом порядке.
Занятие — на вашем языке: его ведёт ассистент.
- Материал: английский
- Экзамен: английский — сдаётся на сайте, без перевода
Как это устроено
Ассистент берёт материал курса с нашего сервера и ведёт занятие на вашем языке.
Экзамен сдаётся на сайте, без ассистента. Вопросы экзамена не переводятся: так решено для всех курсов.
Путь по курсу
· юнитов: 24порядок свободный · ступени ниже — тот порядок, который предлагает автор, а не условиеВид: карта · ступени
Ступень 1
~0,8 ч
1 · Orientation
Где SQL входит в цикл тестирования
~0,8 ч
Ступень 2
~2,7 ч
по замыслу автора — после «Где SQL входит в цикл тестирования»
2 · Orientation
Чтение схемы, которую проектировали не вы
~1 ч
3 · Orientation
Безопасная работа на общем тестовом стенде
~1 ч
22 · Optional
Необязательно: данные клиента, PII и ИИ-ассистенты
~0,7 ч
Ступень 3
~0,9 ч
4 · Precise retrieval · по замыслу автора — после «Чтение схемы, которую проектировали не вы»
SELECT, который отвечает ровно на один вопрос
~0,9 ч
Ступень 4
~2,1 ч
Precise retrieval
5 · по замыслу автора — после «SELECT, который отвечает ровно на один вопрос»
NULL и логика, у которой три ответа
~1,1 ч
6 · по замыслу автора — после любого из: «Чтение схемы, которую проектировали не вы», «SELECT, который отвечает ровно на один вопрос»
Типы, преобразования и параметры сортировки
~1 ч
Ступень 5
~2,1 ч
7 · Precise retrieval · по замыслу автора — после любого из: «SELECT, который отвечает ровно на один вопрос», «Типы, преобразования и параметры сортировки»
Даты, время и последний день месяца
~1,1 ч
8 · Across tables · по замыслу автора — после любого из: «SELECT, который отвечает ровно на один вопрос», «NULL и логика, у которой три ответа»
INNER и LEFT: какие строки соединение выбрасывает
~1 ч
Ступень 6
~3,9 ч
9 · Across tables · по замыслу автора — после «INNER и LEFT: какие строки соединение выбрасывает»
~1 ч
10 · Across tables · по замыслу автора — после «INNER и LEFT: какие строки соединение выбрасывает»
Когда соединение размножает строки
~1,1 ч
11 · Across tables · по замыслу автора — после любого из: «NULL и логика, у которой три ответа», «INNER и LEFT: какие строки соединение выбрасывает»
Операции над множествами как сверка
~1 ч
21 · Optional · по замыслу автора — после любого из: «Безопасная работа на общем тестовом стенде», «Даты, время и последний день месяца»
Необязательно: медленные запросы и заблокированные среды
~0,8 ч
Ступень 7
~2,1 ч
12 · Aggregation · по замыслу автора — после любого из: «SELECT, который отвечает ровно на один вопрос», «Когда соединение размножает строки»
~1 ч
16 · Data before and after the test · по замыслу автора — после любого из: «Безопасная работа на общем тестовом стенде», «Операции над множествами как сверка»
Тестовые данные: подготовка и идемпотентная очистка
~1,1 ч
Ступень 8
~2,7 ч
13 · Aggregation · по замыслу автора — после «GROUP BY и пересчёт отчёта»
~1 ч
14 · Aggregation · по замыслу автора — после любого из: «Когда соединение размножает строки», «GROUP BY и пересчёт отчёта»
~1 ч
24 · Optional · по замыслу автора — после любого из: «Чтение схемы, которую проектировали не вы», «GROUP BY и пересчёт отчёта»
Необязательно: почему схема выглядит именно так
~0,7 ч
Ступень 9
~2,1 ч
15 · Aggregation · по замыслу автора — после любого из: «HAVING и поиск дубликатов», «Подзапросы и CTE»
Оконные функции для тестировщика
~1,1 ч
23 · Optional · по замыслу автора — после 2 из: «Сироты и ссылки в никуда», «Операции над множествами как сверка», «HAVING и поиск дубликатов»
Необязательно: сквозная сверка миграции
~1 ч
Ступень 10
~1,1 ч
17 · Data before and after the test · по замыслу автора — после любого из: «Оконные функции для тестировщика», «Тестовые данные: подготовка и идемпотентная очистка»
Проверка того, что приложение действительно записало
~1,1 ч
Ступень 11
~2,1 ч
Data before and after the test · по замыслу автора — после любого из: «Тестовые данные: подготовка и идемпотентная очистка», «Проверка того, что приложение действительно записало»
Ступень 12
~1,5 ч
20 · Optional · по замыслу автора — после любого из: «Чтение схемы, которую проектировали не вы», «Превращение проверки в детерминированное утверждение»
Необязательно: соберите ENGAGE локально и выполните проверки
~1,5 ч
Экзамен
закрыт · записаться на курс
финал · в браузере, без ассистента
Экзамен
Путь по курсу словами
- Ступень 1 · Где SQL входит в цикл тестирования — ~0,8 ч
- Ступень 2 · Чтение схемы, которую проектировали не вы — по замыслу автора — после «Где SQL входит в цикл тестирования»; ~1 ч
- Ступень 2 · Безопасная работа на общем тестовом стенде — по замыслу автора — после «Где SQL входит в цикл тестирования»; ~1 ч
- Ступень 2 · Необязательно: данные клиента, PII и ИИ-ассистенты — по замыслу автора — после «Где SQL входит в цикл тестирования»; необязательный; ~0,7 ч
- Ступень 3 · SELECT, который отвечает ровно на один вопрос — по замыслу автора — после «Чтение схемы, которую проектировали не вы»; ~0,9 ч
- Ступень 4 · NULL и логика, у которой три ответа — по замыслу автора — после «SELECT, который отвечает ровно на один вопрос»; ~1,1 ч
- Ступень 4 · Типы, преобразования и параметры сортировки — по замыслу автора — после любого из: «Чтение схемы, которую проектировали не вы», «SELECT, который отвечает ровно на один вопрос»; ~1 ч
- Ступень 5 · Даты, время и последний день месяца — по замыслу автора — после любого из: «SELECT, который отвечает ровно на один вопрос», «Типы, преобразования и параметры сортировки»; ~1,1 ч
- Ступень 5 · INNER и LEFT: какие строки соединение выбрасывает — по замыслу автора — после любого из: «SELECT, который отвечает ровно на один вопрос», «NULL и логика, у которой три ответа»; ~1 ч
- Ступень 6 · Сироты и ссылки в никуда — по замыслу автора — после «INNER и LEFT: какие строки соединение выбрасывает»; ~1 ч
- Ступень 6 · Когда соединение размножает строки — по замыслу автора — после «INNER и LEFT: какие строки соединение выбрасывает»; ~1,1 ч
- Ступень 6 · Операции над множествами как сверка — по замыслу автора — после любого из: «NULL и логика, у которой три ответа», «INNER и LEFT: какие строки соединение выбрасывает»; ~1 ч
- Ступень 6 · Необязательно: медленные запросы и заблокированные среды — по замыслу автора — после любого из: «Безопасная работа на общем тестовом стенде», «Даты, время и последний день месяца»; необязательный; ~0,8 ч
- Ступень 7 · GROUP BY и пересчёт отчёта — по замыслу автора — после любого из: «SELECT, который отвечает ровно на один вопрос», «Когда соединение размножает строки»; ~1 ч
- Ступень 7 · Тестовые данные: подготовка и идемпотентная очистка — по замыслу автора — после любого из: «Безопасная работа на общем тестовом стенде», «Операции над множествами как сверка»; ~1,1 ч
- Ступень 8 · HAVING и поиск дубликатов — по замыслу автора — после «GROUP BY и пересчёт отчёта»; ~1 ч
- Ступень 8 · Подзапросы и CTE — по замыслу автора — после любого из: «Когда соединение размножает строки», «GROUP BY и пересчёт отчёта»; ~1 ч
- Ступень 8 · Необязательно: почему схема выглядит именно так — по замыслу автора — после любого из: «Чтение схемы, которую проектировали не вы», «GROUP BY и пересчёт отчёта»; необязательный; ~0,7 ч
- Ступень 9 · Оконные функции для тестировщика — по замыслу автора — после любого из: «HAVING и поиск дубликатов», «Подзапросы и CTE»; ~1,1 ч
- Ступень 9 · Необязательно: сквозная сверка миграции — по замыслу автора — после 2 из: «Сироты и ссылки в никуда», «Операции над множествами как сверка», «HAVING и поиск дубликатов»; необязательный; ~1 ч
- Ступень 10 · Проверка того, что приложение действительно записало — по замыслу автора — после любого из: «Оконные функции для тестировщика», «Тестовые данные: подготовка и идемпотентная очистка»; ~1,1 ч
- Ступень 11 · Чтение представлений, процедур и триггеров — по замыслу автора — после любого из: «Тестовые данные: подготовка и идемпотентная очистка», «Проверка того, что приложение действительно записало»; ~1 ч
- Ступень 11 · Превращение проверки в детерминированное утверждение — по замыслу автора — после любого из: «Тестовые данные: подготовка и идемпотентная очистка», «Проверка того, что приложение действительно записало»; ~1,1 ч
- Ступень 12 · Необязательно: соберите ENGAGE локально и выполните проверки — по замыслу автора — после любого из: «Чтение схемы, которую проектировали не вы», «Превращение проверки в детерминированное утверждение»; необязательный; ~1,5 ч
Программа · 24 юнита
| 1 | Где SQL входит в цикл тестирования Назвать четыре момента цикла тестирования, в которых запрос к базе данных — единственное доступное доказательство | ~0,8 ч |
| 2 | Чтение схемы, которую проектировали не вы Находить незнакомую таблицу или столбец запросом к INFORMATION_SCHEMA, а не просмотром обозревателя объектов | ~1 ч |
| 3 | Безопасная работа на общем тестовом стенде Получать каждую разрушающую инструкцию из SELECT с идентичными FROM и WHERE, чтобы инструкция никогда не существовала без своего фильтра | ~1 ч |
| 4 | SELECT, который отвечает ровно на один вопрос Превращать проверочный вопрос в запрос, результат которого возможен, только если система повела себя правильно | ~0,9 ч |
| 5 | NULL и логика, у которой три ответа Объяснить, почему WHERE оставляет только строки, дающие true, и что это делает со сравнениями с NULL | ~1,1 ч |
| 6 | Типы, преобразования и параметры сортировки Читать точность и масштаб из определения столбца и строить утверждение по значению, которое столбец может хранить, а не по введённому значению | ~1 ч |
| 7 | Даты, время и последний день месяца Записывать фильтры по диапазону дат как полуоткрытые интервалы с >= и < и объяснять, почему у каждой включающей верхней границы есть граничный случай | ~1,1 ч |
| 8 | INNER и LEFT: какие строки соединение выбрасывает Выбирать между INNER и LEFT исходя из проверочного вопроса, по тесту: если правдоподобный ответ — «ни одной», нужно левое соединение | ~1 ч |
