Deep FitNesse Deep FitNesse Манушин Игорь, разработчик Манушин Игорь, разработчик Viacode LLC Viacode LLC
FitNesse FitNesse Первая версия: 2003 год, Роберт Первая версия: 2003 год, Роберт Мартин Мартин Средство для автоматического Средство для автоматического интеграционного тестирования интеграционного тестирования Wiki разметка для тестировщиков Wiki разметка для тестировщиков Свободный выбор языка Свободный выбор языка программирования для разработчиков программирования для разработчиков 2 2
Где применялось? (1) Где применялось? (1) B2B приложение (web сайт) B2B приложение (web сайт) Бизнес процессы можно нарисовать в Бизнес процессы можно нарисовать в виде блок-схемы виде блок-схемы Перемещение по блок-схеме Перемещение по блок-схеме обрабатывается в фоновом режиме обрабатывается в фоновом режиме 3 3
Где применялось? (2) Где применялось? (2) 4 4
Как он устроен? Как он устроен? КАРТИНКА КАРТИНКА 5 5 QA FitNesse on Java Runner on .Net Code on .Net Dev Auto 5 5
Пример wiki кода Пример wiki кода | ‘’’ login as ‘’’ | DonJoe | | ‘’’ login as ‘’’ | DonJoe | | ‘’’ create company ‘’’ | Example | | ‘’’ create company ‘’’ | Example | login as DonJoe create company Example 6 6
Код разработчика Код разработчика class MyTestContainer : BaseTestContainer class MyTestContainer : BaseTestContainer { { public bool LoginAs(User userName) public bool LoginAs(User userName) { { /*...*/ /*...*/ } } 7 7
Табличная функция (1) Табличная функция (1) Set Date s For First User Task With open date 22/05 /13 Task Start Date [Task Start Date] + 2 Days Task Remi nd Date [Task Due Date] + 1 Days And show in calen dar true 8 8
Табличная функция (2) Табличная функция (2) set dates for Test User Task activity Property Name Value TaskStartDate 22/05/13 TaskDueDate [Task Start Date] + 2 Days TaskRemindDate [Task Due Date] + 1 Days ShowInCalendar true 9 9
Что же делал FitNesse? Что же делал FitNesse? Эмуляция работы web-сайта Эмуляция работы web-сайта Небольшое количество технического Небольшое количество технического кода кода 10 10
.Net платформа .Net платформа По запросу в NuGet: два результата: По запросу в NuGet: два результата: FitSharp: старый плагин, сделан на основе FitSharp: старый плагин, сделан на основе оригинального для Java оригинального для Java NetRunner: более новый, функции NetRunner: более новый, функции отличаются от стандартного отличаются от стандартного 11 11
Строгая типизация Строгая типизация LoginAs (string) или LoginAs(User) ? LoginAs (string) или LoginAs(User) ? FitSharp: статический метод Parse FitSharp: статический метод Parse NetRunner: статический метод Parse NetRunner: статический метод Parse или отдельный класс-парсер или отдельный класс-парсер 12 12
Таблицы Таблицы Используем коллекции на вход и выход Используем коллекции на вход и выход Create User Property Value login donJoe First Name Don Last Name Joe Birthday 14.08.2014 13 13
Помощь и подсказки (1) Помощь и подсказки (1) | ‘’’ create company ‘’’ | Example | | ‘’’ create company ‘’’ | Example | Разработчик пишет, что делает функция Разработчик пишет, что делает функция Тестировщик может понять, какие Тестировщик может понять, какие функции есть, и за что они отвечают функции есть, и за что они отвечают 14 14
Помощь и подсказки (2) Помощь и подсказки (2) FitNesse: встроенные подсказки FitNesse: встроенные подсказки отсутствуют отсутствуют FitSharp: FitSharp: Используем Doxygen Используем Doxygen Используем IIS Используем IIS NetRunner: используем стандартные NetRunner: используем стандартные XML комментарии, текст будет после XML комментарии, текст будет после первого запуска первого запуска 15 15
Ожидания Ожидания | | wait until task wait until task | | create company create company | | will be will be finished with timeout finished with timeout | | 120 120 | | seconds seconds | | Эвристика: если было исключение ИЛИ Эвристика: если было исключение ИЛИ один раз мы не дождались, то больше один раз мы не дождались, то больше ждать не надо ждать не надо 16 16
Автоматический запуск в CI Автоматический запуск в CI http://server/ http://server/ Tests.ActivityCycles?test Tests.ActivityCycles?test Два режима: Два режима: Web сайт Web сайт Выполнение команды Выполнение команды Используем Windows Scheduled Tasks Используем Windows Scheduled Tasks Используем выполнение команд + Используем выполнение команд + анализируем результирующий xml файл анализируем результирующий xml файл 17 17
Запуск процессов Запуск процессов Пример: запуск дочернего процесса в Пример: запуск дочернего процесса в процессе тестирования процессе тестирования Соединяем in/out/error потоки Соединяем in/out/error потоки Два плюса: Два плюса: Результаты видны в FitNesse Результаты видны в FitNesse Каскадное завершение процессов Каскадное завершение процессов 18 18
Deep FitNesse Deep FitNesse Что такое FitNesse? Что такое FitNesse? Как его можно применить? Как его можно применить? Какие подходы могут быть более Какие подходы могут быть более удобными? удобными? 19 19