В этой статье есть несколько проблем. Помогите улучшить ее или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения )
|
Стабильный релиз | v20230503 / 3 мая 2023 г. ( 2023-05-03 ) [1] |
---|---|
Репозиторий |
|
Написано в | Ява |
Операционная система | Кроссплатформенный |
Тип | Автоматизация тестирования |
Лицензия | CPL [2] |
Веб-сайт | fitnesse.org |
FitNesse — это веб-сервер , вики и автоматизированный инструмент тестирования программного обеспечения . Он основан на Framework for Integrated Test Уорда Каннингема и предназначен для поддержки приемочного тестирования, а не модульного тестирования , поскольку он облегчает подробное читаемое описание функций системы.
FitNesse позволяет пользователям разработанной системы вводить специально отформатированные входные данные (формат доступен непрограммистам). Эти входные данные интерпретируются, и тесты создаются автоматически. Затем эти тесты выполняются системой, а выходные данные возвращаются пользователю.
Преимущество этого подхода — очень быстрая обратная связь от пользователей. Разработчик тестируемой системы должен предоставить некоторую поддержку (классы, называемые «fixtures», соответствующие определенным соглашениям).
FitNesse написан на Java (Микой Мартином с помощью Роберта К. Мартина и других [3] ). Сначала программа поддерживала только Java, но со временем были добавлены версии для нескольких других языков ( C++ , Python , Ruby , Delphi , C# и т. д.).
FitNesse изначально был разработан как высокоудобный интерфейс вокруг фреймворка Fit. Таким образом, его цель — поддерживать гибкий стиль тестирования черного ящика, приемочного и регрессионного тестирования. В этом стиле тестирования функциональные тестировщики в проекте разработки программного обеспечения сотрудничают с разработчиками программного обеспечения для разработки набора тестов.
Тестирование FitNesse основано на обозначении тестирования черного ящика, в котором тестируемая система считается черным ящиком и тестируется с точки зрения выходных данных, генерируемых в ответ на предопределенные входные данные. Функциональный тестировщик отвечает за разработку тестов в функциональном смысле и выражение их в инструменте FitNesse, тогда как разработчик программного обеспечения отвечает за подключение инструмента FitNesse к тестируемой системе, чтобы FitNesse мог выполнить тест и сравнить фактический выходной сигнал с ожидаемым.
Идея этого метода тестирования, описанная в книге «Fit for Developing Software» , заключается в том, что принудительное сотрудничество тестировщиков и разработчиков улучшит взаимное понимание системы и требований, заставив обе группы выработать общий язык, поскольку они учатся общаться друг с другом.
Тесты описываются в Fitnesse как связи входов и ожидаемых выходов. Эти связи являются выраженными вариациями таблицы решений . Инструмент FitNesse поддерживает несколько таких вариаций, начиная от буквальных таблиц решений и заканчивая таблицами, которые выполняют запросы, и таблицами, которые выражают сценарии тестирования (т. е. буквальный порядок шагов, которые необходимо выполнить для достижения результата). Наиболее общей формой является полностью свободная таблица, которую можно интерпретировать любым способом, который нравится разработчикам тестов. Однако все тесты выражаются в форме какой-либо таблицы.
FitNesse полностью ориентирован на простое создание тестов, позволяя тестировщикам и разработчикам сосредоточиться на создании высококачественных тестов, а не теряться в механике выполнения теста. Учитывая, как работает FitNesse, простое создание тестов включает три фактора:
Для того чтобы соответствовать этим требованиям, FitNesse использует механизм wiki. Классически wiki позволяют легко и быстро создавать HTML-страницы и в частности упрощают выражение таблиц. Эти качества делают базовый язык WikiWiki идеальным выбором для «пользовательского интерфейса» для FitNesse: с одной стороны, он позволяет просто выражать очень свободные таблицы, с другой стороны, он ограничивает содержимое этих таблиц довольно простым текстом.
Это означает, что язык WikiWiki может обрабатывать любую форму таблицы, необходимую для конкретного теста, и в то же время ограничивает содержимое этих таблиц буквенно-цифровым текстом, который можно легко сопоставить с вызовом части программного обеспечения. Наконец, поскольку каждый тест в FitNesse является страницей вики, можно встроить каждую тестовую таблицу в текст вики; это позволяет функциональному тестировщику быстро включать описательный текст с разумной компоновкой.
FitNesse — это инструмент, разработанный на Java и поставляемый в виде одного исполняемого файла jar . Исполняемый файл включает в себя движок wiki, встроенный веб-сервер, движок тестирования и все ресурсы (изображения, таблицы стилей и т. д.), необходимые для создания веб-сайта в собственном стиле FitNesse.
FitNesse в значительной степени ориентирован на простоту использования в качестве инструмента тестирования. Таким образом, он поставляется со всеми необходимыми компонентами на борту: после выполнения инструмент запускает встроенный веб-сервер, который позволяет с одинаковой легкостью открывать тестовые страницы локально или через Интернет. Встроенный сервер довольно легкий и может работать как с ноутбука, так и с полноценной серверной машины.
После запуска инструмент развертывает собственный Wiki-движок на встроенном сервере. Этот Wiki-движок также ориентирован на простоту, что означает, что для его работы не требуется поддерживающая база данных — он просто создает файловую коллекцию Wiki-страниц, которые интерпретируются Wiki-движком и обслуживаются встроенным веб-сервером.
Вики по умолчанию, созданная инструментом, включает руководство пользователя FitNesse и несколько примеров. Репозиторий документов по умолчанию создается полностью со всем необходимым для публикации вики по умолчанию в стиле FitNesse (то есть все изображения, таблицы стилей, файлы JavaScript и т. д. создаются вместе с базовым репозиторием страниц вики).
Движок вики довольно прост, но предлагает все основные возможности, общие для движков вики: поисковую систему , историю изменений на страницу и обзор файлов. Он также предлагает некоторые операции рефакторинга, которые позволяют удалять, перемещать и переименовывать файлы. Кроме того, движок вики предлагает некоторые специфичные для тестов возможности, такие как стандартные кнопки для запуска тестов, способы определения отдельных тестовых страниц и наборов тестов, а также исторический обзор результатов тестов для анализа тенденций. Наконец, движок предлагает некоторые незначительные средства безопасности для блокировки страниц и обеспечения доступа к вики.
Тестирование в системе FitNesse включает четыре компонента на каждый тест:
Из этих компонентов команда разработчиков программного обеспечения создает два: страницу вики и фикстуру (конечно, она также создает тестируемую систему, но с точки зрения теста черного ящика только два). Страница вики включает в себя некоторую форму таблицы решений, которая выражает тест. Например, она может выражать тесты для компонента, который выполняет деление (пример основан на примере, приведенном в примере FitNesse Two Minute):
Значение числителя | Значение знаменателя | Результат? |
---|---|---|
10 | 2 | 5.0 |
10 | 5 | 2.0 |
5 | 2 | 2.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 . Эти приспособления не обязаны расширять или использовать какие-либо классы фреймворка, что упрощает их конструкцию и позволяет разработчику приспособлений сосредоточиться на вызове тестируемой системы должным образом и максимально простым способом. Он также сохраняет открытым путь наследования, позволяя разработчикам приспособлений создавать иерархии приспособлений при необходимости.