FitNesse

Инструмент тестирования программного обеспечения с веб-сервером и вики
FitNesse
Стабильный релиз
v20230503 / 3 мая 2023 г. ; 21 месяц назад [1] ( 2023-05-03 )
Репозиторий
  • github.com/unclebob/fitnesse
Написано вЯва
Операционная системаКроссплатформенный
ТипАвтоматизация тестирования
ЛицензияCPL [2]
Веб-сайтfitnesse.org

FitNesse — это веб-сервер , вики и автоматизированный инструмент тестирования программного обеспечения . Он основан на Framework for Integrated Test Уорда Каннингема и предназначен для поддержки приемочного тестирования, а не модульного тестирования , поскольку он облегчает подробное читаемое описание функций системы.

FitNesse позволяет пользователям разработанной системы вводить специально отформатированные входные данные (формат доступен непрограммистам). Эти входные данные интерпретируются, и тесты создаются автоматически. Затем эти тесты выполняются системой, а выходные данные возвращаются пользователю.

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

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

Принципы FitNesse

FitNesse как метод тестирования

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

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

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

FitNesse как инструмент тестирования

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

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

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

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

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

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

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

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

После запуска инструмент развертывает собственный Wiki-движок на встроенном сервере. Этот Wiki-движок также ориентирован на простоту, что означает, что для его работы не требуется поддерживающая база данных — он просто создает файловую коллекцию Wiki-страниц, которые интерпретируются Wiki-движком и обслуживаются встроенным веб-сервером.

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

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

Выполнение теста

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

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

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

Тест компонента деления
Значение числителяЗначение знаменателяРезультат?
1025.0
1052.0
522.5

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

public class DivisionComponentTest extends ColumnFixture { private double num ; private double denom ;            public void setNumeratorValue ( двойной числитель ) { num = числитель ; }          public void setDenominatorValue ( двойной знаменатель ) { denom = знаменатель ; }          public double result ( ) { return SystemUnderTest.divide ( num , denom ) ; } }        

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

Тестирование двигателей

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

Соответствовать

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

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

СТРОЙНЫЙ

SLIM (Simple List Invocation Method) — альтернатива Fit. Движок SLIM — это реализация протокола Slim. Архивировано 06.12.2014 на Wayback Machine . Вместо того чтобы объединять все элементы тестирования на основе вики, движок SLIM концентрируется только на вызове фикстуры; он работает как отдельный сервер, который вызывается удаленно движком вики FitNesse. Интерпретация страницы вики и генерация страницы результатов теперь являются частью движка вики.

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

Смотрите также

Библиография

  • Fit for Developing Software: Framework for Integrated Tests Рика Магриджа; Уорда Каннингема ( ISBN  978-0-321-26934-8 ), опубликовано Prentice Hall в июне 2005 г.
  • Test Driven .NET Development with FitNesse, автор Gojko Adzic ( ISBN 978-0-9556836-0-2 ), опубликовано Neuri Limited (28 февраля 2008 г.) 
  • Филипп А. Лапланте: Разработка требований к программному обеспечению и системам, Auerbach Publications, Бока-Ратон, Флорида, 2009, стр. 166–167, ISBN 978-1420064674 

Ссылки

  1. ^ "FrontPage.Download". fitnesse.org . Получено 2023-07-06 .
  2. ^ Мартин, Роберт С. "Заголовок лицензии". Репозиторий исходного кода FitNesse . GitHub . Получено 4 июля 2012 г.
  3. ^ Роберт, Мартин. «Три правила TDD». butunclebob.com . Получено 23 августа 2019 г. .
  • Сайт инструмента
  • Исходный репозиторий
  • Языки, поддерживаемые FitNesse
  • Дискуссионная группа, посвященная FitNesse
  • Презентация FitNesse
Взято с "https://en.wikipedia.org/w/index.php?title=FitNesse&oldid=1236352248"