58
1 Scalable eCommerce Platform Solutions Я занимаюсь Fitnesse`ом каждый день Александр Мартюшов

Я занимаюсь Fitnesse`ом каждый день

  • Upload
    sqalab

  • View
    524

  • Download
    4

Embed Size (px)

DESCRIPTION

Доклад Александра Мартюшова, SQA Days-13, 26-27 апреля 2013, www.sqadays.com

Citation preview

Page 1: Я занимаюсь Fitnesse`ом каждый день

1

Scalable eCommerce Platform Solutions

Я занимаюсь Fitnesse`ом каждый день

Александр Мартюшов

Page 2: Я занимаюсь Fitnesse`ом каждый день

2

План доклада

Обзор фреймворка Тестирование с Fitnesse Пример QA процесс vs Fitnesse Итоги

Page 3: Я занимаюсь Fitnesse`ом каждый день

3

ВведениеДве задачи, которые существенно влияют на итоговое качество ПО:

Взаимодействие команды в процессе

обсуждения требований ПО

Автоматическое тестирование того, что с

точки зрения бизнеса ПО работает правильно

Page 4: Я занимаюсь Fitnesse`ом каждый день

4

ВведениеДве задачи, которые существенно влияют на итоговое качество ПО:

Взаимодействие команды в процессе

обсуждения требований ПО

Автоматическое тестирование того, что с

точки зрения бизнеса ПО работает правильно

Когда эти задачи выполняются плохо, то:

• приложение может делать не то, что от него ждут

Page 5: Я занимаюсь Fitnesse`ом каждый день

5

ВведениеДве задачи, которые существенно влияют на итоговое качество ПО:

Взаимодействие команды в процессе

обсуждения требований ПО

Автоматическое тестирование того, что с

точки зрения бизнеса ПО работает правильно

Когда эти задачи выполняются плохо, то:

• приложение может делать не то, что от него ждут• плохое качество приложения

Page 6: Я занимаюсь Fitnesse`ом каждый день

6

ВведениеДве задачи, которые существенно влияют на итоговое качество ПО:

Взаимодействие команды в процессе

обсуждения требований ПО

Автоматическое тестирование того, что с

точки зрения бизнеса ПО работает правильно

Когда эти задачи выполняются плохо, то:

• приложение может делать не то, что от него ждут• плохое качество приложения• сложности при разрастании приложения

Page 7: Я занимаюсь Fitnesse`ом каждый день

7

ВведениеДве задачи, которые существенно влияют на итоговое качество ПО:

Взаимодействие команды в процессе

обсуждения требований ПО

Автоматическое тестирование того, что с

точки зрения бизнеса ПО работает правильно

Справиться с этими задачами помогает

Page 8: Я занимаюсь Fitnesse`ом каждый день

8

запуск Fitnesseзапуск Fitnesse: > java -jar fitnesse.jar

http://localhost/FrontPage

Page 9: Я занимаюсь Fitnesse`ом каждый день

9

Fitnesse – это таблицы

Fitnesse таблица

Page 10: Я занимаюсь Fitnesse`ом каждый день

10

Fitnesse – это таблицы

Fitnesse таблица

В чем преимущества табличного подхода?

Page 11: Я занимаюсь Fitnesse`ом каждый день

11

Взаимодействие

заказчик

программист

тестировщик

Page 12: Я занимаюсь Fitnesse`ом каждый день

12

Гибкость

ПРОДУКТ

ИЗМЕНЕНИЯ

Результаты

Fitnesse

тестов

Page 13: Я занимаюсь Fitnesse`ом каждый день

13

Баланс

Сбалансированная система – быстрая адаптация к требованиям.

Page 14: Я занимаюсь Fitnesse`ом каждый день

14

таблицы Fitnesse

Принцип работы Fitnesse

Fixture 1 Fixture 2TEST CORE

System under test

FIT server

Fixture

extendsextends

Page 15: Я занимаюсь Fitnesse`ом каждый день

15

Пример

протестировать метод sqrt

Page 16: Я занимаюсь Fitnesse`ом каждый день

16

Диаграмма

таблицы Fitnesse

Fixture 1 Fixture 2TEST CORE

System under test

FIT server

Fixture

extendsextends

Page 17: Я занимаюсь Fitnesse`ом каждый день

17

Диаграмма

Fixture 1 Fixture 2TEST CORE

System under test

FIT server

Fixture

extendsextends

Page 18: Я занимаюсь Fitnesse`ом каждый день

18

Диаграмма

Fixture 1 Fixture 2TEST CORE

System under test

extendsextends

Page 19: Я занимаюсь Fitnesse`ом каждый день

19

Диаграмма

Fixture 1 Fixture 2

System under test

extendsextends

Page 20: Я занимаюсь Fitnesse`ом каждый день

20

Диаграмма

System under test

extends

Double sqrtOfIs(Double i)

Page 21: Я занимаюсь Fitnesse`ом каждый день

21

Диаграмма

extends

Page 22: Я занимаюсь Fitnesse`ом каждый день

22

Fixture

связываемся с FIT

связываемся с тестируемой системой

Page 23: Я занимаюсь Fitnesse`ом каждый день

23

Таблица

Page 24: Я занимаюсь Fitnesse`ом каждый день

24

ТаблицаFIT создает объект моей fixture

MyFixture:

Page 25: Я занимаюсь Fitnesse`ом каждый день

25

Таблица

MyFixture:

method: sqrtOfIs

Page 26: Я занимаюсь Fitnesse`ом каждый день

26

Таблица

MyFixture:

Параметр метода: Double

= > 4 парсится как Double

Page 27: Я занимаюсь Fitnesse`ом каждый день

27

Таблица

MyFixture:

Возвращаемое значение: Double

= > 2 парсится как Double

Page 28: Я занимаюсь Fitnesse`ом каждый день

28

Таблица

Ожидаемый результат: 2

Page 29: Я занимаюсь Fitnesse`ом каждый день

29

Таблица

Ожидаемый результат: 2

Результат выполнения метода для i=4:

Page 30: Я занимаюсь Fitnesse`ом каждый день

30

Таблица

Ожидаемый результат: 2

Результат выполнения метода для i=4:

СРАВНЕНИЕ, используя check

Page 31: Я занимаюсь Fitnesse`ом каждый день

31

Запуск тестаКнопка для запуска теста

asserts in test:

sqrtOfIs(4) == 2 ?sqrtOfIs(9) == 3 ?

sqrtOfIs(16) == 5 ?

Проверка с помощью check

Page 32: Я занимаюсь Fitnesse`ом каждый день

32

Редактирование теста

- Save: сохранение версии теста в .zip- Можно откатиться до определенной версии

Page 33: Я занимаюсь Fitnesse`ом каждый день

33

Exceptions в таблице

•Изменение Assertions•Fitnesse разделяет Wrong & Exception

Page 34: Я занимаюсь Fitnesse`ом каждый день

34

История запусков теста

Можно перейти к любому test run и посмотреть отчет

Page 35: Я занимаюсь Fitnesse`ом каждый день

35

Настройки страниц Fitnesse

теги страницы

Page 36: Я занимаюсь Fitnesse`ом каждый день

36

PageHeader страницаpageType = Suite

pageType = Normal

pageType = Test

Page 37: Я занимаюсь Fitnesse`ом каждый день

37

PageHeader страницаpageType = Suite

pageType = Normal

pageType = Test

Page 38: Я занимаюсь Fitnesse`ом каждый день

38

PageHeader страница

Page 39: Я занимаюсь Fitnesse`ом каждый день

39

“SuitePage”, pageType = Suite

SetUp, TearDown

Страница с таблицами, pageType = Test

Страница с таблицами, pageType = Test

“SetUp”, pageType = Normal

“TearDown”, pageType = Normal

Page 40: Я занимаюсь Fitnesse`ом каждый день

40

Запуск такого набора тестов “SuitePage”, pageType = Suite

Страница с таблицами, pageType = Test

Страница с таблицами, pageType = Test

“SetUp”, pageType = Normal

“TearDown”, pageType = Normal

“SetUp”, pageType = Normal

“TearDown”, pageType = Normal

Page 41: Я занимаюсь Fitnesse`ом каждый день

41

“SuitePage”, pageType = Suite

SuiteSetUp, SuiteTearDown

Страница с таблицами, pageType = Test

Страница с таблицами, pageType = Test

“SuiteSetUp”, pageType = Normal

“SuiteTearDown”, pageType = Normal

Page 42: Я занимаюсь Fitnesse`ом каждый день

42

Запуск такого набора тестов“SuitePage”, pageType = Suite

Страница с таблицами, pageType = Test

Страница с таблицами, pageType = Test

“SuiteSetUp”, pageType = Normal

“SuiteTearDown”, pageType = Normal

Page 43: Я занимаюсь Fitnesse`ом каждый день

43

QA процесс

Как Fitnesse может

помочь в организации

QA процесса?

Page 44: Я занимаюсь Fitnesse`ом каждый день

44

QA процесс

• группировка страниц в наборы

Page 45: Я занимаюсь Fitnesse`ом каждый день

45

QA процесс

• группировка страниц в наборы• тегирование: страница ↔ ТЗ

Page 46: Я занимаюсь Fitnesse`ом каждый день

46

QA процесс

• группировка страниц в наборы• тегирование: страница ↔ ТЗ • тегирование: страница ↔ дефект

Page 47: Я занимаюсь Fitnesse`ом каждый день

47

QA процесс

• группировка страниц в наборы• тегирование: страница ↔ ТЗ • тегирование: страница ↔ дефект• тегирование: страница ↔ ответственный

NOTE. Тегировать можно как страницу так и набор страниц.

Page 48: Я занимаюсь Fitnesse`ом каждый день

48

Запуск определенных тестов

http://localhost:8181/SuiteName?responder=suite&suiteFilter=forCi&excludeSuiteFilter=noRun&excludeSuiteFilter=failed

теги: forCi, noRun, failedточка входа: SuiteName

Page 49: Я занимаюсь Fitnesse`ом каждый день

49

Fitnesse vs CI

ContinuousIntegration

Page 50: Я занимаюсь Fitnesse`ом каждый день

50

Jenkins plugin

Job status: SUCCESS

Page 51: Я занимаюсь Fitnesse`ом каждый день

51

Jenkins plugin

Job status: UNSTABLE

Page 52: Я занимаюсь Fitnesse`ом каждый день

52

Выводы

• 10000 тестов в системе – полет нормальный

Page 53: Я занимаюсь Fitnesse`ом каждый день

53

Выводы

• 10000 тестов в системе – полет нормальный

• хорошая интеграция плагина jenkins

Page 54: Я занимаюсь Fitnesse`ом каждый день

54

Выводы

• 10000 тестов в системе – полет нормальный

• хорошая интеграция плагина jenkins

• низкий порог вхождения в систему

Page 55: Я занимаюсь Fitnesse`ом каждый день

55

Выводы

• 10000 тестов в системе – полет нормальный

• хорошая интеграция плагина jenkins

• низкий порог вхождения в систему

• удобный для работы инструмент

Page 56: Я занимаюсь Fitnesse`ом каждый день

56

Выводы

• 10000 тестов в системе – полет нормальный

• хорошая интеграция плагина jenkins

• низкий порог вхождения в систему

• удобный для работы инструмент

• возможность писать fixture не только на Java

(Ruby, .Net, Python, C)

Page 57: Я занимаюсь Fitnesse`ом каждый день

57

Выводы

• 10000 тестов в системе – полет нормальный

• хорошая интеграция плагина jenkins

• низкий порог вхождения в систему

• удобный для работы инструмент

• возможность писать fixture не только на Java

(Ruby, .Net, Python, C)

• возможность запускать из IDE

http://fitnesse.org/

Page 58: Я занимаюсь Fitnesse`ом каждый день

58

Вопросы

Спасибо!