До вмісту
L-SYSTEM

рекомендованийсередній

SQL для QA-інженерів: T-SQL у щоденному тестуванні

T-SQL як робочий інструмент перевірки, а не як тема. Для QA-інженерів, які знають основи й тепер мають перевіряти, що система справді записала: звірка міграцій, пошук дублікатів, розпізнавання запиту, який зеленіє там, де мав би червоніти. Усе на одній вигаданій платформі — від чужої схеми до детермінованого асерту. Юніти відкриті в будь-якому порядку.

Заняття — вашою мовою: його веде асистент.

  • Матеріал: англійська
  • Іспит: англійська — складається на сайті, без перекладу
Як це влаштовано

Асистент бере матеріал курсу з нашого сервера й веде заняття вашою мовою.

Іспит складається на сайті, без асистента. Питання іспиту не перекладаються: так вирішено для всіх курсів.

Як під’єднати асистента

Шлях курсом

· юнітів: 24

порядок вільний · сходинки нижче — той порядок, який пропонує автор, а не умоваВигляд: карта · щаблі

7 · Precise retrieval

Дати, час і останній день місяця

~1,1 год

за задумом автора — після будь-якого із: «SELECT, що відповідає рівно на одне питання», «Типи, перетворення та параметри сортування»

12 · Aggregation

GROUP BY і перерахунок звіту

~1 год

за задумом автора — після будь-якого із: «SELECT, що відповідає рівно на одне питання», «Коли з'єднання розмножує рядки»

14 · Aggregation

Підзапити та CTE

~1 год

за задумом автора — після будь-якого із: «Коли з'єднання розмножує рядки», «GROUP BY і перерахунок звіту»

18 · Data before and after the test

Читання представлень, процедур і тригерів

~1 год

за задумом автора — після будь-якого із: «Тестові дані: підготовка та ідемпотентне очищення», «Перевірка того, що застосунок насправді записав»

фінал · у браузері, без асистента

Іспит

закрито · записатися на курс

Шлях курсом словами
  • Щабель 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 год
4SELECT, що відповідає рівно на одне питання

Перетворювати перевірне питання на запит, результат якого можливий, лише якщо система поводилася правильно

~0,9 год
5NULL і логіка, що має три відповіді

Пояснити, чому WHERE залишає лише рядки, що дають true, і що це робить із порівняннями з NULL

~1,1 год
6Типи, перетворення та параметри сортування

Читати точність і масштаб із визначення стовпця та будувати твердження за значенням, яке стовпець може зберігати, а не за введеним значенням

~1 год
7Дати, час і останній день місяця

Записувати фільтри за діапазоном дат як напіввідкриті інтервали з >= і < та пояснювати, чому кожна включна верхня межа має граничний випадок

~1,1 год
8INNER і LEFT: які рядки з'єднання відкидає

Обирати між INNER і LEFT, виходячи з перевірного питання, за тестом: якщо правдоподібна відповідь — «жодного», потрібне ліве з'єднання

~1 год
9Сироти й посилання в нікуди

Писати перевірки на сиріт із NOT EXISTS і з антиз'єднанням LEFT JOIN / IS NULL, перевіряючи ключ приєднаної таблиці, що не допускає NULL

~1 год
10Коли з'єднання розмножує рядки

Пояснювати, чому з'єднання за неунікальним ключем розмножує рядки і чому агрегат приховує це розмноження

~1,1 год
11Операції над множинами як звірка

Звіряти дві сукупності за допомогою EXCEPT в обох напрямках і пояснювати, чому один напрямок сам по собі може повідомити про успіх зламаної міграції

~1 год
12GROUP BY і перерахунок звіту

Групувати за стовпцем, що робить рядок унікальним, а не за стовпцем, який показує звіт, і пояснювати, що злиття робить із результатом

~1 год
13HAVING і пошук дублікатів

Знаходити дублікати, групуючи за бізнес-ключем і фільтруючи через HAVING COUNT(*) > 1

~1 год
14Підзапити та CTE

Розрізняти скалярні підзапити, підзапити-похідні таблиці та корельовані підзапити й визначати, де кожен із них дає збій

~1 год
15Віконні функції для тестувальника

Пояснювати, чим віконна функція відрізняється від GROUP BY, і обирати між ними, виходячи з питання

~1,1 год
16Тестові дані: підготовка та ідемпотентне очищення

Писати скрипти підготовки, що є ідемпотентними, ізольованими й самоідентифікованими, з очищенням на початку, а не в кінці

~1,1 год
17Перевірка того, що застосунок насправді записав

Перелічувати радіус ураження запису — кожну таблицю, яку операція має зачепити, — до написання будь-якого перевірного запиту

~1,1 год
18Читання представлень, процедур і тригерів

Отримувати визначення представлення, процедури, функції чи тригера й шукати в усіх тілах модулів посилання на таблицю або стовпець

~1 год
19Перетворення перевірки на детерміноване твердження

Обирати між булевою, скалярною та множинною формою твердження, за замовчуванням використовуючи запит порушень

~1,1 год
20Необов'язково: зберіть ENGAGE локально й виконайте перевірки

Розгорнути локальний екземпляр SQL Server і створити базу даних ENGAGE з наданого скрипта

~1,5 год
21Необов'язково: повільні запити й заблоковані середовища

Читати чотири поширені оператори плану й тлумачити розрив між оцінною та фактичною кількістю рядків

~0,8 год
22Необов'язково: дані клієнта, PII та ШІ-асистенти

Визначати, що вважається даними клієнта на проєкті професійних послуг, окрім персональних даних

~0,7 год
23Необов'язково: наскрізна звірка міграції

Проводити багаторівневу звірку — сукупність, підсумки, різниця множин, дублікати, посилання, розподіл — і формулювати, чого не може виявити кожен рівень

~1 год
24Необов'язково: чому схема виглядає саме так

Сформулювати єдине правило, що лежить в основі нормалізації, і перекласти його у версію тестувальника: дубльовані факти означають шлях у коді, який є тестовим випадком

~0,7 год