bdd. gherkin+ruby или автотесты для гуманитариев

31
BDD. Gherkin+Ruby или автотесты для гуманитариев

Upload: sqalab

Post on 25-Jul-2015

212 views

Category:

Education


6 download

TRANSCRIPT

Page 1: BDD. Gherkin+Ruby или автотесты для гуманитариев

BDD.

Gherkin+Ruby или автотесты для гуманитариев

Page 2: BDD. Gherkin+Ruby или автотесты для гуманитариев

Андрей Мясников

Tester

TM

QA Lead

Page 3: BDD. Gherkin+Ruby или автотесты для гуманитариев

Итак…

Page 4: BDD. Gherkin+Ruby или автотесты для гуманитариев

TDD

• Правильный и эффективный TDD - это когда разработка ведется полностью через тесты, один тест за раз, при этом активно применяется рефакторинг.

• Первоначальная реализация рабочего кода обычно является нарочно упрощенной, конечный дизайн кода получается последовательно и только исходя из появления новых тестов.

Page 5: BDD. Gherkin+Ruby или автотесты для гуманитариев

• Тесты могут писаться даже под ещё не реализованный функционал

• Мы не проверяем как будет работать что-то

• Проверяем что мы ожидаем от работы нового функционала

Должен_уметь_умножать_целые числа

Должен_уметь_умножать_дробные_числа

BDD

Page 6: BDD. Gherkin+Ruby или автотесты для гуманитариев

Что же для меня…

Page 7: BDD. Gherkin+Ruby или автотесты для гуманитариев

Gherkin, baby!

• Gherkin - человеко-читаемый язык для описания поведения системы, который использует отступы для задания структуры документа, (пробелы или символы табуляции)

Page 8: BDD. Gherkin+Ruby или автотесты для гуманитариев

Feature файл

test.feature

Именно с него и начинается мышление и только он наш

самый главный камень преткновения и помощник.

Page 9: BDD. Gherkin+Ruby или автотесты для гуманитариев

Калькулятор

Feature: Adding

Scenario: Add two numbers

Given the input "2+2"

When the calculator is run

Then the output should be "4"

Page 10: BDD. Gherkin+Ruby или автотесты для гуманитариев

Powershell

Page 11: BDD. Gherkin+Ruby или автотесты для гуманитариев

Маааамочки!

Given /^the input "(.*?)"$/ do |arg1|

pending # express the regexp above with the code you wish you had

end

When /^the calculator is run$/ do

pending # express the regexp above with the code you wish you had

end

Then /^the output should be "(.*?)"$/ do |arg1|

pending # express the regexp above with the code you wish you had

end

Page 12: BDD. Gherkin+Ruby или автотесты для гуманитариев

Feature файл

test.feature Именно в нем любой

гуманитарий сможет

написать вам тест!

Page 13: BDD. Gherkin+Ruby или автотесты для гуманитариев

Нет, это не бублик

Page 14: BDD. Gherkin+Ruby или автотесты для гуманитариев

Файловая структура

• features/

• features/adding.feature

• features/step_definitions/

• features/step_definitions/calculator_steps.rb

Page 15: BDD. Gherkin+Ruby или автотесты для гуманитариев

Feature + step definitions

Page 16: BDD. Gherkin+Ruby или автотесты для гуманитариев

Feature + step definitions

Page 17: BDD. Gherkin+Ruby или автотесты для гуманитариев

Массивы Feature: Adding

Scenario Outline: Add two numbers

Given the input "<input>"

When the calculator is run

Then the output should be "<output>"

• Examples:

• | input | output |

• | 2+2 | 4 |

• | 98+1 | 99 |

Page 18: BDD. Gherkin+Ruby или автотесты для гуманитариев

Launch!

• via Cucumber

• Да, можно.

• Логи выводятся на экран

Page 19: BDD. Gherkin+Ruby или автотесты для гуманитариев

GDD

#Логирование

fname = 'http_adress_log' + Time.now.strftime('%Y%m%d%H%M%S') +'.txt'

logfile = File.open(fname, "w")

logfile.puts "Number of errors: " + err.to_s

logfile.puts "On arguments #{datas}"

logfile.close

Page 20: BDD. Gherkin+Ruby или автотесты для гуманитариев

В начале было слово. И слово это было…

Page 21: BDD. Gherkin+Ruby или автотесты для гуманитариев

Сенсей был найден

Page 22: BDD. Gherkin+Ruby или автотесты для гуманитариев

Моя мотивация

• Я смогу

• Это моя работа

• Витя, привет!

Page 23: BDD. Gherkin+Ruby или автотесты для гуманитариев

Название кандарой

Page 24: BDD. Gherkin+Ruby или автотесты для гуманитариев

1

• Не начинайте учить, если не видите никаких способов применения полученных знаний

Page 25: BDD. Gherkin+Ruby или автотесты для гуманитариев

2

• Практика, практика и ещё раз практика!

Page 26: BDD. Gherkin+Ruby или автотесты для гуманитариев

3

S.M.A.R.T.

• Specific (Конкретный)

• Measurable (Измеримый)

• Attainable, Achievable (Достижимый)

• Relevant (Актуальный)

• Time-bound (Ограниченный во времени)

Page 27: BDD. Gherkin+Ruby или автотесты для гуманитариев

4

• Для каждой задачи нужен свой инструмент.

• И здорово, когда ты им овладеваешь.

Page 28: BDD. Gherkin+Ruby или автотесты для гуманитариев

5

• Every goal is achievable*

*exception: Unicorns

Page 29: BDD. Gherkin+Ruby или автотесты для гуманитариев

ИТОГО

• Не начинайте учить язык, если не видите никаких способов применения полученных знаний.

• Практика, практика и ещё раз практика

• S.M.A.R.T.

• Для каждой задачи нужен свой инструмент

• Every goal is achievable

Page 30: BDD. Gherkin+Ruby или автотесты для гуманитариев

Литература

• The Cucumber book

– Matt Wynne and Aslak Hellesoy

• Дмитро Жарий - #BDD

• Instant Cucumber BDD How-to

– Wayne Ye

• Clean Code

– Robert C. Martin

Page 31: BDD. Gherkin+Ruby или автотесты для гуманитариев

Андрей Мясников

Всегда рад общаться с интересными людьми.

С удовольствием отвечу на ваши вопросы

Skype: flegma86

Профессиональный блог:

lazy-tester.blogspot.com