Тестирование системы управления базами данных —– это часть разработки, которая включает в себя проверку достоверности данных, проверку целостности данных, проверку производительности, связанную с базой данных, и тестирование процедур, триггеров и функций в базе данных.
Зачем требуется проводить тестирование СУБД?
Тестировать СУБД важно, потому что данные часто являются наиболее важным активом организации и тестирование позволяет убедиться, что данные в базе точны и актуальны.
- Тестирование позволяет минимизировать риски при запуске системы в коммерческую эксплуатацию;
- Помогает выявить проблемы с производительностью системы;
- Позволяет найти уязвимости в системе безопасности;
- Регулярное тестирование базы данных обеспечит бесперебойную и эффективную работу самой базы данных.
Можно сделать вывод, что тестирование необходимо, ведь оно помогает найти ошибки и проблемы в работе системы еще до того, как она будет запущена. Это позволит сэкономить достаточное количество времени и денег в перспективе. А так же, пройдя все этапы тестирования, система базы данных станет более надежной и стабильной в своей работе.
Типы тестирования СУБД
Выделяют несколько видов типов тестирования:
- Функциональное тестирование базы данных
- Нефункциональное тестирование базы данных
- Структурное тестирование базы данных
Остановимся подробнее на каждом из этих типов.
Функциональное тестирование базы данных заключается проверке функциональности базы данных с точки зрения конечного пользователя с помощью тестирования хранящихся в ней данных. Здесь различают 2 метода: тестирование с помощью белого ящика (изучение внешней структуры) и черного ящика (изучение внешней структуры).
Нефункциональное тестирование базы данных включает в себя нагрузочное тестирование, тестирование рисков и безопасности, а так же оптимизацию производительности системы базы данных.
Нагрузочное тестирование позволяет выявить то, как выполняемые транзакции, пресыщающие нормальную мощность, влияют на производительности системы.
Тестирование безопасности позволяет выявить уязвимости в работе системы еще до ее запуска.
Структурное тестирование базы данных заключается в проверке тех компонентов, которые не используются в работе конечными пользователями. Здесь идет проверка структуры базы данных на ее точность и полноту. Главная цель — убедиться, что база данных построена правильно. Здесь выделяют 2 типа структурного тестирования: тестирование схемы и тестирование хранимых процедур.
Как тестируют СУБД
У СУБД есть довольно много характеристик, и часто здесь сложно понять что с чем сравнивают, как тестируют и получают результаты.
Сравнивать ПО можно только тогда, когда:
- оно сравнимо по функциональности;
- тестирование проводится на одном и том же оборудовании;
- используется один и тот же тест или набор тестов.
Для тестирования производительности СУБД часто используются уже являющиеся эталонами тесты, разработанные некоммерческой организацией Transaction Processing Performance Council (TPC).
Рассмотрим тестирование на примере новейшей разработки — СУБД SoQoL, которая разработана научно-производственным предприятием «Реляционные экспертные системы» (НПП «РЕЛЭКС»). Это самая современная отечественная система нового поколения, которая отличается высокой скоростью и эффективностью работы. Она, с одной стороны, является привычной реляционной СУБД, но при этом ряд идей, которые позволяют значительно улучшить ее производительность заимствовала из специализированных решений.
Производительность SoQoL мы оцениваем и сравниваем с другими СУБД, используя реализацию теста TPC-C от HammerDB. Ознакомиться с ним можно на сайте https://www.hammerdb.com.
TPC-C – это один из тестов OLTP (обработка транзакций в реальном времени). Он сочетает в себе запросы на чтение и интенсивное обновление, которые моделируют действия складской программы.
Компоненты базы данных ТРС-С по определению состоят из 9 таблиц. Взаимосвязь между этими таблицами приведена ниже
Где:
- 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.
Мы стараемся оптимизировать каждую из систем, чтобы добиться для нее наилучших показателей.
Заключение
Система управления базами данных является основной и важной частью практически любого приложения. Ее тестирование требует огромного количества знаний самой системы, структур БД, пристального внимания к самому процессу, хороших навыков в написании SQL-запросов.