Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

FitNesse - это веб-сервер , вики и инструмент автоматического тестирования программного обеспечения . Он основан на Ward Cunningham «s Framework для комплексного испытания и предназначен для поддержки приемо - сдаточных испытаний , а не модульного тестирования в том , что она облегчает подробно читаемый описание функции системы.

FitNesse позволяет пользователям разработанной системы вводить специально отформатированный ввод (его формат доступен для непрограммистов). Этот ввод интерпретируется, и тесты создаются автоматически. Эти тесты затем выполняются системой, и результат возвращается пользователю. Преимущество такого подхода - очень быстрая обратная связь от пользователей. Разработчик тестируемой системы должен предоставить некоторую поддержку (классы с именем «fixtures», соответствующие определенным соглашениям).

FitNesse написан на Java (Мика Мартин с помощью Роберта К. Мартина и других [3] ). Сначала программа поддерживала только Java, но со временем были добавлены версии для нескольких других языков ( C ++ , Python , Ruby , Delphi , C # и т. Д.).

Принципы FitNesse [ править ]

FitNesse как метод тестирования [ править ]

FitNesse изначально разрабатывался как удобный интерфейс на основе фреймворка Fit. Таким образом, его намерение состоит в том, чтобы поддерживать гибкий стиль приемки тестирования методом черного ящика и регрессионного тестирования. В этом стиле тестирования функциональные тестировщики в проекте разработки программного обеспечения сотрудничают с разработчиками программного обеспечения для разработки набора для тестирования.

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

Идея этого метода тестирования, описанного в статье «Пригодность для разработки программного обеспечения» , заключается в том, что принудительное сотрудничество тестировщиков и разработчиков улучшит взаимопонимание системы и требований, заставив две группы разработать общий язык по мере того, как они учатся общаться вместе.

FitNesse как инструмент тестирования [ править ]

В Fitnesse тесты описываются как объединение входных и ожидаемых выходов. Эти муфты представляют собой выраженные вариации таблицы решений . Инструмент FitNesse поддерживает несколько из этих вариантов, начиная от буквальных таблиц решений и заканчивая таблицами, которые выполняют запросы, и таблицами, которые выражают сценарии тестирования (т. Е. Буквальный порядок шагов, которые необходимо выполнить для достижения результата). Самая общая форма - это таблица полностью произвольной формы, которую разработчики тестов могут интерпретировать любым способом. Однако все тесты представлены в виде какой-то таблицы.

FitNesse полностью ориентирован на простое создание тестов, позволяя тестировщикам и разработчикам сосредоточиться на создании высококачественных тестов, а не теряться в механике выполнения теста. Учитывая то, как работает FitNesse, создание тестов легко включает три фактора:

  1. Легко создавать таблицы.
  2. Простое преобразование таблиц в вызовы тестируемой системы.
  3. Обеспечение простоты и гибкости при документировании тестов.

Чтобы соответствовать этим требованиям, FitNesse использует механизм вики. Вики классически позволяют легко и быстро создавать HTML-страницы и особенно упрощают представление таблиц. Эти качества делают основной WikiWikiязык - идеальный выбор для «пользовательского интерфейса» для FitNesse: с одной стороны, он позволяет простое выражение таблиц очень произвольной формы, с другой стороны, он ограничивает содержимое этих таблиц довольно простым текстом. Это означает, что язык WikiWiki может обрабатывать любую форму таблицы, которая требуется для конкретного теста, и в то же время ограничивает содержимое этих таблиц буквенно-цифровым текстом, который можно легко сопоставить с вызовом части программного обеспечения. Наконец, поскольку каждый тест в FitNesse представляет собой вики-страницу, можно встроить каждую тестовую таблицу в вики-текст; это позволяет функциональному тестеру быстро включать описательный текст с разумной компоновкой.

FitNesse как программный инструмент [ править ]

FitNesse - это инструмент, разработанный на Java и поставляемый в виде одного исполняемого файла jar . Исполняемый файл включает в себя механизм вики, встроенный веб-сервер , механизм тестирования и все ресурсы (изображения, таблицы стилей и т. Д.), Необходимые для создания веб-сайта в собственном стиле FitNesse.

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

После запуска инструмент развертывает собственный движок Wiki на своем встроенном сервере. Этот механизм Wiki также ориентирован на простоту, что означает, что для его работы не требуется резервная база данных - он просто создает файловую коллекцию страниц Wiki, которые интерпретируются механизмом Wiki и обслуживаются встроенным веб-сервером. Вики-сайт по умолчанию, созданный этим инструментом, включает руководство пользователя FitNesse и несколько примеров. Репозиторий документов по умолчанию создается в комплекте со всем необходимым для публикации вики по умолчанию в стиле FitNesse (то есть все изображения, таблицы стилей, файлы JavaScript и т. Д. Создаются вместе с базовым репозиторием страниц вики).

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

Выполнение теста [ править ]

Тестирование в системе FitNesse включает четыре компонента в каждом тесте:

  • Вики-страница, на которой тест представлен в виде таблицы решений.
  • Механизм тестирования, который интерпретирует вики-страницу.
  • Тестовое приспособление , которое вызывается с помощью испытательного двигателя и в свою очередь вызывает систему под испытанием.
  • Тестируемая система, которая проходит тестирование.

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

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

открытый  класс  DivisionComponentTest  расширяет  ColumnFixture  {  частное  двойное  число ;  частный  двойной  деноминация ; public  void  setNumeratorValue  ( двойной  числитель )  {  число  =  числитель ;  } public  void  setDenominatorValue  ( двойной  знаменатель )  {  denom  =  знаменатель ;  } public  double  result ()  {  вернуть  SystemUnderTest . разделить  ( число ,  деном );  } }

Отображение между страницей вики и прибором - это прямое преобразование case- mapping в верблюжий . Это сопоставление применяется ко всем заголовкам таблиц и используется для идентификации имени класса фикстуры, а также методов фикстуры. Заголовок, оканчивающийся вопросительным знаком, интерпретируется как значение, считываемое из прибора, другие заголовки считаются входными данными прибора. Методы фиксации вызываются в порядке столбцов таблицы решений слева направо.

Тестирование двигателей [ править ]

Фактическое сопоставление, как описано выше (а также вызов методов фикстуры), выполняется механизмом тестирования. FitNesse поддерживает два из этих двигателей: двигатель Fit и двигатель SLIM.

Fit [ править ]

Fit - это больше, чем двигатель. Он сочетает в себе функции для вызова тестов, интерпретации вики-страниц и создания выходных страниц. FitNesse изначально был построен на основе Fit как пользовательского интерфейса, который вдохновил название инструмента.

Fit - это структура, которая сочетает в себе множество обязанностей при тестировании, а не четко разделяет обязанности. Разработчик программного обеспечения платит за этот факт тем, что приспособления для механизма Fit должны унаследовать от базовых классов инфраструктуры Fit. В Java это может быть неудобно, поскольку означает, что фреймворк требует от разработчика единственного шанса наследования класса. Это также означает, что приспособление по своей природе является тяжеловесной конструкцией. Эти соображения побудили команду FitNesse в последние годы перейти на движок тестирования SLIM.

SLIM [ править ]

SLIM (метод вызова простого списка) является альтернативой Fit. Механизм SLIM - это реализация Slim протокола . Вместо того, чтобы комбинировать все элементы тестирования на основе вики, движок SLIM концентрируется только на вызове прибора; он работает как отдельный сервер, который удаленно запускается вики-движком FitNesse. Интерпретация вики-страницы и создание страницы результатов теперь являются частью вики-движка.

Механизм SLIM позволяет создавать гораздо более легкие приспособления, которые являются простыми объектами POJO . Эти приборы не обязаны расширять или использовать какие-либо классы фреймворка, что упрощает их конструкцию и позволяет разработчику прибора сконцентрироваться на правильном и простом вызове тестируемой системы. Он также сохраняет открытым маршрут наследования, позволяя разработчикам устройств при необходимости создавать иерархии устройств.

См. Также [ править ]

  • Разработка через приемочные испытания
  • Уточнение на примере
  • Приемочное тестирование (также называемое функциональным тестированием)
  • Тестирование производительности программного обеспечения
  • Регрессионное тестирование
  • Watir
  • StoryTestIQ (STIQ) - смесь Selenium и Fitness wiki (обратите внимание: Wiki больше не существует (удалена в 2009 году), оставлено здесь только для справки)

Книги [ править ]

  • Подходит для разработки программного обеспечения: платформа для интегрированных тестов Рика Магриджа; Уорд Каннингем ( ISBN  978-0-321-26934-8 ), опубликованный Prentice Hall в июне 2005 г.
  • Разработка .NET через тестирование с помощью FitNesse, автор Гойко Адзич ( ISBN 978-0-9556836-0-2 ), опубликованный Neuri Limited (28 февраля 2008 г.) 
  • Филип А. Лапланте: Разработка требований к программному обеспечению и системам, Публикации Ауэрбаха, Бока-Ратон, Флорида, 2009 г., стр. 166–167, ISBN 978-1420064674 

Ссылки [ править ]

  1. ^ "FrontPage.FitNesseDevelopment.FitNesseRelease20201213" . fitnesse.org . Проверено 6 апреля 2021 .
  2. ^ Мартин, Роберт С. «Заголовок лицензии» . Репозиторий исходного кода FitNesse . GitHub . Проверено 4 июля 2012 года . CS1 maint: discouraged parameter (link)
  3. ^ Роберт, Мартин. «Три правила TDD» . butunclebob.com . Проверено 23 августа 2019 . CS1 maint: discouraged parameter (link)

Внешние ссылки [ править ]

  • Веб-сайт инструмента
  • Исходный репозиторий
  • Языки, поддерживаемые FitNesse
  • Дискуссионная группа, посвященная FitNesse
  • Презентация FitNesse