Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Спасение утопающихПокрываем тестами взрослый Ruby on Rails проект1
Николай Шебанов@killthekittenGistflow2
3
Зачем нужны тесты?• Безопасные релизы4
Зачем нужны тесты?• Безопасные релизы• Безопасный рефакторинг5
Зачем нужны тесты?• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка6
7
8
Почему тестов нет?• «Есть задачи поважнее»9
Почему тестов нет?• «Есть задачи поважнее»• Мешают на стадии прототипа10
Рост приложения012,52537,5500 1 2 3 4 5НовыефичиРелизыРазработка с тестамиРазработка без тестов11
Почему тестов нет?• «Есть задачи поважнее»• Мешают на стадии прототипа• Команда не имеет опыта тестирования12
Зачем нужны тесты?• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка13
Зачем нужны тесты?• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка14
Зачем нужны тесты?• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка15
Зачем нужны тесты?• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка16
17
18
19
20
Нужно писать тесты21
Работа над ошибками22
Работа над ошибками• Программист может ошибаться23
Работа над ошибками• Программист может ошибаться• Тесты - часть задачи24
Работа над ошибками• Программист может ошибаться• Тесты - часть задачи• Долго пишет тот, кто не умеет25
Работа над ошибками• Программист может ошибаться• Тесты - часть задачи• Долго пишет тот, кто не умеет• «Потомдопишу» Drive...
Работа над ошибками• Программист может ошибаться• Тесты - часть задачи• Долго пишет тот, кто не умеет• «Потомдопишу» Drive...
Фигакс, фигакс и в продакшнRequirementResearch & DevelopmentProduction28
Делаем по наукеRequirementResearch & Red-Green CycleCode Review & CI ServerProduction29
Делаем по наукеRequirementResearch & Red-Green CycleCode Review & CI ServerProduction30
Делаем по наукеRequirementResearch & Red-Green CycleCode Review & CI ServerProduction31
Средняя температура побольнице32
020406080Junior Senior Senior TeamleadУровень,lvlПрограммистыСредняя температура по больнице33
020406080Junior Senior Senior TeamleadУровень,lvlПрограммистыСредняя температура по больнице34
Средняя температура по больнице35
Серебряной пули нетПокрываем тестами баги, новый код, рефакторинг36
Что тестировать•Request Specs37
Что тестировать•Request Specs• Model Specs• Controller Specs• Helper Specs38
Приоритеты• Читаемые• Edge-кейсы• Быстрые39
Что нужно уметь• Mock + Stub• let/set, синтаксический сахар RSpec• FactoryGirl40
Инструментарий• factory_girl_rails• rspec-rails• capybara & capybara-webkit• rr• simplecov• shoulda• webmock• guard• zeus/...
SimpleCov42
43
Fast Sync• codeschool.com/courses/rails-testing-for-zombies• codeschool.com/courses/testing-with-rspec• betterspecs.org (i...
Займемся списыванием• github.com/rails/rails• github.com/gitlabhq/gitlabhq• github.com/infews/keydown• github.com/spree/sp...
ToDo List• Осознаем проблему• Меняем базовый воркфлоу• Посвящаем спринт тестам• Синхронизируем знания• Ни коммита без тест...
Николай Шебанов@killthekittenGistflowСпасибо!Вопросы?47
Upcoming SlideShare
Loading in …5
×

Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)

1,308 views

Published on

  • Be the first to comment

Покрываем тестами взрослый RoR проект / Николай Шебанов (Evrone)

  1. 1. Спасение утопающихПокрываем тестами взрослый Ruby on Rails проект1
  2. 2. Николай Шебанов@killthekittenGistflow2
  3. 3. 3
  4. 4. Зачем нужны тесты?• Безопасные релизы4
  5. 5. Зачем нужны тесты?• Безопасные релизы• Безопасный рефакторинг5
  6. 6. Зачем нужны тесты?• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка6
  7. 7. 7
  8. 8. 8
  9. 9. Почему тестов нет?• «Есть задачи поважнее»9
  10. 10. Почему тестов нет?• «Есть задачи поважнее»• Мешают на стадии прототипа10
  11. 11. Рост приложения012,52537,5500 1 2 3 4 5НовыефичиРелизыРазработка с тестамиРазработка без тестов11
  12. 12. Почему тестов нет?• «Есть задачи поважнее»• Мешают на стадии прототипа• Команда не имеет опыта тестирования12
  13. 13. Зачем нужны тесты?• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка13
  14. 14. Зачем нужны тесты?• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка14
  15. 15. Зачем нужны тесты?• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка15
  16. 16. Зачем нужны тесты?• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка16
  17. 17. 17
  18. 18. 18
  19. 19. 19
  20. 20. 20
  21. 21. Нужно писать тесты21
  22. 22. Работа над ошибками22
  23. 23. Работа над ошибками• Программист может ошибаться23
  24. 24. Работа над ошибками• Программист может ошибаться• Тесты - часть задачи24
  25. 25. Работа над ошибками• Программист может ошибаться• Тесты - часть задачи• Долго пишет тот, кто не умеет25
  26. 26. Работа над ошибками• Программист может ошибаться• Тесты - часть задачи• Долго пишет тот, кто не умеет• «Потомдопишу» Driven Development26
  27. 27. Работа над ошибками• Программист может ошибаться• Тесты - часть задачи• Долго пишет тот, кто не умеет• «Потомдопишу» Driven Development• Нужно менять воркфлоу27
  28. 28. Фигакс, фигакс и в продакшнRequirementResearch & DevelopmentProduction28
  29. 29. Делаем по наукеRequirementResearch & Red-Green CycleCode Review & CI ServerProduction29
  30. 30. Делаем по наукеRequirementResearch & Red-Green CycleCode Review & CI ServerProduction30
  31. 31. Делаем по наукеRequirementResearch & Red-Green CycleCode Review & CI ServerProduction31
  32. 32. Средняя температура побольнице32
  33. 33. 020406080Junior Senior Senior TeamleadУровень,lvlПрограммистыСредняя температура по больнице33
  34. 34. 020406080Junior Senior Senior TeamleadУровень,lvlПрограммистыСредняя температура по больнице34
  35. 35. Средняя температура по больнице35
  36. 36. Серебряной пули нетПокрываем тестами баги, новый код, рефакторинг36
  37. 37. Что тестировать•Request Specs37
  38. 38. Что тестировать•Request Specs• Model Specs• Controller Specs• Helper Specs38
  39. 39. Приоритеты• Читаемые• Edge-кейсы• Быстрые39
  40. 40. Что нужно уметь• Mock + Stub• let/set, синтаксический сахар RSpec• FactoryGirl40
  41. 41. Инструментарий• factory_girl_rails• rspec-rails• capybara & capybara-webkit• rr• simplecov• shoulda• webmock• guard• zeus/spin/spring• guard-rspec• terminal-notifier-guard41
  42. 42. SimpleCov42
  43. 43. 43
  44. 44. Fast Sync• codeschool.com/courses/rails-testing-for-zombies• codeschool.com/courses/testing-with-rspec• betterspecs.org (issues/20)• betterspecs.org/#resources44
  45. 45. Займемся списыванием• github.com/rails/rails• github.com/gitlabhq/gitlabhq• github.com/infews/keydown• github.com/spree/spree• github.com/errbit/errbit• Любой большой опенсорc45
  46. 46. ToDo List• Осознаем проблему• Меняем базовый воркфлоу• Посвящаем спринт тестам• Синхронизируем знания• Ни коммита без тестов46
  47. 47. Николай Шебанов@killthekittenGistflowСпасибо!Вопросы?47

×