Введение
FitNesse – это веб-сервер, вики и инструмент автоматизированного тестирования программного обеспечения. Он основан на Framework for Integrated Test, разработанном Уордом Каннингемом, и предназначен для поддержки приемочного тестирования, а не модульного, поскольку позволяет создавать подробные и понятные описания функциональности системы. FitNesse позволяет пользователям разработанной системы вводить данные в специальном формате (который доступен даже не программистам). Эти данные интерпретируются, и тесты создаются автоматически. Затем эти тесты выполняются системой, а результаты возвращаются пользователю. Преимущество такого подхода – очень быстрая обратная связь от пользователей. Разработчику тестируемой системы необходимо предоставить определенную поддержку (классы, называемые "fixtures", соответствующие определенным соглашениям). FitNesse написан на Java (Мика Мартин при участии Роберта К. Мартина и других). Изначально программа поддерживала только Java, но со временем были добавлены версии для других языков (C++, Python, Ruby, Delphi, C# и т.д.).
FitNesse is a web server, a wiki and an automated testing tool for software. It is based on Ward Cunningham's Framework for Integrated Test and is designed to support acceptance testing rather than unit testing in that it facilitates detailed readable description of system function. FitNesse allows users of a developed system to enter specially formatted input (its format is accessible to non programmers). This input is interpreted, and tests are created automatically. These tests are then executed by the system and output is returned to the user. The advantage of this approach is very fast feedback from users. The developer of the system to be tested needs to provide some support (classes named "fixtures", conforming to certain conventions). FitNesse is written in Java (by Micah Martin with help from Robert C. Martin and others). The program first supported only Java, but versions for several other languages have been added over time (C++, Python, Ruby, Delphi, C#, etc. ).
FitNesse как метод тестирования
FitNesse изначально был разработан как удобный интерфейс для фреймворка Fit. Поэтому его задача – поддержка гибкого стиля тестирования методом «черного ящика», включая приемочное и регрессионное тестирование. В этом стиле тестирования функциональные тестировщики в проекте разработки программного обеспечения совместно с разработчиками создают тестовый набор. Тестирование в FitNesse основано на принципах тестирования «черного ящика», где тестируемая система рассматривается как «черный ящик» и оценивается по результатам, генерируемым в ответ на заданные входные данные. Функциональный тестировщик отвечает за проектирование тестов с функциональной точки зрения и их описание в FitNesse, а разработчик – за подключение FitNesse к тестируемой системе, чтобы обеспечить выполнение тестов и сравнение фактических результатов с ожидаемыми. Идея этого метода тестирования, описанная в книге "Fit for Developing Software", заключается в том, что вынужденное сотрудничество тестировщиков и разработчиков улучшает взаимопонимание системы и требований, поскольку обе группы вынуждены вырабатывать общий язык в процессе коммуникации.
FitNesse как инструмент тестирования
Тесты в Fitnesse описываются как связки входных данных и ожидаемых результатов. Эти связки представляют собой различные вариации таблицы решений. Инструмент FitNesse поддерживает несколько таких вариаций, от буквальных таблиц решений до таблиц, выполняющих запросы, и до таблиц, выражающих скрипты тестирования (то есть последовательный порядок шагов, необходимых для достижения результата). Наиболее универсальная форма – это полностью свободная таблица, которую разработчики тестов могут интерпретировать любым удобным способом. Однако все тесты выражаются в виде той или иной таблицы. FitNesse полностью ориентирована на простоту создания тестов, позволяя тестировщикам и разработчикам сосредоточиться на разработке высококачественных тестов, а не на технических деталях их выполнения. Учитывая принцип работы FitNesse, простота создания тестов обусловлена тремя факторами:
Легкое создание таблиц. Простое преобразование таблиц в вызовы тестируемой системы. Обеспечение удобства и гибкости при документировании тестов. Для удовлетворения этих требований FitNesse использует механизм вики. Вики-системы позволяют легко и быстро создавать HTML-страницы и, в частности, упрощают представление таблиц. Эти качества делают базовый язык WikiWiki идеальным выбором для "пользовательского интерфейса" FitNesse: с одной стороны, он позволяет просто выражать таблицы произвольной формы, а с другой – ограничивает содержимое этих таблиц достаточно простым текстом. Это означает, что язык WikiWiki может обрабатывать любую форму таблицы, необходимую для конкретного теста, и одновременно ограничивает содержимое таблиц буквенно-цифровым текстом, который легко сопоставить с вызовом программного обеспечения. Наконец, поскольку каждый тест в FitNesse является вики-страницей, каждую таблицу тестирования можно встраивать в текст вики, что позволяет функциональному тестировщику быстро добавлять описательный текст с разумной разметкой.
Creating tables easily. Easily translating tables into calls to the system under test. Allowing ease and flexibility in documenting tests. In order to meet these requirements, FitNesse leverages the wiki mechanism. Wikis classically allow for the easy and rapid creation of HTML pages and particularly simplify the expression of tables. These qualities make the basic WikiWiki language an ideal choice for a "user interface" for FitNesse: on the one hand it allows for the simple expression of very free form tables, on the other hand it limits the contents of those tables to rather simple text. This means that the WikiWiki language can handle whatever shape of table is required for a particular test and at the same time limits the contents of those tables to alphanumeric text that can easily be mapped into a call to a piece of software. Finally, since each test in FitNesse is a wiki page it is possible to embed each testing table within wiki text; this allows a functional tester to include descriptive text with a reasonable layout quickly.
FitNesse как программный инструмент
FitNesse – это инструмент, разработанный на Java и поставляемый в виде единого исполняемого JAR-файла. Этот исполняемый файл включает в себя движок вики, встроенный веб-сервер, механизм тестирования и все необходимые ресурсы (изображения, таблицы стилей и т. д.) для создания веб-сайта в фирменном стиле FitNesse. FitNesse уделяет большое внимание простоте использования как инструменту тестирования. Поэтому он поставляется со всеми необходимыми компонентами: при запуске инструмент активирует встроенный веб-сервер, который позволяет с одинаковой легкостью публиковать тестовые страницы локально или в интернете. Встроенный сервер достаточно легкий и может работать как на ноутбуке, так и на полноценном сервере. После запуска инструмент разворачивает собственный движок вики на встроенном сервере. Этот движок вики также ориентирован на простоту, что означает, что для работы ему не требуется внешняя база данных – он просто создает файловый набор страниц вики, которые интерпретируются движком вики и обслуживаются встроенным веб-сервером. Вики по умолчанию, создаваемая инструментом, включает в себя руководство пользователя FitNesse и несколько примеров. Репозиторий документов по умолчанию создается со всем необходимым для публикации стандартной вики в стиле FitNesse (то есть вместе с базовым репозиторием страниц вики создаются все изображения, таблицы стилей, файлы JavaScript и т. д.). Движок вики достаточно прост, но предлагает все основные функции, характерные для движков вики: поисковую систему, историю изменений страниц и обзор файлов. Он также предоставляет некоторые возможности рефакторинга, позволяющие удалять, перемещать и переименовывать файлы. Кроме того, движок вики предлагает специальные функции для тестирования, такие как стандартные кнопки для запуска тестов, способы определения отдельных тестовых страниц и наборов тестов, а также историю результатов тестирования для анализа динамики. Наконец, движок предоставляет базовые средства безопасности для блокировки страниц и защиты доступа к вики.
Испытание двигателей
Фактическое сопоставление, как описано выше (а также вызов методов оснастки), выполняется тестовым движком. FitNesse поддерживает два таких движка: движок Fit и движок SLIM.
Подходит
Больше, чем просто движок, Fit – это самостоятельная тестовая среда. Он объединяет функциональность для запуска тестов, интерпретации вики-страниц и генерации выходных страниц. FitNesse изначально был создан вокруг Fit как пользовательского интерфейса, что и вдохновило название инструмента. Fit – это фреймворк, который объединяет множество задач в тестировании, вместо того чтобы чётко разделять их. Разработчик программного обеспечения платит за это тем, что фикстуры для движка Fit должны наследовать базовые классы фреймворка Fit. Это может быть неудобно в Java, поскольку фреймворк использует единственный шанс разработчика на наследование класса. Это также означает, что фикстура по своей сути является сложной конструкцией. Эти соображения побудили команду FitNesse в последние годы перейти на тестовый движок SLIM.
СЛИМ
SLIM (Simple List Invocation Method) является альтернативой Fit. Движок SLIM представляет собой реализацию протокола Slim. В отличие от объединения всех элементов вики-тестирования, движок SLIM концентрируется исключительно на вызове фикстур; он работает как отдельный сервер, который удаленно вызывается движком FitNesse wiki. Интерпретация вики-страницы и генерация страницы результатов теперь выполняются движком wiki. Движок SLIM позволяет использовать гораздо более легковесные фикстуры, представляющие собой простые POJO. Эти фикстуры не требуют расширения или использования каких-либо классов фреймворков, что упрощает их разработку и позволяет разработчику фикстур сосредоточиться на правильном и максимально простом вызове тестируемой системы. Он также оставляет возможность наследования, позволяя разработчикам фикстур создавать иерархии фикстур при необходимости.