| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Автоматизация тестирования для Delphi
© 2002 Войнов Николай Вы когда-нибудь сталкивались с проблемами при тестировании ваших программ? Если нет – то Вы либо супер-профессионал, либо не писали больших программ, либо не цените Ваше время. Из многочисленных печатных источников по разработке программного обеспечения (ПО), говорится, что фаза тестирования занимает 40% трудозатрат по проекту создания ПО. Как-то при разработке ПО движения товаров, включающее в себя большое кол-во функций, возникло много проблем: то реакция на событие не работает, то ПО выполняет не то, что от него ожидаешь, … . Всего не упомнишь. ПО было разработано, но затраченные усилия не оправдали себя. Урок состоялся. Поэтому было решено взять небольшой таймаут и подумать о средствах устранения проблем. Самым простым выходом из этой ситуации было включение тестирования в процесс разработки. Об автоматизированном тестировании программ до этого я знал лишь понаслышке. Буквально следующее: "программа для тестирования InterBase в десятки раз превышает размер самого InterBase". И был еще "Delphi 6 Campaign CD", приобретенный около полугода назад, на котором присутствовало средство для автоматизированного тестирования – DUnit, библиотека классов, предназначенная для поддержки тестирования программ, принятых в экстремальном программировании и пподдерживающая Delphi4 и выше. Идея использования DUnit состоит в том, что когда вы пишите или изменяете код, вы сразу пишите и соответствующие этому коду тесты, не откладывая на более позднюю фазу тестирования. При соблюдении этого подхода и пересмотрах через регулярные промежутки времени приложения превращаются в само тестируемые. DUnit предлагает классы, которые позволяют вам просто организовать
и выполнить созданные вами тесты. Предлагаются две опции для запуска ваших
тестов:
DUnit была создана на основе библиотеки JUnit, разработанной Кеннетом Беком(Kent Beck) и Эрихом Гамма(Erich Gamma) для языка Java, которая превратилась в мощный инструмент, для программирования на Delphi. Оригинальный порт под Delphi был сделан Juanco Anez и в настоящее время поддерживается DUnit Group на SourceForge. Кто заинтересовался, может идти сразу на домашнюю страницу DUnit и скачивать библиотеку: DUnit homepage at SourceForge. Почитал Readme, посмотрел примеры – вдохновляет. Решено было сделать небольшой пилотный проект, уж очень хотелось опробовать автоматизированное тестирование и проверить несколько новых идей в реализации интерфейса. В основном занимаюсь разработкой ПО, предназначенного для автоматизации складкой деятельности решено было сделать нечто такое, что пригодилось бы мне в повседневной деятельности. Для демонстрации тестирования с библиотекой DUnit была создана программа SalesMgr. Если вы читали Ксавье и Пачеко Delphi Developers Guide и дошли до главы 33 – то однозначно найдете много общего. Есть четыре формы Склад, Клиенты, Новая продажа и архив продаж. Использовались сервер FireBird( +FibPlus). Кроме того, хотелось попробовать контролы из DECOSP Lib. Программа выполняет следующие действия и
упрощенно имеет следующую структуру Плотно используются свои и чужие шаблоны форм, поэтому у Вас могут возникнуть вопрос зачем все это. Немного тяжеловесная программа получилась, но уж очень хочется извлечь пользу от этой статьи для повседневной работы. Посмотрим, чем нам может помочь DUnit. Все мы тестировать не будем, ограничимся основными операциями.
При создании подобных программ, я всегда делаю шаблон проекта, в который входит модуль данных, занимающийся подключением к БД и хранением глобальных переменных. Повторное использование? Тогда можно попробовать повторно использовать и тесты. Итак,
займемся последовательным тестированием модулей:
Чем нам может помочь DUnit? В каталоге ContribXPGen был обнаружен кодогенератор! Всего за пару минут можно сделать шаблон теста для модуля. Простая, но полезная утилитка, экономит массу времени. Надеюсь, вы уже посмотрели Readme к DUnit, поэтому не будем отвлекаться на основных моментах. Итак, запускаем XPGen и подаем ему на вход dmFib.pas(TFibDataModule), немного правим и получаем код для тестирования функций dmFib: unit
Test_dmFib; Запускаем и видим: Нажимаем на всем знакомую зеленую треугольную кнопочку и получаем первый автоматизированный тест! Думаю, проблем пока не возникло? У меня это получилось после часа изучения демок к библиотеке (у меня был готовый шаблон проекта, поэтому получилось так быстро). А для тестирования функций TsalesDataModule придется немного повозиться. Это связано с инициализацией входных данных. unit
Test_dmSales; И, наконец, протестируем интерфейс! Для этого пришлось покопаться в UnitTestGUITesting.pas, так как в примерах этого не было. Все как обычно – запускаем XPGen, даем ему на вход fmNewSale.pas, подправляем немного в соответствии нашими целями. unit
Test_fmNewSale; Пришлось немного переделать свою форму-шаблон, так и не смог справиться со стандартными диалогами, которые создаются методом MessageDlg. Окончательно проект принял такой вид: program
AutoTestPrj;
Запускайте тест, смотрите. Если, кто продвинется до тестирования диалогов (клацания кнопок на диалогах) – поделитесь информацией. Рубрика: Тестирование
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:
Подробнее... |
Рубрика: MySQL
| Добавлено: 28.11.2008
Тестирование параллельных программ.
Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.
Подробнее... |
Рубрика: Тестирование
| Добавлено: 28.11.2008
Архитектура AMD64 (EM64T).
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.
Подробнее... |
Рубрика: Архитектура AMD
| Добавлено: 27.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|