Компьютер Пресс №4’98

Что такое TestByte?

Анатолий Тощев

Проблемы тестирования информационных систем

Разработана информационная система в технологии клиент-сервер. Что дальше? Возникает вопрос ее тестирования. Этот процесс является в определенной мере трудо-емким и длительным. Обычно требуется несколько тестировщиков для качественного тестирования ИС. При этом ни один разработчик не рискнет сказать, что система отла-жена и протестирована на все 100 %. Конечно можно воспользоваться специальными средствами тестирования ИС, но, к сожалению, они не имеют должного внимания со стороны программистов и тестировщиков. Возможно, все дело в том, что нет достаточ-ной информации по системам такого рода в прессе. В этой статье будет осуществлена попытка восполнить этот пробел. Использование средств тестирования также не даст стопроцентной гарантии отсутствия ошибок в разработанной ИС. Но они существенно упростят процесс тестирования, снизят трудоемкость этой операции и увеличат вероят-ность нахождения ошибок.

Основная масса разрабатываемых в настоящее время ИС состоит из двух частей (мы не рассматриваем трехзвенную структуру): клиентской и серверной. Существующие средства тестирования позволяют автоматизировать этот трудоемкий процесс для обеих частей. Для тестирования клиентской части можно рекомендовать продукт фирмы Rational Rose SQA TeamTest. Но мы не будем рассматривать в этой статье клиентскую часть, а перейдем сразу к серверной.

Программные продукты тестирующие базу данных могут выполнять две катего-рии задач: заполнение базы большим объемом данных и отработка выполнения запросов к серверу (при этом должна иметься возможность эмуляции многопользовательского режима с одного компьютера). Определенную популярность имеет в этом направлении программа SQLBench (ARC). Она может выполнять задачи обеих категорий. Однако для нас в данный момент интерес представляет другое средство тестирования баз данных. Фирма Logic Works, известная во всем мире как производитель популярнейших CASE-средств ERwin и BPwin, представляет и средство тестирования TestByte. В этой статье будет рассмотрена новая версия программы TestByte 4.0.

Немного теории

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

В качестве источников информации о наличии связей TestByte использует или системные таблицы базы данных или модель Erwin. В первом случае могут возникнуть некоторые проблемы, т.к. связь с базой осуществляется через ODBC-драйверы. Не все-гда они позволяют получить информацию по ключам структуры базы данных. Это явля-ется характерной особенностью именно ODBC-драйверов, поэтому второй источник яв-ляется более надежным. Но в этом случае на пользователя возлагается контроль за соот-ветствием модели и текущего состояния структуры БД. Однако, если ссылочная целост-ность в структуре БД поддерживается не декларативным методом (с помощью систем-ных таблиц), а с помощью триггеров, ни один из этих источников не позволит восстано-вить связи между таблицами, т.к. в этом случае необходимо анализировать программный код триггеров. Поэтому средство тестирования должно иметь свои возможности описа-ния этих связей.

Первые шаги

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

Формирование информации о связях

Чтобы правильно выполнить генерацию данных нужно сначала сделать необхо-димые настройки системы.
В первую очередь необходимо загрузить информацию о связях по любому из ис-точников (база или модель). Для этого надо воспользоваться соответствующими пунк-тами меню Relationships. В случае возникновения проблем с получением данной инфор-мации из базы рекомендуется поступить следующим образом:

1. Выполнить процесс обратного проектирования в ERwin. Результатом будет модель данных вашей базы.

2. Выполнить пункт меню в TestByte Load relationships from ERwin или нажмите кнопку ERwin. В результате выполнения этого процесса будет показана стати-стика: количество первичных и внешних ключей, возвращенных TestByte.

Если у Вас нет программы ERwin, то лучше всего ее купить. Второй вариант дей-ствий в этом случае предоставляет TestByte. Нужно описать связи в самой программе вручную. Это также актуально для случая с поддержкой ссылочной целостности на триг-герах. Для описания связей нажмите кнопку Keys или выберите пункт меню Define Parent Keys. Для всех таблиц необходимо задать первичные ключи (в TestByte они имеют на-звание Parent Key). Для этого в выпадающем списке выбирается таблица, затем выделя-ется колонка для первичного ключа и нажимается кнопка Add.

Для родительских таблиц нужно указать дочерние таблицы с помощью кнопки «Child Tables..». В появившемся диалоговом окне представлен список таблиц, имеющих колонку с таким же именем. Для задания дочерней таблицы выбирается требуемая таб-лица и нажимается кнопка «Select». Если вы хотите установить связь по колонке с дру-гим именем, необходимо:

Данная таблица будет помечена как дочерняя. TestByte контролирует типы данных при организации связей и не разрешит установить связь между колонками с разными типами данных.

Особый интерес представляет то, что пользователь может формировать данные не толь-ко в БД, но и в виде файлов в формате пользователя. Такие файлы называются Flat File и их структуру можно создать прямо в TestByte (подпункт Create Flat File Format меню Options или кнопка File Def на панели инструментов). Генерация данных при этом осу-ществляется в виде текстовых файлов с различными стандартными разделителями (запя-тая, символ табуляции и т.п.), при этом все параметры могут быть определены пользова-телем.

Параметры данных для генерации

Термин «случайные данные» имеет относительное значение, т.к. пользователь имеет возможность создать свои собственные данные для генерации. TestByte имеет три типа данных для генерации: строковые, числовые и тип «дата». Для любого из этих ти-пов могут быть созданы профайлы, в которых можно описать определенные параметры генерации данных. Каждый профайл имеет свое имя. Кроме того, независимо от типов данных, задается параметр «процент null-значений».

Как уже говорилось выше, имеется стандартный набор профайлов, который со-держит настройки для генерации имен, фамилий, городов и т.п. Все эти профайлы соз-даны для строковых типов данных. Все данные в них представлены на английском язы-ке. Профайлы могут быть импортированы (экспортированы) из файлов (в файлы) с рас-ширением *.tpf.

Самые простые настройки предусмотрены для типа «дата». Для них задается диа-пазон возможных значений и подтип данных (дата, время, дата-время). В настройках системы есть возможность установить формат представления для каждого из этих под-типов данных.

Несколько шире представлены возможности для задания числовых значений. Здесь, кроме задания диапазона значений, можно установить будут ли числа при генера-ции случайными или они будут представлять последовательность с определенным шагом приращения. Также определяется количество цифр после запятой и диапазон значений для них.

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

Для строковых данных могут быть заданы списки значений. Список представляет собой набор строк, определяемых пользователем. Список можно создать средствами TestByte или воспользоваться внешним текстовым файлом. Во втором случае значения в файле читаются построчно, т.е. каждая строка файла соответствует элементу списка. Для списка задается условие выбора: случайное или по порядку. Списки подключаются к профайлу в процессе настройки его параметров. Имеется возможность просмотра при-меров строк, которые будут формироваться при генерации данных.

На мой взгляд, есть некоторые недостатки при определении данных. В качестве примера приведу случай генерации данных для таблицы сотрудников, когда надо запол-нить колонки «даты рождения», «даты приема на работу» и «даты увольнения». Естест-венно, что они должны быть сгенерированы именно в таком порядке. Но, к сожалению, это невозможно реализовать из-за отсутствия согласования генерации данных между ко-лонками. Нельзя указать колонке «дата приема на работу», чтобы значения ее данных были больше, чем в колонке «дата рождения».

Установка соответствия структуры БД и профайлов

После создания или получения ссылок и описания профайлов необходимо связать структуру БД и профайлы. В основной форме выбирается тип источника данных: табли-ца или Flat File. Для каждой выбранной таблицы или Flat File появляется структура с на-званием колонок, типом их данных. Каждой колонке по умолчанию соответствует про-файл «DEFAULT». Он определен для любых типов данных. При использовании этого профайла на формирование данных не накладывается никаких ограничений, которые можно определить для каждого из типов данных. Однако это соответствие можно изме-нить, выбрав в выпадающем списке другой профайл. Этот список содержит профайлы, определенные для типа данных, соответствующего типу данных выбранной колонки.

Для колонок, которые являются внешними ключами, вместо имени профайла ука-зывается полное имя колонки соответствующего первичного ключа (например: sysadm.customer.cust_id). Это означает, что данная колонка будет заполняться только данными, присутствующими в первичном ключе. Т.о. поддерживается ссылочная цело-стность при заполнении базы данными. Для данной колонки нет возможности выбора профайла.

Значение профайлов для всех колонок могут быть возвращены в исходное со-стояние «DEFAULT» с помощью подпункта Reset Profiles To Defaults меню Options.

Любая колонка может быть исключена из генерации отключением флажка гене-рации.

Генерация данных

TestByte предоставляет пользователю возможность просмотреть текущие данные в таблице. Для этого нажимается кнопка View или выбирается подпункт View Table Data меню Options.
При необходимости можно удалить данные из любой таблицы, воспользовавшись подпунктом Delete Data From Tables меню Options.

Запуск генерации осуществляется нажатием кнопки Gen или выбором подпункта Generate Data меню File. При выполнении команды генерации пользователю предлагает-ся установить еще несколько параметров в специальном диалоговом окне.

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

Вновь создаваемые данные могут:

В последнем случае пользователю предоставляется право выбора колонок, для которых допускаются изменения в БД. Кроме этого можно выбрать куда будут записываться дан-ные: в таблицу БД или Flat File. В случае использования Flat File пользователь должен задать имя файла и установить его параметры.

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

В общих настройках можно задать количество строк, после ввода которых в базу должна выполняться команда COMMIT. После генерации выдается информация о коли-честве созданных строк для каждой таблицы и предлагается выбрать вариант дальней-ших действий:

При возникновении ошибок выдается сообщение об ошибке. Дальнейшие дейст-вия аналогичны описанным выше.

Тестовая генерация была проведена на следующей модели.

В процессе генерации в таблицы было введено следующее количество строк:
Doctor - 100
Pacient - 9000
Visit - 30000.
Время генерации для локального 32-разрядного сервера SQLBase 6.1.2 составило 10 минут на компьютере Pentium 133 RAM 32 MB.

Заключение

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

Научиться использованию средств тестирования можно в
Учебно-консалтинговом центре Interface Ltd.: тел. (095)135-5500, 135-2519,
mail@interface.ru


Interface Ltd.

Ваши замечания и предложения направляйте по адресу: webmaster@interface.ru

Reklama.Ru. The Banner Network.