﻿<p>{{refimprove|date=August 2012}}<br>{{ infobox software<br>| name = FitNesse<br>| developer = <br>| latest release version = v20130530<br>| latest release date = {{Start date and age|2013|05|30}}<br>| operating system = [[Cross-platform]]<br>| genre = [[Test automation]]<br>| license = [[Common Public License|CPL]] &lt;ref name=licenseheader&gt;{{cite web|last=Martin|first=Robert C.|title=License Header|url=https://github.com/unclebob/fitnesse/blob/master/licenseHeader.txt|work=FitNesse Source Repository|publisher=GitHub|accessdate=4 July 2012}}&lt;/ref&gt; <br>| status = Active<br>| website = http://www.fitnesse.org/<br>}}</p>
<p>&#x27;&#x27;&#x27;FitNesse&#x27;&#x27;&#x27; это [[веб-сервер]], [[вики]], и инструмент [[Автоматизированное_тестирование|автоматизированного тестирования]] для [[программное обеспечение|программного обеспечения]]. Он основан на проекте [[Каннингем,_Уорд|Уорда Каннингема]] [[Framework for Integrated Test]]. FitNesse спроектирован для поддержки [[приемочного тестирования]] более, чем [[модульного тестирования]] в том, что облегчает детальное читаемое описание требований к системе.</p>
<p>FitNesse позволяет пользователям разрабатываемой системы вводить в специальном формате (доступном для не-программистов). На основе ввода автоматически создаются тесты. Эти тесты затем исполняются системой, и результаты возвращаются пользователю. Преимущество такого подхода заключается в быстрой обратной связи от пользователей. Разработчик тестируемой системы должен предоставить небольшую поддержку (классы, называемые &quot;фикстурами&quot;, удовлетворяющие определенным требованиям).</p>
<p>FitNesse написан на [[Java (programming language)|Java]]. Основателем проекта является [[Robert Cecil Martin|Роберт Мартин]]. Первые версии программы поддерживали только Java, но со временем поддержка расширилась до множества других языков (C++, Python, Ruby, Delphi, C#, etc.)</p>
<p>==Введение в FitNesse==</p>
<p>===FitNesse, как метод тестирования===<br>FitNesse изначально был задуман, как всеобмъемлющий интерфейс к Fit framework. Основным намерением было поддержать [[Agile software development|agile]] стиль [[black-box тестирования]] приемочного и регрессионного тестирования.</p>
<p>В FitNesse тестирование основано на понятии черного ящика, где тестируемая система рассматривается, как черный ящик и проверяется соответствие сгенерированного выхода заданному входу. Тестировщик отвечает за проектирование тестов в функциональном смысле и описания их в FitNesse, а разработчик отвечает за связывание FitNesse и тестируемой системы, так, что FitNesse может исполнять тесты и проверять ожидаемый выход с полученным.</p>
<p>Идея это метода тестирования, как описано в &#x27;&#x27;[[Fitnesse#Books|Fit for Developing Software]]&#x27;&#x27; заключается в том, что усиленное взаимодействие тестировщиков и разработчиков повысит общее видение системы и требований к ней, тем самым подталкивая обе группы общению &quot;на одном языке&quot;. </p>
<p>===FitNesse, как инструмент тестирования===<br>Тесты описаны в FitNesse, как своего рода связь между входом и выходом системы. Эти связи представляются в виде [[таблица принятия решений|таблиц принятия решений]]. FitNesse поддерживает несколько вариантов таких таблиц, начиная с буквально таблиц принятия решений, заканчивая последовательностю шагов, необходимых для достижения результата. В самом общем случае на таблицы вообще не накладывается никаких ограничений. Но все же это должны быть таблицы.</p>
<p>FitNesse упрощает создание тестов, что позволяет тестировшикам и разработчикам сфокусироваться на формировании высококачественного тестового набора, а не изучении механики выполнения тестов. FitNesse облегчает создание тестов тремя способами:<br># Создавать таблицы просто.<br># Просто устанавливать соответствие между таблицей и вызовом к тестируемой системе.<br># Документировать тесты просто и гибко.</p>
<p>Чтобы удовлетворить эти требования, FitNesse использует механизм вики. Вики позволяет быстро и удобно создавать HTML страницы и чрезвычайно упрощает описание таблиц. Эти качества делают язык [[WikiWiki]] идеально подходящим для &quot;пользовательского интерфейса&quot;  FitNesse: с одной стороны он позволяет просто выразить требование в виде таблиц, с другой ограничивает содержимой этих таблиц довольно простым текстом.<br>Это означает, что язык WikiWiki может справиться с любой формой таблицы, необходимой для конкретного теста, и в то же время ограничивает содержимое таблиц численно-буквенным текстом, который можно однозначно перевести в вызову определенной функции программного обеспечения.<br>Итого, так как каждый тест в FitNesse - это вики страница, тестировщик можно включить в тест развернутое описание требований.</p>
<p>===FitNesse, как программное обеспечение===<br>FitNesse разработан на Java. Он поставляется в виде единственного исполняемого [[jar file|jar файла]], который включает вики движок, встроенный [[веб-сервер]], тестовый движок и все ресуры (картинки, стили, и так далее) необходимые для создания веб сайта в стиле FitNesse.</p>
<p>FitNesse сфокусирован на удобстве использования, как инструмента тестирования. Таким образом, он включает все необходимые компоненты: после запуска инструмент запускает встроенный веб сервер, который позволяет получить доступ к страницам с одинаковой легкостью как с локальной машины, так и через интернет. Встроенный сервер довольно легкий и может быть запущен как на ноутбуке, так и на специализированном сервере.</p>
<p>Вики движок FitNesse сфокусирован на удобстве. Он не требует наличия базы данных &amp;mdash; страницы хранятся ввиде файлов. Сразу после первого запуска, вики включает полную документацию на FitNesse и несколько примеров.</p>
<p>Вики движок довольно примитивный, но содержит все основные средства, распространенные среди вики движков: поиск, история изменений для каждой страницы и обзор файлов. Также доступны некоторое операции рефакторинга, позволяющие удалять, перемещать и переименовывать файлы. В дополнение, движок содержит средства управления тестами, такие как кнопки запуска тестов, способы определения тестовых наборов (Test Suite) и обзор истории результатов тестирования для анализа трендов. Также, вики движок содержит базовые средства авторизации и защиты страниц. </p>
<p>===Выполнение тестов===<br>Для тестирования в FitNesse необходимы 4 составляющие:</p>
<p>* Вики страница с описанием теста ввиде таблицы принятия решений.<br>* Тестовый движок, который интерпретирует содержимое страницы.<br>* Тестовая фикстура, которая вызывается тестовым движком и передает управление тестирумой системе.<br>* Тестируемая система.</p>
<p>Из этих четырех компонент команда разработки создает две: вики страницу и фикстуру. Вики страницы содержит что-то вроде таблицы принятия решений. Например для программы деления, таблицы может выглядить следующим образом (Позаимствовано из FitNesse Two Minute Example):</p>
<p>{| class=&quot;wikitable&quot;<br>! colspan=&quot;3&quot; | Division component test<br>|-<br>!numerator value!!denominator value!!result?<br>|-<br>|10||2||5.0<br>|-<br>|10||5||2.0<br>|-<br>|5||2||2.5<br>|}</p>
<p>Связь между движком тестирования и тестируемой системой осуществляется через фикстуру. Для данной таблицы её код на языке Java может выглядеть таким образом:</p>
<p>&lt;syntaxhighlight lang=&quot;java&quot;&gt;public class DivisionComponentTest extends ColumnFixture{<br>private double num;<br>private double denom;</p>
<p>public void setNumeratorValue (double numerator) {<br>num = numerator;<br>}</p>
<p>public void setDenominatorValue (double denominator) {<br>denom = denominator;<br>}</p>
<p>public double result() {<br>return SystemUnderTest.divide (num, denom);<br>}<br>}&lt;/syntaxhighlight&gt;</p>
<p>Для сопоставления таблицы и фикстуры используется [[camel case|convert-to-camel case]]. Эта нотация применяется ко всем заголовкам таблиц и используется для определения имен классов и методов фикстуры. Колонка с заголовком, заканчивающимся вопросительным знаком, интерпретируется, как выход фикстуры. Остальные колонки используются, как вход фикстуры. Методы фикстуры вызываются в порядке следования колонок таблицы слева направо.</p>
<p>===Тестовые движки===<br>Описанное выше сопоставление выполняется тестовым движком. FitNesse поддерживает два: FIT и SLIM.</p>
<p>====FIT====<br>FIT &amp;mdash; больше, чем движок, это тестовый фреймворк сам по себе. Изначально FitNesse разрабатывался, как интерфейс к FIT.</p>
<p>Этот фреймворк соединяет множество ответственностей, вместо того, чтобы разделять их. Это несколько усложняет его использование. Кроме того, FIT доступен только для Java. Поэтому команда разработки FitNesse решила перейти на SLIM.</p>
<p>====SLIM====<br>SLIM (Simple List Invocation Method) &amp;mdash; это альтернатива FIT. Движки SLIM реализуют протокол [http://fitnesse.org/FitNesse.UserGuide.SliM.SlimProtocol протокол SLIM]. Вместо совмещения всех элементов вики тестирования, SLIM движок занимается только на вызове фикстур; он работает, как отдельный сервер, который удаленно вызывается из FitNesse. Интерпретация вики страниц и генерация страницы результата осуществляется вики движком.</p>
<p>Архитектура движка SLIM позволяет создавать более легковесные фикстуры, что упрощает работу разработчика.</p>
<p>==Смотри также==<br>{{portal|Software Testing}}</p>
<p>*[[Спецификация на примерах]]<br>*[[Приемочное тестирование]] (также называемое функциональным тестированием)<br>*[[Тестирование производительности ПО]]<br>*[[Регрессионное тестирование]]<br>*[[Watir]]</p>
<p>==Книги==<br>* [http://safari.phptr.com/0321269349 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<br>* [http://www.amazon.com/dp/0955683602 Test Driven .NET Development with FitNesse] by [[Gojko adzic|Gojko Adzic]] (ISBN 978-0-9556836-0-2) published by Neuri Limited (February 28, 2008)<br>* Phillip A. Laplante: Requirements Engineering for Software and Systems, Auerbach Publications, Boca Raton, FL, 2009, pp. 166-167, ISBN 978-1420064674</p>
<p>==References==</p>
<p>&lt;references /&gt;</p>
<p>==Внешние источники==<br>* [http://www.fitnesse.org Tool website]<br>* [https://github.com/unclebob/fitnesse|Source Repository]<br>* [http://www.fitnesse.org/FrontPage.FitServers Languages supported by FitNesse]<br>* [http://fitnesse.info/ Alternative download site and a list of FitNesse related resources]<br>* [http://tech.groups.yahoo.com/group/fitnesse Discussion group dedicated to FitNesse]<br>* [http://www.methodsandtools.com/tools/tools.php?fitnesse FitNesse presentation]</p>
<p>[[Category:Groupware]]<br>[[Category:Software testing tools]]</p>
<p>Внимание! Этот перевод, возможно, ещё не готов.<br>Его статус: идёт перевод</p>
<p>Переведено на Нотабеноиде<br>http://notabenoid.org/book/43405/170293</p>
<p>Переводчики: peterdemin</p>
