Шпаргалка: Базы данных для тестировщика

Интерактивное руководство по основам баз данных для QA инженеров.

Основные понятия

База данных (БД)

Упорядоченный набор данных. Представьте это как склад или библиотеку информации.

СУБД

Система управления БД. Программа (интерфейс), которая позволяет вам работать с данными на складе.

Записи, поля и ключи

Реляционные базы данных состоят из таблиц, которые хранят записи (строки) и поля (столбцы).

Таблица: Users
UserID (PK)NameEmail
1Аннаanna@test.com
2Иванivan@test.com
Таблица: Orders
OrderIDUserID (FK)Product
1011Книга
1021Ручка
1032Блокнот
  • Первичный ключ (PK): Уникально идентифицирует каждую запись. В таблице `Users` это `UserID`.
  • Внешний ключ (FK): `UserID` в таблице `Orders` является внешним ключом, который ссылается на `UserID` в таблице `Users`, создавая между ними связь.

SQL vs NoSQL: В чем разница?

Реляционные (SQL)

Аналогия: Аккуратно организованная картотека. Данные хранятся в связанных таблицах.

UserIDName
1Анна
OrderIDUserIDProduct
1011Книга

Нереляционные (NoSQL)

Аналогия: Стопка документов. Каждый документ хранит всю информацию о себе.

{
  "UserID": 1,
  "Name": "Анна",
  "Orders": [
    { "OrderID": 101, "Product": "Книга" }
  ]
}

Типы отношений

Один к одному (1:1)

Одна запись в таблице А соответствует одной записи в таблице Б. Пример: Пользователь и Паспорт.

Один ко многим (1:N)

Одна запись в таблице А может быть связана с несколькими записями в таблице Б. Пример: Автор и его Книги.

Многие ко многим (M:N)

Множество записей в таблице А могут быть связаны с множеством записей в таблице Б. Реализуется через третью, связующую таблицу. Пример: Студенты и Курсы.

Нормальные формы: Интерактивный симулятор

Нормализация — это процесс организации данных для уменьшения дублирования. Давайте пройдем этот путь шаг за шагом.

Шаг 0: Ненормализованные данные (0NF)

У нас одна большая таблица, где данные повторяются, а товары хранятся в разных столбцах. Это неудобно и неэффективно.

Заказ_IDИмя клиентаТовар 1Цена 1Товар 2Цена 2
001АннаКнига10Ручка2
002ИванБлокнот5
Заказ_IDИмя клиентаГородРегионТоварЦена
001АннаМинскМинская облКнига10
001АннаМинскМинская облРучка2
002ИванГомельГомельскаяБлокнот5
Таблица: Клиенты
Клиент_IDИмяГородРегион
1АннаМинскМинская обл
2ИванГомельГомельская
Таблица: Товары в заказе
Заказ_IDКлиент_IDТоварЦена
0011Книга10
0011Ручка2
0022Блокнот5
Таблица: Города
Город_IDГородРегион
1МинскМинская обл
2ГомельГомельская
Таблица: Клиенты
Клиент_IDИмяГород_ID
1Анна1
2Иван2
Таблица: Товары в заказе
Заказ_IDКлиент_IDТоварЦена
0011Книга10
0011Ручка2
0022Блокнот5

Советы для QA

  • Настаивайте на доступе: Не всегда тестировщикам дают доступ к БД. Настаивайте на его получении (хотя бы на чтение), это критически важно для проверки корректности сохранения данных.
  • Ограниченные права: Будьте готовы, что ваши права будут ограничены. На Production доступ обычно есть только у избранных.
  • SELECT перед DELETE: Прежде чем выполнять удаление данных, всегда проверяйте, что именно вы собираетесь удалить, с помощью запроса SELECT. Это убережет от фатальных ошибок.
  • Миграции и бэкапы: Уточняйте у команды, как проходят миграции (изменения схемы БД) и как часто делаются бэкапы (резервные копии). Это важно для планирования тестов.
  • Создание данных: Используйте БД для быстрого создания тестовых данных (пользователей, заказов), вместо того чтобы делать это через UI.