FitNesse
Для улучшения этой статьи желательно:
|
FitNesse | |
---|---|
Тип | Test automation |
Написана на | Java |
Операционная система | Cross-platform |
Последняя версия | v20230503 (3 мая 2023 ) |
Репозиторий | github.com/unclebob/fitn… |
Состояние | Active |
Лицензия | CPL [1] |
Сайт | fitnesse.github.io/fitne… |
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 облегчает создание тестов тремя способами:
- Создавать таблицы просто.
- Просто устанавливать соответствие между таблицей и вызовом к тестируемой системе.
- Документировать тесты просто и гибко.
Чтобы удовлетворить эти требования, 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 (Framework for Integrated Test) — больше, чем движок, это тестовый фреймворк сам по себе. Изначально FitNesse разрабатывался, как интерфейс к FIT.
Его идея проста: html текст, который создается сервером, полностью передается на Runner — плагин на конкретном языке программирования[2][3]. Как следствие из этого Runner должен для каждого языка программирования разбирать HTML текст, понимать, какие команды необходимо вызвать, вызывать эти команды, создавать результирующий HTML. Основной плюс такого подхода — результирующая HTML страница может создаваться по-разному разными плагинами (в том числе NetRunner, например, умеет внедрять .Net Xml Help в обработанный тест, что позволяет видеть подсказки в момент просмотра результата теста[4]). Минус тоже очевиден — разные плагины могут разбирать HTML по-разному.
SLIM
[править | править код]SLIM (Simple List Invocation Method) — это альтернатива FIT. Движки SLIM реализуют протокол SLIM. Вместо совмещения всех элементов вики тестирования, SLIM движок занимается только на вызове фикстур; он работает, как отдельный сервер, который удаленно вызывается из FitNesse. Интерпретация вики страниц и генерация страницы результата осуществляется вики движком.
Архитектура движка SLIM позволяет создавать более легковесные фикстуры, что упрощает создание плагина для FitNesse, однако принципиальных отличий для пользователя FitNesse (как для создателя тестового API, так и для писателя сценариев) нет.
См. также
[править | править код]- Спецификация на примерах
- Приёмочное тестирование (также называемое функциональным тестированием)
- Тестирование производительности ПО
- Регрессионное тестирование
- Watir
Книги
[править | править код]- Fit for Developing Software: Framework for Integrated Tests by Rick Mugridge; Ward Cunningham (ISBN 978-0-321-26934-8) published by Prentice Hall in June 2005
- Test Driven .NET Development with FitNesse by Gojko Adzic (ISBN 978-0-9556836-0-2) published by Neuri Limited (February 28, 2008)
- Phillip A. Laplante: Requirements Engineering for Software and Systems, Auerbach Publications, Boca Raton, FL, 2009, pp. 166–167, ISBN 978-1-4200-6467-4
- Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. — Pearson Education, 2008. — P. 157. — ISBN 978-0-13-608325-2.
Примечания
[править | править код]- ↑ Martin, Robert C. License Header . FitNesse Source Repository. GitHub. Дата обращения: 4 июля 2012. Архивировано 14 ноября 2019 года.
- ↑ FitNesse PlugIns . FitNesse. Дата обращения: 8 ноября 2014. Архивировано 2 ноября 2014 года.
- ↑ NetRunner Wiki . Дата обращения: 8 ноября 2014. Архивировано 14 сентября 2020 года.
- ↑ NetRunner - Help and hints . Дата обращения: 8 ноября 2014. Архивировано 14 сентября 2020 года.
Внешние источники
[править | править код]- Tool website
- Repository (недоступная ссылка)
- Languages supported by FitNesse
- Alternative download site and a list of FitNesse related resources (недоступная ссылка)
- Discussion group dedicated to FitNesse
- FitNesse presentation