E-mail:
Пароль:
Забыли пароль?

Применение различных технологий тестирования в процессе разработки программного обеспечения СУБД

Применение различных технологий тестирования в процессе разработки программного обеспечения СУБД

XI международная конференция «Информатика: проблемы, методология, технологии – 2011»

Борисенков Дмитрий

Система управления базами данных (СУБД) представляет собой сложный программный комплекс, в который входят [1]:

  • ядро СУБД с управляемыми им программами (в частности, транслятором языка SQL);
  • библиотеки для разработки приложений, работающих с СУБД, на различных языках программирования;
  • утилиты для выполнения стандартных функций работы с БД – администрирования БД, сохранения и восстановления ее резервных копий и т.д.

Обеспечение качества СУБД как программного продукта достигается путем тщательного тестирования перечисленных компонентов c применением различных технологий тестирования.

Следующие категории возможностей реляционных СУБД подробно описаны в стандартах языка SQL либо других связанных с ними стандартах и практически единообразно реализованы в существующих СУБД:

  • операции создания таблиц, включая ограничения целостности (PRIMARY KEY, UNIQUE, FOREIGN KEY, NOT NULL, CHECK), удаления таблиц, добавления в таблицы и удаления из них столбцов и ограничений целостности;
  • поддержка основных стандартных типов данных языка SQL, преобразования данных между этими типами;
  • синтаксис и семантика DML операций (INSERT, DELETE, UPDATE);
  • синтаксис и семантика SELECT-запросов (включая операции группировки и различных соединений таблиц);
  • базовый набор агрегатных и скалярных функций;
  • дискреционный доступ к объектам БД;
  • транзакционная работа и стандартные методы изоляции транзакций;
  • поддержка хранения геометрических типов данных в БД и манипулирования ими;
  • стандартные пользовательские интерфейсы (ODBC для языка C, JDBC для языка Java и т.п.)

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

  • NIST SQL test suite, разработанный Национальным Институтом Стандартов и Технологии США (NIST). Этот набор тестов содержит комплекс проверок соответствия поведения СУБД стандарту SQL ISO/IEC 9075:1992, в частности, средства для оценки степени поддержки СУБД уровней этого стандарта – Entry SQL и Intermediate SQL. Существуют варианты этого теста, реализованные на языках программирования C, COBOL, Fortran, Ada, Pascal, использующие как встроенный, так и модульный SQL;
  • тесты производительности СУБД, разработанные TPC (Советом по оценке производительности обработки транзакций). В основе этих тестов лежит моделирование бизнес-приложений. Среди разработанных TPC тестов есть тесты для оценки пропускной способности СУБД при выполнении типичных OLTP-операций как при подаче запросов одним приложением, так и при одновременной работе множества пользователей, а также оценка быстродействия отработки типичных SELECT-запросов, в том числе параллельно с операциями обновления БД. Все тесты TPC допускают возможность масштабирования за счет изменения числа записей в таблицах базы данных;
  • набор тестов crashme, созданный разработчиками СУБД MySQL. Он позволяет определить числовые значения различных ограничений, накладываемых СУБД на содержимое базы данных и состав SQL-запросов к ней, и проверить поведение СУБД при попытке нарушения этих ограничений;
  • тест Lake Blue, содержащийся в стандарте OpenGIS и предназначенный для проверки общей функциональности подсистемы поддержки геометрических типов данных;
  • Microsoft ODBC Test, предназначенный для проверки базовых функций пользовательского интерфейса ODBС.

При использовании этих стандартных тестов (иногда в минимальной степени адаптированных под конкретную СУБД) применяется метод тестирования «черного ящика» – выясняется реакция СУБД на определенные запросы к ней со стороны теста, сравнивается с ожидаемыми вариантами такой реакции, и по результатам ее анализа делаются определенные выводы.

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

  • языковые средства для создания пользовательских процедур (базовые элементы синтаксиса описаны в части SQL/PSM стандарта SQL, но языки хранимых процедур различных СУБД существенно отличаются);
  • средства для создания иерархических запросов к БД (генерации древовидных структур);

Также следует заметить, что значительная часть возможностей СУБД вообще не рассматривается стандартами языка SQL, хотя часть их является безусловно необходимой для практического использования СУБД, а остальная часть значительно расширяет диапазон применимости СУБД:

  • управление созданием, удалением и обновлением индексов различных типов (B-tree, хэш, битовых и т.д.), как постоянных, так и временных, наличие которых позволяет кардинальным образом ускорять время выполнения поисковых запросов;
  • управление физическим размещения БД на дисках (имена файлов БД и содержащих их каталогов, размеры файлов БД и их отдельных секций, правила их расширения при отсутствии места для добавления новой информации и т.д.);
  • пакетная загрузка таблиц БД (обычно по скорости значительно превосходящая загрузку с помощью обычных DML-операций);
  • полнотекстовый поиск (поддержка фильтров для автоматического извлечения текстовой информации из файлов распространенных форматов как при хранении их внешним по отношению к БД образом, так и в BLOB-столбцах таблиц БД; создание и автоматическое или управляемое обновление специальных индексов для полнотекстового поиска; синтаксис и семантика предикатов для полнотекстового поиска; использование индексов для отбора записей, удовлетворяющих предикатами полнотекстового поиска);
  • мандатный доступ к объектам БД;
  • контроль физической и логической целостности БД как в процессе работы СУБД, так и при остановленном ядре СУБД, восстановление целостности БД в случае обнаружения ее нарушений;
  • управление созданием резервных копий БД в процессе работы СУБД;
  • синтаксис и семантика специальных комментариев к SQL-запросам, содержащих управляющую информацию для обработки этих запросов ядром СУБД (хинтов);
  • нестандартные пользовательские интерфейсы для различных языков программирования, максимальным образом учитывающие особенности конкретной СУБД.

Тестирование перечисленных возможностей СУБД производится преимущественно по методу «стеклянного ящика» – с учетом особенностей их реализации. Наборы тестов начального уровня обычно создаются самими разработчиками компонентов СУБД.

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

Напротив, тестирование утилит СУБД, предоставляющих пользователю визуальный интерфейс, как правило, в меньшей степени поддается автоматизации и осуществляется тестировщиками вручную с помощью специальным образом разработанных методик.

Описанные в данной статье соображения нашли применение при тестировании программного обеспечения созданной НПП «РЕЛЭКС» (г.Воронеж) СУБД «ЛИНТЕР».

Список литературы:

1. М.Р. Когаловский. Энциклопедия технологий баз данных. – М.: Финансы и статистика, 2005. – 800 с.: ил. ISBN 5-279-02276-4.


Возврат к списку

ѕрокрутить вверх