Научная статья на тему 'Обезличивание промышленных трасс и оценка тестового покрытия при миграции базы данных'

Обезличивание промышленных трасс и оценка тестового покрытия при миграции базы данных Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
78
13
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ТРАССЫ / ТЕСТОВОЕ ПОКРЫТИЕ / МИГРАЦИЯ БАЗЫ ДАННЫХ / АЛГОРИТМ MD5 HASH / ФОРМАТ SQLSERVERPROFILER / MSSQLSERVER / ALIGNMENT / TEST COVERAGE / DATABASE MIGRATION / MD5 HASH / FORMAT SQLSERVERPROFILER

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Грушицын А.С.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Depersonalization industrial highway and test coverage when migrating database

The article deals with some of the tracks with industrial servers, on the basis of which are created synthetic tracks that cover similar functionality, allowing you to add actual scripts use database in testing, and improve the code coverage runs

Текст научной работы на тему «Обезличивание промышленных трасс и оценка тестового покрытия при миграции базы данных»

Обезличивание промышленных трасс и оценка тестового покрытия при миграции базы данных УДК 004.07

ОБЕЗЛИЧИВАНИЕ ПРОМЫШЛЕННЫХ ТРАСС И ОЦЕНКА ТЕСТОВОГО ПОКРЫТИЯ ПРИ МИГРАЦИИ БАЗЫ ДАННЫХ

А.С. Грушицын

Московский авиационный институт

Аннотация Ключевые слова

В статье рассматривается некоторые трассы с промышленных серверов, трассы, тестовое покрытие, миграция

на основе которых создаются синтетические трассы, которые покрывают базы данных, алгоритм MD5 hash, фор-

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

рии использования базы данных в тестировании, а также улучшить по- История статьи:

крытие кода трассами. Дата поступления в редакцию: 4 марта

2017

Дата принятия к печати: 11 марта 2017

На этапе преобразования трассы из формата SQLServerProfiler проводится обезличивание промышленных трасс в унифицированный формат. Для реализации устанавливается предположение, что все данные в запросах, которые персонифицированы, содержатся исключительно в строковых литералах [1,2] . Когда с промышленного сервера собирались трассы, возникла дополнительная проблема: в однопользовательском режиме снять трассы невозможно. Это происходит по причине того, что одновременно с базой данных взаимодействуют множество пользователей, а в результате от разных пользователей собираются перемешанные запросы [3-6]. Информация о пользователя, с логина которого запрос был запущен, важна для воспроизведения и должна сохраняться в трассе. Возможность изменения персонифицированной информации автоматически добавлена в инструмент. Все литералы ищутся в тексте запроса, а информация заменяется символом «х» внутри них. Алгоритм MD5 hash обезличивает всю информацию о текущем пользователе системы, а также имя базы данных. Естественно, такой алгоритм не сохраняет целостность структуры трассы, соответственно, в результате воспроизведение таких трасс невозможно. Однако, даже такая реализация является достаточно полезной. Она позволяет собрать некоторые трассы с промышленных серверов, а уже на их основе создаются синтетические трассы, которые покрывают схожую функциональность, это позволяет добавить самые актуальные сценарии использования базы данных в тестировании, а также улучшить покрытие кода трассами. Дальнейшая доработка данного алгоритма обезличивания и запуска трасс, которые были собраны с промышленного сервера, остается системе контроля качества для развития.

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

чения и типы. Проблема возникает, когда сравниваются возвращаемые наборы: эти самые наборы могут в себе содержать такие столбцы, которые зависят от текущего состояния окружения, соответственно, значения в них не совпадают. В конкретном проекте, это были столбцы, содержащие в себе время и дату, а так же столбец идентификаторов. Когда в возвращаемом наборе данных фиксируется текущее время, то практически невозможно добиться идентичности, даже если проводится синхронное проигрывание на двух баз данных. Для решения данной проблемы, чтобы была возможность избежать возможных расхождений, столбцы такого типа игнорируются. Поэтому кроме самих наборов данных, которые возвращаются, также сохраняются метаданные для столбцов, это необходимо для того, чтобы определить те колонки, которые в сравнении участвовать не должны. Если же в параметрах запуска инструмента указано, что эти колонки игнорируются, то, перед сравнением, они удаляются из набора данных. Наборы данных, которые возвращаются, рассматриваются как множество строк со значениями, и среди них проводится поиск строк, присутствующих в одном наборе. Для этого необходимо вычислить разности множеств А-В и В-А. Использование метода вычисления разности множеств, вместо сравнения построчно, позволяет избежать проблемы несовпадения порядка записей в наборе, они, например, возникают при неупорядоченной выборке. Отдельно стоит сказать о том, как сравниваются строки в наборах. Такое сравнение происходит поэлементно, т.е. строки считаются равными, если во всех соответствующих столбцах значения эквивалентны. Такая ситуация возникает потому что в MSSQLServer пустая строка и null - являются различными значениями, тогда как в Oracle это не всегда верно. Поэтому разработана некая опция, при включении которой, перед сравнением пустые строки преобразуются в null. Все различия записываются в журнал, в том случае, если разности, которые получились, не пусты. Для того, чтобы сравнить изменения внутри базы данных, данные из таблиц аудита будут сохраняться в формате таблицы. Т.е. используется тот же механизм поиска расхождений, что использовался для возвращаемых наборов данных. В журнал сохраняются все несоответствия, которые были выявлены (Рис. 1).

Рис. 1. Механизм поиска расхождений

Для того, чтобы производились все процессы корректно, выявлены определенные требования к системе: на машине должен быть установлен MSSQLServer (не Express). Это необходимо, ведь для подключения к базе данных и чтения файла трассы из формата SQLServerProfiler используются библиотеки. Так же, у библиотек есть некоторые зависимости от других, которые входят в MSSQLServer, причем, на этапе компиляции инструмента они не определяются, однако, если необходимые библиотеки отсутствуют, процесс не может быть произведен. В ходе возник вопрос в связи с тем, что некая часть зависимых библиотек является скомпилированной только под .Net 2.0,а для

Обезличивание промышленных трасс и оценка тестового покрытия при миграции базы данных

разработки инструмента используется Net 4.0. Для решения данной проблемы найдено следующее решение: в элемент startup, который указывает общие сведения о среде CLR, в конфигурационном файле, добавляется некий атрибут useLegacyV2RuntimeActivationPolicy, который имеет значение true, дочерний элемент supportedRuntime, версия которого в 4.0 устанавливается. В .Neta версии 4.0 была добавлена эта возможность, которая позволяет запускать разработанные в предыдущей версии платформы компоненты. При этом каждый компонент запускается параллельно в одном процессе в своей версии платформы .Net.

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

Когда выполняется команда записи в таблицу о прохождении линейного участка контекст исполнения может измениться, точнее, системные переменные. При анализе исходной базы данных было выявлено, что изменение переменной @@IDENTITY может привести в некоторых случаях к некорректному результату выполнения хранимых процедур. Поэтому для того, чтобы сохранить значения переменной @@IDENTITY создается специальная хранимая процедура, вызываемая при записи информации о том, что пройдена контрольная точка. Значение системной переменной сохраняется вначале, и только после этого выполняется команда для вставки в таблицу журналирования трасс идентификатора контрольной точки. Чтобы восстановить переменную создается динамический запрос. Внутри этого запроса создается временная таблица со столбцом идентификаторов, только надо учитывать, что значение первой строки должно совпадать с сохраненным значением @@IDENTITY. После чего производится вставка во временную таблицу (значение системной переменной в этот момент восстанавливается) и таблица удаляется. Поскольку значения других переменных не влияют на результат выполнения процедуры, они не восстанавливаются.

Программа sqlcmd используется для загрузки в базы данных всех измененных процедур. Хранимые процедуры могут в себе содержать идентификаторы, совпадающие с управляющей командой sqlcmd. Чтобы предотвратить такие ситуации, перед загрузкой процедуры проверяются на наличие таких идентификаторов, и, соответственно, если они совпадают, то изменяются (вокруг идентификатора добавляется. Также в исходной базе были найдены идентификаторы «ed», совпадающие с управляющей командой sqlcmd. С помощью регулярных выражений такие идентификаторы ищутся, а запуски проводятся автоматически, когда запускается специально написанный скрипт.

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

ЛИТЕРАТУРА

1. Нефедова И.В. Тестирование кода при переносе базы данных// Системные технологии, - 2016, -№3(20), - С. 96-100

2. Грушицын А.С. Создание трассы при миграции базы данных//Системные технологии,- 2016,- №4 (21),- С. 51-55

3. Нефедова И.В. Методика конфигурации ядра LinuxZ/Современные образовательные технологии в мировом учебно-воспитательном пространстве, - 2015, - № 2, - С. 49-53.

4. Грушицын А.С. Методика конфигурации из старой в новую версию ядра Linux // Современные образовательные технологии в мировом учебно-воспитательном пространстве, - 2016, -№ 4, -С. 15-19.

5. Макаров Е.В., Монахов И.А., Нефедова И.В. Двуосное растяжение пластины с круговым отверсти-ем//Вестник российского университета дружбы народов. Серия: Инженерные исследования. -М.: Издательство: Российский университет дружбы народов, -2015. -№ 1, -С. 100-105

6. Балдина А.Д., Нефедова И.В. Применение сетей Петри в моделировании динамических систем// Сборник научных статей 2-й Международной молодежной научной конференции «Будущее Нау-ки-2014». -Курск: ЗАО «Университетская книга», - 2014. - С. 79-81.

7. Курбанмагомедов К.Д. Разработка модели и процедур тестирования кеш-памяти компьютерных систем с разрядно-модульной организацией часть 1. Описание функционирования и разработка диагностической модели //Системные технологии. -2016. -20. -С.53-63.

Просьба ссылаться на эту статью следующим образом:

А.С. Грушицын. Обезличивание промышленных трасс и оценка тестового покрытия при миграции базы данных // Системные технологии. — 2017. — № 22. — С. 53—56

DEPERSONALIZATION INDUSTRIAL HIGHWAY AND TEST COVERAGE WHEN MIGRATING DATABASE A.S. Grushicin

Abstract Key words

The article deals with some of the tracks with industrial servers, on the basis alignment, test coverage, database

of which are created synthetic tracks that cover similar functionality, allowing migration, MD5 hash, format

you to add actual scripts use database in testing, and improve the code coverage SQLServerProfiler, MSSQLServer

runs Date of receipt in edition:

4 March 2017

Date of acceptance for printing:

11 March 2017

i Надоели баннеры? Вы всегда можете отключить рекламу.