 | Уровень сложности: простой Вишну Веттривел, ведущий консультант, PunditLabs Inc.
31.08.2009 Статья об основных принципах среды для интегрированных тестов (Framework for Integrated Tests – FIT), на примере использования Extended FIT плагина для Eclipse знакомящая разработчиков среды Eclipse с процессом тестирования таблиц FIT. Данная статья – первая из двух статей, знакомящая с технологией FIT и показывающая, как её можно использовать в среде на основе Eclipse.
С тех пор как появились компьютеры, программисты были озабочены двумя проблемами: во-первых, как обеспечить связь с бизнесом, чтобы понять, что ему нужно от корпоративных приложений; во-вторых, как проверить, что они разрабатывают ПО, подходящее для нужд бизнеса? Различные методологии и структуры, казалось бы, за эти годы подошли вплотную к решению данных проблем, пока не появился FIT – метод, способный решить данные проблемы наиболее простым и интуитивно понятным путём.
FIT – это универсальная открытая структура, которую можно легко расширить для работы с различного рода тестами. Данная статья показывает, как использовать FIT в сочетании с Eclipse для решения нескольких проблем, возникающих при разработке ПО. Статья начинается с обзора того, что FIT делает для решения проблем, присущих разработке ПО.
FIT облегчает коммуникации между корпоративным сектором и разработчиками, предельно сосредотачивая внимание на том, что должно быть сделано. Данная функциональность помогает избежать нечеткой формулировки бизнес-логики и помогает убедиться, что разработчик правильно понял бизнес-задачу. Также FIT поддерживает неминуемую реструктуризацию кода, в результате чего система развивается, снижая сложность обслуживания, расширения или изменения кода, препятствуя его "разбуханию" и программной энтропии. В конечном счёте FIT увеличивает качество программ в целом, гарантируя, что команда разработчиков незамедлительно узнает, когда тот или иной компонент завершён или когда законченная работа была завершена с ошибкой.
FIT и JUnit
Если уже используется JUnit, то вы наверняка задумывались о том, следует ли прекратить написание тестов JUnit? Ответ – Нет. FIT не предназначен для того чтобы заменить JUnit-тестирование; скорее, он функционирует на более высоком уровне – уровне интеграционного тестирования (рисунок 1).
Рисунок 1. Структура FIT-процесса
Можно по-прежнему создавать тесты JUnit. Но, кроме того, необходимо создавать тесты FIT, используя таблицы FIT.
FIT и таблицы FIT
Для JUnit ядро – это сценарий тестирования (test case). Для IBM Rational Unified Process® (RUP®) ядро – это сценарий использования (use case), а для FIT – это FIT-таблица. Таблицы играют основную роль в реализации обещаний FIT по улучшению коммуникаций между участниками бизнес-процесса, повышения быстродействия и стабильности ПО.
Таблицы – это простой и эффективный метод получения информации независимо от того, отражают ли они финальный счёт бейсбольного матча или котировки акций в ежедневной газете. По этой причине создатели FIT предпочли использовать таблицы в качестве выбранного инструмента, позволяющего пользователям задавать программе режим работы через примеры, которые снижают неопределённость команд и возлагают на пользователя ответственность за чёткое определение параметров ПО.
Гибкость в работе системы (agility) – способность подстраиваться под нужды пользователя – имеет ключевое значение для современного ПО. Возрастающая конкуренция вынуждает корпоративных пользователей продолжать добавлять всё больше особенностей и функциональных возможностей. Тестирование FIT помогает увеличить эту гибкость, определяя изменения и гарантируя, что никакие модификации кода не нарушают ранее установленные требования. Таблицы FIT служат в качестве механизма передачи результатов работы ПО как маяк в процессе разработки и фокусировки на потребностях бизнеса.
Однако с ростом динамичности ПО проявляется всё возрастающий риск потери стабильности. Таблицы FIT помогают восстановить равновесие в соответствии с требованиями к тестируемой системе System Under test (SUT), проверяя, что любые изменения в системе, включая рефакторинг и расширения, визуально незамедлительно передаются различным участникам этой системы.
Проверка расчётов с FIT
Проверка соответствия расчётов имеющемуся бизнес-правилу – важная часть тестирования ПО. Бизнес-правила представлены в форме таблиц и конкретных примеров, помогающих в их понимании.
Пример: таблица вычислений FIT
Бизнес-правило для расчёта теста в данном примере такое.
В США стипендия, составляющая $500 в месяц, присуждается студенту в том случае, если по результатам пройденного им тестирования на определение академических способностей Scholasrtic Assessment Test (SAT) его совокупный балл составил по меньшей мере 2000 баллов, а за каждые 100 баллов превышения порога добавляется ещё по $500. Выборка данных в таблице используется, чтобы смоделировать корреляцию между баллом по SAT и стипендией, присуждаемой в различных случаях. Например, в случае набора 2300 баллов присуждается стипендия $2000.
Таблица 1 – пример таблицы FIT, моделирующей ожидаемое поведение данного бизнес-правила. Это правило вычисляет стипендию (scholarship), которую получают студенты в зависимости от набранного балла (score) по SAT.
Таблица 1. Расчёт по FIT с использованием таблицы ColumnFixture
| CalculateScholarship | | Score | Scholarship() | | 1000 | 0 | | 1999 | 0 | | 2000 | 500 | | 2050 | 500 | | 2100 | 1000 | | 2200 | 1500 | | 2300 | 2000 | | 2350 | 2000 | | 2400 | 2500 |
В первой строке таблицы указано название тестируемой фикстуры. Класс фикстуры действует как драйвер, чтобы определить, как выборка табличных данных должна быть подвергнута тестированию в SUT. В этом примере фикстура называется CalculateScholarship.
Поскольку этот пример содержит в себе таблицу ColumnFixture, то вторая строка идентифицирует названия столбцов данных и расчетных полей. В этом примере столбец Score относится к входным значениям, а столбец Scholarship() – к ожидаемым результатам расчета.
Создание фикстуры FIT для таблицы ColumnFixture
Чтобы заставить среду FIT работать с таблицей 1, необходимо создать фикстуру или класс-посредник Test Adapter, который сообщит FIT, как взаимодействовать с программой. Листинг 1 демонстрирует фикстуру CalculateScholarship.
Листинг 1. Фикстура CalculateScholarship
public class CalculateScholarship extends ColumnFixture {
public int score;
public int scholarship(){
ScholarshipSystem scholar = new ScholarshipSystem();
return scholar.calculateScholarship(score);
}
}
|
Эта фикстура вызывает класс тестируемого ПО – ScholarshipSystem, показанный в листинге 2, а затем вызывает в нём метод calculateScholarship().
Листинг 2. Класс ScholarshipSystem
public class ScholarshipSystem {
public int calculateScholarship(int score){
int scholarship = 0;
if(score<2000)
return scholarship;
else
scholarship = 500;
scholarship = scholarship + ((score - 2000)/100) * 500;
return scholarship;
}
}
|
Можно расширять различные типы фикстур в зависимости от того, что необходимо тестировать. В примере выше использовался ColumnFixture, чтобы отобразить столбцы в таблице в переменные и методы фикстуры.
Два столбца в таблице соответствуют переменным в фикстуре. Второй столбец, который содержит ожидаемый результат, соответствует методу scholarship() в фикстуре. При вычислении ответа класс ScholarshipSystem используется как SUT.
Тестирование с FIT в Eclipse
Чтобы продемонстрировать, как можно использовать FIT в среде Eclipse, был использован плагин Extended FIT для Eclipse, который обеспечивает простой интерфейс пользователя (UI) для загрузки FIT-файлов ввода/вывода. Этот плагин основан на базовом плагине FIT Library.
Установка Extended FIT плагина для Eclipse
Чтобы установить Extended FIT плагин для Eclipse, необходимо выполнить следующие действия.
- Загрузить базовый FIT Eclipse плагин.
- Извлечь содержимое .zip архива и скопировать .jar файл в папку Plugins каталога установки Eclipse.
- Загрузить Extended FIT плагин для Eclipse.
- Скопировать . jar файл в папку Plugins каталога установки Eclipse.
- Закрыть и заново запустить Eclipse.
Теперь можно увидеть новое меню FIT и кнопку Run FIT (запустить FIT) на панели инструментов (рисунок 2). Если они доступны, значит, Вы это видите и, значит, Extended FIT плагин для Eclipse был успешно установлен.
Рисунок 2. Extended FIT плагин, установленный в Eclipse
Extended FIT плагин для Eclipse поставляется вместе с .jar файлом FIT, так что не нужно отдельно устанавливать .jar файл FIT для выполнения тестов. Тем не менее чтобы разрабатывать собственные фикстуры, может потребоваться добавить .jar файлы FIT в путь для сборки проекта.
 |
Тестирование других видов фикстур
Можно использовать показанный здесь подход проверки расчётов, используя таблицы и фикстуры FIT, для тестирования других FIT-таблиц. Допустим, используется фикстура ActionFixture для тестирования выполнения бизнес-процесса, а фикстура RowFixture – для тестирования результатов ожидаемого поиска или запроса. Единственное различие в тестировании этих видов фикстур с использованием Extended FIT плагина для Eclipse в том, что написанная фикстура будет расширять другой класс BaseFixture.
|
|
Использование Extended FIT плагина для Eclipse
Чтобы использовать Extended FIT плагин для Eclipse, необходимы три файла:
- входной файл с расширением .html, содержащий все входные FIT-таблицы;
- выходной .html файл, содержащий результаты выполненного FIT тестирования;
- отдельный .jar файл, содержащий все используемые фикстуры.
Примечание. При создании классов клиентских фикстур необходимо убедиться, что они скомпонованы в .jar файл c помощью любого инструмента для сборки. Extended FIT плагину потребуется указать местоположение этого .jar файла для выполнения теста FIT.
Когда имеются все необходимые файлы для Extended FIT плагина, можно приступать к выполнению тестов FIT, выполнив следующие действия.
- Нажать на кнопку Run Fit (Выполнить FIT).
- Нажать на кнопку Browse i/p (Поиск входных файлов), чтобы определить местоположение входного файла.
- Нажать на кнопку Browse o/p (Поиск выходных файлов), чтобы определить местоположение выходного файла.
- Нажать на кнопку Browse Fixture Jar (Поиск .jar файла с фикстурами), чтобы определить местоположение .jar файла с фикстурами.
- Нажать на кнопку Run Fit (Выполнить FIT).
FIT получает .html-файл на вход; в результате название входного файла конфигурируется следующим образом (рисунок 3).
Рисунок 3. Выполнение тестов с использованием Extended FIT плагина для Eclipse
Функционирование Extended FIT плагина для Eclipse
Extended FIT плагин для Eclipse работает как простая оболочка, передающая вызовы основной библиотеке FIT. При нажатии кнопки Run FIT плагин Extended FIT вызывает и выполняет относящийся к FIT класс FileRunner, передавая выбранные входной и выходной файлы как параметры для него. FIT-класс FileRunner в свою очередь разбирает входной файл и записывает результаты выполнения FIT-тестирования в выбранный выходной файл. Если всё выполнилось без сбоя, то результаты выполнения будут показаны в окне.
Взгляд в будущее
В данной статье показано, каким образом FIT позволяет пользователям и разработчикам преодолевать непонимание относительно ПО. Создавая конкретные примеры, пользователи смогут дать программистам четкое представление о том, что нужно разработать. Также было показано, как FIT и Eclipse объединяются в совершенный инструмент, позволяя разработчикам писать фикстуры и запускать таблицы FIT с целью проверки программы. Расширяя базовый плагин FIT Eclipse, можно использовать Eclipse для выполнения FIT-тестирования правил, основанных на вычислениях. С такой же эффективностью данный подход может быть легко применён и к другим формам FIT-тестирования.
В следующей статье данного цикла будет рассказано, как построен Extended FIT плагин для Eclipse. Также будет рассказано, как FIT использовался для тестирования этого плагина в ходе разработки плагина в среде Eclipse's Plug-in Development Environment (PDE).
Ресурсы Научиться
Получить продукты и технологии
- Eclipse V3.1: бесплатная пробная версия Eclipse V3.1.(EN)
- FIT Eclipse plug-in: загрузка и дополнительная информация о FIT плагине для Eclipse.(EN)
- IBM trial software: ознакомительные версии программного обеспечения для разработчиков, которые можно загрузить прямо со страницы сообщества developerWorks.(EN)
Обсудить
Об авторе  | |  | Вишну Веттривел (Vishnu Vettrivel) работает ведущим консультантом в PunditLabs, специализируясь на консультациях и технологиях для корпоративного сектора, имеет многолетний опыт в архитектуре, проектировании и разработке критически важных приложений уровня предприятия. Интенсивно работая с заказчиками Fortune 50, он участвовал в выработке стратегий развития многих новых технологий. Связаться с Вишну можно по e-mail vishnu@punditlabs.com. |
Выскажите мнение об этой странице
|  |