Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Экономическая часть.doc
Скачиваний:
6
Добавлен:
28.08.2019
Размер:
282.62 Кб
Скачать
    1. Научно-технический задел

Основной алгоритм генерации основан на технологии UniTESK, которая является унифицированным решением для промышленного тестирования и обеспечения качества программного обеспечения, разработанным в Институте Системного Программирования РАН. В процессе разработки алгоритма была использованы статьи, опубликованные на сайте ИСП РАН [2], а также документация по технологии UniTESK [3]. Программирование генератора осуществляется посредством Java 2 SE и драйвера JDBC версии 4.0 с использованием JavaDoc [4] и документации к драйверу [5], опубликованными на сайте компании Oracle. А также, для обеспечения необходимого уровня отказоустойчивости ПО, полезной будет книга Роберта Гласса, посвященная надежности программных разработок [6].

    1. Техническая новизна разработки

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

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

Ядро генератора DataGen использует предельно простой и быстродействующий алгоритм генерации, что позволяет максимально сократить время работы программы. Используемая технология имеет широкий спектр применения и используется при тестировании крупнейших проектов отечественной промышленности (например, процессор «Эльбрус-2S»), а также при разработке языковых анализаторов и тестов для информационных систем. Часть технологии, касающаяся генерации данных, была взята за основу реализованного алгоритма и заключается в представлении БД, таблиц и их столбцов в виде древовидной структуры соответствующих объектов. Это позволяет свести задачу генерации тестовых данных сложной структуры с учетом контекстных ограничений к генерации аттрибутированного дерева, что гораздо проще в реализации, чем любой другой из известных подходов. Сокращение времени генерации также является значительным преимуществом нашего продукта перед конкурентами.

    1. Сравнение с аналогами

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

  • автоинкрементные поля (IDENTITY);

  • поля, хранящие данные сложных типов (image, datetime и др.);

  • обеспечение приемлемой скорости работы программы.

В настоящее время на рынке ПО существует всего несколько продуктов, осуществляющих генерацию тестовых данных для БД или имеющих в своем составе такую функцию. Приведем сравнительный анализ четырех самых популярных: Sybase PowerDesigner, EMS Data Generator for SQL Server, ForSQL Data Generator, RedGate SQL Data Generator. Для этого сделаем краткий обзор основных функций, реализованных в данных продуктах, и выявим их недостатки и недоработки.

Sybase PowerDesigner

Среда проектирования PowerDesigner версии 15 предоставляет пользователю возможность генерации тестовых данных по физической модели, содержащей всю информацию о таблицах и ограничениях в БД. Присутствует основной набор настраиваемых параметров, но возможностей гораздо меньше, чем в остальных рассматриваемых продуктах, что, в принципе, естественно, поскольку в подобных CASE-средствах данная функция является не основной. Генератор гарантирует уникальность первичных ключей и соблюдение ссылочной целостности, однако его недостатком является то, что при генерации не учитывается ограничение CHECK и свойство IDENTITY, что означает невозможность генерации определенного диапазона значений и заполнения автоинкрементных полей. Генерация тестовых данных реализована только для числовых (int, double, float и их производные) и символьных (char, varchar и их производные) типов. Значения типа datetime генерируются в виде строк, однако формат строки не соответствует принятому в MS SQL Server, поэтому некоторые сгенерированные значения не удастся вставить в БД, что также является недостатком данного генератора.

EMS Data Generator

Данный генератор имеет более обширное дерево настроек, среди которых несколько методов генерации, а также возможность задания диапазона и формата для каждого типа данных. Ограничения первичных и внешних ключей не нарушаются. Проблема заполнения IDENTITY-полей решена следующим образом: в скрипт перед заполнением таблицы, содержащей автоинкрементное поле, вставляется SQL-конструкция вида ‘SET IDENTITY_INSERT <ИМЯ_ТАБЛИЦЫ> ON’, что позволяет вставлять в данное поле любое уникальное значение, изменяя при этом значение счетчика, обеспечивающего автоинкрементное заполнение. Такое решение действительно обеспечивает корректное заполнение таблиц, но при условии, что они были очищены перед вставкой сгенерированных данных. Если таблица не очищается, то есть вероятность нарушения уникальности значений в автоинкрементном поле, в таком случае не все сгенерированные записи смогут быть вставлены в таблицу. Генерация данных сложных типов выполняется корректно, в отличие от PowerDesigner, но работает программа в 1,5 – 2 раза медленнее.

ForSQL Data Generator

Это самый простой генератор из всех рассматриваемых. Он имеет незамысловатый интерфейс, но достаточно обширные настройки генерации данных. Есть возможность выбрать способ генерации: инкрементный (для первичных ключей), случайный (из указанного диапазона), из связанной таблицы (в случае внешнего ключа), из результатов запроса, из списка или файла, из встроенной библиотеки. При правильном выборе способа, целостность БД не нарушается. IDENTITY-поля всегда заполняются корректно. Осуществляется генерация трех типов данных: чисел, строк символов и дат различного формата. Поля типа image определяются программой как символьные; для них производится генерация строк случайных символов, которые, однако же, корректно воспринимаются СУБД, как массивы байт изображений. Недостатками данного продукта можно назвать невысокую скорость работы, большой объем требуемой оперативной памяти и низкую отказоустойчивость (при попытке сгенерировать данные, нарушающие целостность БД, и заполнить ими таблицы процесс генерации зависает и его приходится останавливать вручную).

RedGate SQL Data Generator

Самый полный на сегодняшний день программный продукт выпустила компания RedGate. Проблема автоинкрементных полей решена путем сокрытия от пользователя особенностей их заполнения, то есть, если поле объявлено в БД как IDENTITY, интерфейс генератора вообще не предусматривает никаких настроек его заполнения, предоставляя это СУБД, что, на мой взгляд, правильно. Имеется встроенный анализ имен полей, на основании которого принимается решение – какими данными будет заполнено то или иное поле. Например, если поле называется City, то для него из словаря будут выбраны названия городов в случайном порядке. Аналогичные словари хранят распространенные псевдонимы, имена и даже фотографии людей. Функция полезная, однако, логичнее было бы хранить в словарях редкие имена и названия, которые могли бы нарушить работу системы, использующей данную БД. Это максимально приблизило бы тестовые данные к реальным, а тестирование системы к ее реальной эксплуатации, что позволило бы исключить вероятность ввода некорректных данных. Недостатком данного продукта можно назвать разве что высокую цену – около 10000 р. за лицензию на одного пользователя без техподдержки.

Подводя итог, можно сказать, что наиболее удобными в использовании оказались EMS DataGenerator и генератор от RedGate версии 2.0, входящий в состав пакета RedGate SQL Developer Bundle и обладающий, помимо всего прочего, дружественным интерфейсом и огромным количеством всевозможных настроек. Проблема IDENTITY-полей полностью решена только в RedGate SQL Data Generator. Он же показал самую высокую скорость работы. Генерация данных сложных типов корректно выполняется во всех рассмотренных продуктах, кроме PowerDesigner.

Табл.1. Результаты сравнения с аналогами.

Товар-конкурент

Сильные стороны

Слабые стороны

Влияние на характеристики нового товара

Sybase PowerDesigner

  1. Простота использования.

  1. Не учитывается CHECK и IDENTITY.

  2. Некорректно генерируются данные сложных типов.

Корректная генерация всех типов данных.

EMS Data Generator

  1. Простота использования.

  1. Неполное решение проблемы автоинкрементных полей.

  2. Низкая скорость.

Полное решение проблемы автоинкрементных полей.

ForSQL Data Generator

  1. Корректное заполнение автоинкрементных полей.

  1. Низкая скорость.

  2. Низкая отказоустойчивость.

Высокая скорость работы.

RedGate Data Generator

  1. Высокая скорость.

  1. Высокая стоимость.

Низкая стоимость и расширяемость.