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
Deep FitNesse