BDD. Gherkin+Ruby или автотесты для гуманитариев
Transcript of BDD. Gherkin+Ruby или автотесты для гуманитариев
BDD.
Gherkin+Ruby или автотесты для гуманитариев
Андрей Мясников
Tester
TM
QA Lead
Итак…
TDD
• Правильный и эффективный TDD - это когда разработка ведется полностью через тесты, один тест за раз, при этом активно применяется рефакторинг.
• Первоначальная реализация рабочего кода обычно является нарочно упрощенной, конечный дизайн кода получается последовательно и только исходя из появления новых тестов.
• Тесты могут писаться даже под ещё не реализованный функционал
• Мы не проверяем как будет работать что-то
• Проверяем что мы ожидаем от работы нового функционала
Должен_уметь_умножать_целые числа
Должен_уметь_умножать_дробные_числа
BDD
Что же для меня…
Gherkin, baby!
• Gherkin - человеко-читаемый язык для описания поведения системы, который использует отступы для задания структуры документа, (пробелы или символы табуляции)
Feature файл
test.feature
Именно с него и начинается мышление и только он наш
самый главный камень преткновения и помощник.
Калькулятор
Feature: Adding
Scenario: Add two numbers
Given the input "2+2"
When the calculator is run
Then the output should be "4"
Powershell
Маааамочки!
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
Feature файл
test.feature Именно в нем любой
гуманитарий сможет
написать вам тест!
Нет, это не бублик
Файловая структура
• features/
• features/adding.feature
• features/step_definitions/
• features/step_definitions/calculator_steps.rb
Feature + step definitions
Feature + step definitions
Массивы 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 |
Launch!
• via Cucumber
• Да, можно.
• Логи выводятся на экран
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
В начале было слово. И слово это было…
Сенсей был найден
Моя мотивация
• Я смогу
• Это моя работа
• Витя, привет!
Название кандарой
1
• Не начинайте учить, если не видите никаких способов применения полученных знаний
2
• Практика, практика и ещё раз практика!
3
S.M.A.R.T.
• Specific (Конкретный)
• Measurable (Измеримый)
• Attainable, Achievable (Достижимый)
• Relevant (Актуальный)
• Time-bound (Ограниченный во времени)
4
• Для каждой задачи нужен свой инструмент.
• И здорово, когда ты им овладеваешь.
5
• Every goal is achievable*
*exception: Unicorns
ИТОГО
• Не начинайте учить язык, если не видите никаких способов применения полученных знаний.
• Практика, практика и ещё раз практика
• S.M.A.R.T.
• Для каждой задачи нужен свой инструмент
• Every goal is achievable
Литература
• The Cucumber book
– Matt Wynne and Aslak Hellesoy
• Дмитро Жарий - #BDD
• Instant Cucumber BDD How-to
– Wayne Ye
• Clean Code
– Robert C. Martin
Андрей Мясников
Всегда рад общаться с интересными людьми.
С удовольствием отвечу на ваши вопросы
Skype: flegma86
Профессиональный блог:
lazy-tester.blogspot.com