FitNesse

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
FitNesse
Тип

Test automation

Операционная система

Cross-platform

Последняя версия

v20130530 (2013-05-30; 420 дней тому назад)

Состояние

Active

Лицензия

CPL [1]

Сайт

http://www.fitnesse.org/

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

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

FitNesse написан на Java. Основателем проекта является Роберт Мартин. Первые версии программы поддерживали только Java, но со временем поддержка расширилась до множества других языков (C++, Python, Ruby, Delphi, C#, etc.)

Введение в FitNesse[править | править вики-текст]

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

FitNesse изначально был задуман, как всеобмъемлющий интерфейс к Fit framework. Основным намерением было поддержать agile стиль black-box тестирования приемочного и регрессионного тестирования.

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

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

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

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

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

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

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

FitNesse, как программное обеспечение[править | править вики-текст]

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

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

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

Вики движок довольно примитивный, но содержит все основные средства, распространенные среди вики движков: поиск, история изменений для каждой страницы и обзор файлов. Также доступны некоторое операции рефакторинга, позволяющие удалять, перемещать и переименовывать файлы. В дополнение, движок содержит средства управления тестами, такие как кнопки запуска тестов, способы определения тестовых наборов (Test Suite) и обзор истории результатов тестирования для анализа трендов. Также, вики движок содержит базовые средства авторизации и защиты страниц.

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

Для тестирования в FitNesse необходимы 4 составляющие:

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

Из этих четырех компонент команда разработки создает две: вики страницу и фикстуру.

Пример[править | править вики-текст]

Для программы деления, таблица, заданная wiki-страницей может выглядеть следующим образом (взято из FitNesse Two Minute Example):

Division component test
numerator value denominator value result?
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 (double numerator) {
num = numerator;
}
 
public void setDenominatorValue (double denominator) {
denom = denominator;
}
 
public double result() {
return SystemUnderTest.divide (num, denom);
}
}

Для сопоставления таблицы и фикстуры используется convert-to-camel case. Эта нотация применяется ко всем заголовкам таблиц и используется для определения имен классов и методов фикстуры. Колонка с заголовком, заканчивающимся вопросительным знаком, интерпретируется, как выход фикстуры. Остальные колонки используются, как вход фикстуры. Методы фикстуры вызываются в порядке следования колонок таблицы слева направо.

Тестовые движки[править | править вики-текст]

Описанное выше сопоставление выполняется тестовым движком. FitNesse поддерживает два: FIT и SLIM.

FIT[править | править вики-текст]

FIT — больше, чем движок, это тестовый фреймворк сам по себе. Изначально FitNesse разрабатывался, как интерфейс к FIT.

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

SLIM[править | править вики-текст]

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

Архитектура движка SLIM позволяет создавать более легковесные фикстуры, что упрощает работу разработчика.

Смотри также[править | править вики-текст]

Книги[править | править вики-текст]

References[править | править вики-текст]

  1. Martin, Robert C. License Header. FitNesse Source Repository. GitHub. Проверено 4 июля 2012.

Внешние источники[править | править вики-текст]