Upload
sqalab
View
532
Download
4
Embed Size (px)
DESCRIPTION
Доклад Александра Мартюшова, SQA Days-13, 26-27 апреля 2013, www.sqadays.com
Citation preview
1
Scalable eCommerce Platform Solutions
Я занимаюсь Fitnesse`ом каждый день
Александр Мартюшов
2
План доклада
Обзор фреймворка Тестирование с Fitnesse Пример QA процесс vs Fitnesse Итоги
3
ВведениеДве задачи, которые существенно влияют на итоговое качество ПО:
Взаимодействие команды в процессе
обсуждения требований ПО
Автоматическое тестирование того, что с
точки зрения бизнеса ПО работает правильно
4
ВведениеДве задачи, которые существенно влияют на итоговое качество ПО:
Взаимодействие команды в процессе
обсуждения требований ПО
Автоматическое тестирование того, что с
точки зрения бизнеса ПО работает правильно
Когда эти задачи выполняются плохо, то:
• приложение может делать не то, что от него ждут
5
ВведениеДве задачи, которые существенно влияют на итоговое качество ПО:
Взаимодействие команды в процессе
обсуждения требований ПО
Автоматическое тестирование того, что с
точки зрения бизнеса ПО работает правильно
Когда эти задачи выполняются плохо, то:
• приложение может делать не то, что от него ждут• плохое качество приложения
6
ВведениеДве задачи, которые существенно влияют на итоговое качество ПО:
Взаимодействие команды в процессе
обсуждения требований ПО
Автоматическое тестирование того, что с
точки зрения бизнеса ПО работает правильно
Когда эти задачи выполняются плохо, то:
• приложение может делать не то, что от него ждут• плохое качество приложения• сложности при разрастании приложения
7
ВведениеДве задачи, которые существенно влияют на итоговое качество ПО:
Взаимодействие команды в процессе
обсуждения требований ПО
Автоматическое тестирование того, что с
точки зрения бизнеса ПО работает правильно
Справиться с этими задачами помогает
8
запуск Fitnesseзапуск Fitnesse: > java -jar fitnesse.jar
http://localhost/FrontPage
9
Fitnesse – это таблицы
Fitnesse таблица
10
Fitnesse – это таблицы
Fitnesse таблица
В чем преимущества табличного подхода?
11
Взаимодействие
заказчик
программист
тестировщик
12
Гибкость
ПРОДУКТ
ИЗМЕНЕНИЯ
Результаты
Fitnesse
тестов
13
Баланс
Сбалансированная система – быстрая адаптация к требованиям.
14
таблицы Fitnesse
Принцип работы Fitnesse
Fixture 1 Fixture 2TEST CORE
System under test
FIT server
Fixture
extendsextends
15
Пример
протестировать метод sqrt
16
Диаграмма
таблицы Fitnesse
Fixture 1 Fixture 2TEST CORE
System under test
FIT server
Fixture
extendsextends
17
Диаграмма
Fixture 1 Fixture 2TEST CORE
System under test
FIT server
Fixture
extendsextends
18
Диаграмма
Fixture 1 Fixture 2TEST CORE
System under test
extendsextends
19
Диаграмма
Fixture 1 Fixture 2
System under test
extendsextends
20
Диаграмма
System under test
extends
Double sqrtOfIs(Double i)
21
Диаграмма
extends
22
Fixture
связываемся с FIT
связываемся с тестируемой системой
23
Таблица
24
ТаблицаFIT создает объект моей fixture
MyFixture:
25
Таблица
MyFixture:
method: sqrtOfIs
26
Таблица
MyFixture:
Параметр метода: Double
= > 4 парсится как Double
27
Таблица
MyFixture:
Возвращаемое значение: Double
= > 2 парсится как Double
28
Таблица
Ожидаемый результат: 2
29
Таблица
Ожидаемый результат: 2
Результат выполнения метода для i=4:
30
Таблица
Ожидаемый результат: 2
Результат выполнения метода для i=4:
СРАВНЕНИЕ, используя check
31
Запуск тестаКнопка для запуска теста
asserts in test:
sqrtOfIs(4) == 2 ?sqrtOfIs(9) == 3 ?
sqrtOfIs(16) == 5 ?
Проверка с помощью check
32
Редактирование теста
- Save: сохранение версии теста в .zip- Можно откатиться до определенной версии
33
Exceptions в таблице
•Изменение Assertions•Fitnesse разделяет Wrong & Exception
34
История запусков теста
Можно перейти к любому test run и посмотреть отчет
35
Настройки страниц Fitnesse
теги страницы
36
PageHeader страницаpageType = Suite
pageType = Normal
pageType = Test
37
PageHeader страницаpageType = Suite
pageType = Normal
pageType = Test
38
PageHeader страница
39
“SuitePage”, pageType = Suite
SetUp, TearDown
Страница с таблицами, pageType = Test
Страница с таблицами, pageType = Test
“SetUp”, pageType = Normal
“TearDown”, pageType = Normal
40
Запуск такого набора тестов “SuitePage”, pageType = Suite
Страница с таблицами, pageType = Test
Страница с таблицами, pageType = Test
“SetUp”, pageType = Normal
“TearDown”, pageType = Normal
“SetUp”, pageType = Normal
“TearDown”, pageType = Normal
41
“SuitePage”, pageType = Suite
SuiteSetUp, SuiteTearDown
Страница с таблицами, pageType = Test
Страница с таблицами, pageType = Test
“SuiteSetUp”, pageType = Normal
“SuiteTearDown”, pageType = Normal
42
Запуск такого набора тестов“SuitePage”, pageType = Suite
Страница с таблицами, pageType = Test
Страница с таблицами, pageType = Test
“SuiteSetUp”, pageType = Normal
“SuiteTearDown”, pageType = Normal
43
QA процесс
Как Fitnesse может
помочь в организации
QA процесса?
44
QA процесс
• группировка страниц в наборы
45
QA процесс
• группировка страниц в наборы• тегирование: страница ↔ ТЗ
46
QA процесс
• группировка страниц в наборы• тегирование: страница ↔ ТЗ • тегирование: страница ↔ дефект
47
QA процесс
• группировка страниц в наборы• тегирование: страница ↔ ТЗ • тегирование: страница ↔ дефект• тегирование: страница ↔ ответственный
NOTE. Тегировать можно как страницу так и набор страниц.
48
Запуск определенных тестов
http://localhost:8181/SuiteName?responder=suite&suiteFilter=forCi&excludeSuiteFilter=noRun&excludeSuiteFilter=failed
теги: forCi, noRun, failedточка входа: SuiteName
49
Fitnesse vs CI
ContinuousIntegration
50
Jenkins plugin
Job status: SUCCESS
51
Jenkins plugin
Job status: UNSTABLE
52
Выводы
• 10000 тестов в системе – полет нормальный
53
Выводы
• 10000 тестов в системе – полет нормальный
• хорошая интеграция плагина jenkins
54
Выводы
• 10000 тестов в системе – полет нормальный
• хорошая интеграция плагина jenkins
• низкий порог вхождения в систему
55
Выводы
• 10000 тестов в системе – полет нормальный
• хорошая интеграция плагина jenkins
• низкий порог вхождения в систему
• удобный для работы инструмент
56
Выводы
• 10000 тестов в системе – полет нормальный
• хорошая интеграция плагина jenkins
• низкий порог вхождения в систему
• удобный для работы инструмент
• возможность писать fixture не только на Java
(Ruby, .Net, Python, C)
57
Выводы
• 10000 тестов в системе – полет нормальный
• хорошая интеграция плагина jenkins
• низкий порог вхождения в систему
• удобный для работы инструмент
• возможность писать fixture не только на Java
(Ruby, .Net, Python, C)
• возможность запускать из IDE
http://fitnesse.org/
58
Вопросы
Спасибо!