Тестирование баз данных

Прежде чем приступить к собственно руководству по тестированию баз данных (БД), давайте рассмотрим в качестве примера интернет-магазин. Практически на всех уровнях пользовательского взаимодействия с интернет-магазином используется база данных:

  1. Пользователь входит в систему.
  2. Далее он ищет нужный товар и добавляет его в корзину для оформления покупки.
  3. Пользователь видит итоговую стоимость (которая может включать налоги, скидки и т.п.).
  4. Пользователь вводит данные кредитной карты для оплаты товара.
  5. Завершив оформление заказа, пользователь может отслеживать статус доставки в режиме реального времени.

На каждом этапе этого процесса база данных играет важную роль. В ней хранятся данные о пользователях, профилях, товарах и их стоимости, условиях доставки и платежах.

Современные приложения преимущественно используют реляционные системы управления базами данных (СУБД), такие как MySQL, Oracle Database, Microsoft SQL Server.

Как видно из приведенного примера с интернет-магазином, веб-приложения создают динамические объекты, предоставляющие пользователям актуальные данные в реальном времени.

Например, когда система отображает окончательную цену выбранного товара (шаг 3), она извлекает из базы данных информацию о базовой цене, применяет налоги, скидки, промокоды и другие параметры. Все эти данные не только вычисляются, но и отображаются в понятном и доступном формате, обеспечивая прозрачность и удобство использования системы.

Каждый шаг процесса включает активное взаимодействие с базой данных. При этом вероятность ошибок довольно высока. Чтобы своевременно выявлять и устранять эти ошибки, требуется тщательное тестирование баз данных.

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.

Что такое тестирование баз данных?

Тестирование баз данных — это процесс проверки схемы, хранимых процедур, таблиц, триггеров и других элементов БД. В него входит проверка целостности данных и их валидности, а также оценка производительности базы данных.

Важность тестирования баз данных

Тестирование баз данных имеет важное значение для обеспечения качества современных приложений. Оно необходимо по нескольким причинам.

Соответствие данных

Данные, отображаемые в пользовательском интерфейсе, должны соответствовать сведениям, сохраненным в базе данных. И наоборот, если во фронтенде осуществляется какое-то действие, в базе данных должна запускаться одна из операций CRUD – создание, чтение, обновление или удаление записей.

Тестировщики должны проверять, корректное ли действие осуществляется и обновляются ли соответствующие таблицы.

Проверка ACID-свойств базы данных

ACID — это сокращение, обозначающее атомарность, согласованность, изоляцию и долговечность. Эти свойства гарантируют, что после выполнения операций база данных сохраняет свою надежность.

Целостность данных

Все операции в базе данных являются CRUD-операциями. Тестирование БД позволяет убедиться, что после осуществления любой такой операции данные остаются целостными и согласованными.

Например, если пользователь удаляет любую запись во фронтенде, то в бекенде в базе данных должна осуществиться операция Delete.

Реализация бизнес-правил

Современные СУБД предоставляют возможности для интеграции бизнес-логики на уровне базы данных (хранимые процедуры, триггеры, реляционные ограничения). В ходе тестирования БД тестировщики должны проверять, правильно ли реализована бизнес-логика.

Типы тестирования баз данных

Тестирование баз данных бывает трех основных видов: структурное, функциональное и нефункциональное. Давайте рассмотрим каждый из них.

1. Структурное тестирование

Структурное тестирование — процесс проверки внутренних компонентов базы данных, таких как таблицы, столбцы, хранимые процедуры, представления, триггеры и схемы. Эти элементы выполняют ключевые функции, оставаясь невидимыми для пользователей, взаимодействующих с базой данных через интерфейсы приложений. Однако стабильность и производительность системы зависят именно от корректной работы этих компонентов.

Для проведения структурного тестирования тестировщики должны хорошо разбираться в концепциях баз данных.

Давайте рассмотрим, что именно проверяется в ходе структурного тестирования БД.

Тестирование схемы БД

Одной из ключевых задач структурного тестирования является проверка корректности схемы БД и соответствия данных между фронтендом и бекендом.

Тестировщики должны убедиться, что каждое поле во фронтенде имеет соответствующее корректное поле в бекенде. Тестировщики также отвечают за поиск не отображенных объектов.

Тестирование таблиц и столбцов базы данных

В ходе этого тестирования проверяются типы данных полей, длина полей, соответствие имен таблиц и столбцов в базе данных принятым соглашениям. Кроме того, проверяется правильность определения ключей и индексов, а также правильность сопоставления первичных и внешних ключей.

Тестирование хранимых процедур

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

Тестирование триггеров

В ходе этого тестирования проверяется функциональность триггеров, т.е. успешно ли обновляются детали после выполнения триггера. Также проверяется соответствие соглашениям по именованию и кодингу.

Тестирование серверов баз данных

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

2. Функциональное тестирование

Функциональное тестирование баз данных проводится с позиции конечного пользователя. Его цель — проверить, что транзакции и операции, которые выполняют пользователи, точно соответствуют системным требованиям и бизнес-логике приложения.

К функциональному тестированию относятся тестирование черного и белого ящиков.

Тестирование черного ящика

В процессе тестирования черного ящика проверяется взаимодействие интерфейсов и базы данных. Сюда входит проверка сопоставления данных во фронтенде и бекенде, а также проверка входных и выходных данных. При этом используются различные техники тестирования: эквивалентное разбиение, анализ граничных значений, диаграммы причинно-следственных связей.

Тестирование белого ящика

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

3. Нефункциональное тестирование

Нефункциональное тестирование проверяет нефункциональные параметры базы данных, такие как производительность, восстановление после сбоев, безопасность.

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

В ходе стресс-тестирования проверяется устойчивость системы. Система нагружается множеством пользователей и транзакций до тех пор, пока не будет достигнута точка останова базы данных или система не выйдет из строя.

Заключение

Тестирование баз данных — важный этап обеспечения качества современных приложений, которые обрабатывают большие объемы данных и требуют надёжного хранения информации. Этот процесс предполагает глубокое понимание работы с базами данных и опыт в проведении различных видов тестирования.

Комплексное тестирование баз данных, включающее структурные, функциональные и нефункциональные проверки, гарантирует надёжную работу приложения и снижает риски ошибок в эксплуатации.

Перевод статьи «Database Testing».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *