Введение в дисциплину «Безопасность систем баз данных». Теоретические основы построения реляционных баз данных. Верификация баз данных и проведение аудита в СБД. Распределенные базы данных, страница 72

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

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

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

Достоинствами SQLBench являются следующие черты.

1. Независимость от средств разработки клиентской части.

2. Поддержка стандартных тестов производительности для предварительного анализа.

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

4. Низкие затраты на разработку тестов и возможность их повторного использования.

5. Высокая скорость генерации тестов.

6. Возможность выборочного тестирования.

7. Возможность использования тестовых сценариев в качестве спецификации на разработку ПО.

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

8.1.4. Общие выводы о средствах тестирования баз данных

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

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

2. Правильность проектирования таблиц и отдельных столбцов.

3. Нормализованность таблиц.

4. Эффективность выполнения запросов.

Для исследования перечисленных характеристик БД и СУБД используются контрольно-испытательные методы, а именно: статический анализ и динамическое тестирование. Однако контрольно-испытательные методы не всегда позволяют полностью исследовать БД, рассмотреть все возможные варианты поведения СБД при выполнении запросов и при запуске подпрограмм БД. Ситуация усугубляется, когда БД содержит множество топологически сложных подпрограмм: полное исследование всех возможных вариантов поведения таких подпрограмм становится невозможным. Выход из подобных ситуаций – в применении методов логико-аналитической и модельной верификации БД, позволяющих доказывать корректность БД без проведения большого числа испытаний. Разработка этих методов и их программная реализация – актуальные на сегодняшний день научные задачи. Впрочем, решению этих задач должно предшествовать создание теории корректности БД, разработка системы конкретных показателей корректности схемы данных, объектов-ограничений и подпрограмм; и лишь после создания системы показателей и соответствующих математических моделей можно переходить к поиску методов оценивания корректности.

8.2. Активный аудит систем баз данных. Программа ISS Database Scanner