Найти тему

Тестирование СУБД

Оглавление

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

Зачем требуется проводить тестирование СУБД?

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

  1. Тестирование позволяет минимизировать риски при запуске системы в коммерческую эксплуатацию;
  2. Помогает выявить проблемы с производительностью системы;
  3. Позволяет найти уязвимости в системе безопасности;
  4. Регулярное тестирование базы данных обеспечит бесперебойную и эффективную работу самой базы данных.

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

Типы тестирования СУБД

Выделяют несколько видов типов тестирования:

  1. Функциональное тестирование базы данных
  2. Нефункциональное тестирование базы данных
  3. Структурное тестирование базы данных

Остановимся подробнее на каждом из этих типов.

Функциональное тестирование базы данных заключается проверке функциональности базы данных с точки зрения конечного пользователя с помощью тестирования хранящихся в ней данных. Здесь различают 2 метода: тестирование с помощью белого ящика (изучение внешней структуры) и черного ящика (изучение внешней структуры).

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

Нагрузочное тестирование позволяет выявить то, как выполняемые транзакции, пресыщающие нормальную мощность, влияют на производительности системы.

Тестирование безопасности позволяет выявить уязвимости в работе системы еще до ее запуска.

Структурное тестирование базы данных заключается в проверке тех компонентов, которые не используются в работе конечными пользователями. Здесь идет проверка структуры базы данных на ее точность и полноту. Главная цель — убедиться, что база данных построена правильно. Здесь выделяют 2 типа структурного тестирования: тестирование схемы и тестирование хранимых процедур.

Как тестируют СУБД

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

Сравнивать ПО можно только тогда, когда:

  • оно сравнимо по функциональности;
  • тестирование проводится на одном и том же оборудовании;
  • используется один и тот же тест или набор тестов.

Для тестирования производительности СУБД часто используются уже являющиеся эталонами тесты, разработанные некоммерческой организацией Transaction Processing Performance Council (TPC).

Рассмотрим тестирование на примере новейшей разработки — СУБД SoQoL, которая разработана научно-производственным предприятием «Реляционные экспертные системы» (НПП «РЕЛЭКС»). Это самая современная отечественная система нового поколения, которая отличается высокой скоростью и эффективностью работы. Она, с одной стороны, является привычной реляционной СУБД, но при этом ряд идей, которые позволяют значительно улучшить ее производительность заимствовала из специализированных решений.

Производительность SoQoL мы оцениваем и сравниваем с другими СУБД, используя реализацию теста TPC-C от HammerDB. Ознакомиться с ним можно на сайте https://www.hammerdb.com.

TPC-C – это один из тестов OLTP (обработка транзакций в реальном времени). Он сочетает в себе запросы на чтение и интенсивное обновление, которые моделируют действия складской программы.

Компоненты базы данных ТРС-С по определению состоят из 9 таблиц. Взаимосвязь между этими таблицами приведена ниже

-2

Где:

  • Warehouse – склад
  • District – точка продаж
  • Stock – товар на складе
  • Item – товарная позиция
  • History – история заказов
  • New order – новый заказ
  • Order-line – позиция в заказе
  • Order – заказ
  • Customer – клиент

Условные обозначения:

  • Все указанные цифры показывают частоту запросов базы данных.
  • Числа в блоках показывают количество элементов в таблицах (число строк).
  • Числа возле стрелок показывают количество взаимосвязей (среднее число дочерних объектов на каждый родительский).
  • Символ «+», используемый после количества взаимосвязей, показывает, что это число подвержено небольшим изменениям по сравнению с исходным наполнением базы данных в течение всего измерения, т. к. позиции добавляются или удаляются.

Тест TPC-C входит в дистрибутив альфа-версии SoQoL и все желающие могут им воспользоваться для оценки производительности.

В РЕЛЭКС тесты проводятся, например, на стенде со следующими характеристиками:

Процессор

Intel® Xeon® CPU E5-2630 v4 @ 2.20GHz, Cache 25MB, 2 Sockets x 10 Cores x 2 Thread = 40 logical CPUs

Память

512 GiB DDR4 Synchronous 2133 MGz

Диск

Linux Software RAID 0 with 5 SSD

(Device Model: INTEL SSDSC2BX200G4)

Сравнение производительности SoQoL выполняется с Oracle, SQL Server и PostgreSQL. Для них есть реализации TPC-C и сборки для Linux.

Пример теста TPC-C
Пример теста TPC-C

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

Заключение

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