47
Спасение утопающих Покрываем тестами взрослый Ruby on Rails проект 1

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

  • Upload
    ontico

  • View
    1.014

  • Download
    1

Embed Size (px)

Citation preview

Спасение утопающих Покрываем тестами взрослый Ruby on Rails проект

1

Николай Шебанов@killthekitten

Gistflow

2

3

Зачем нужны тесты?

• Безопасные релизы

4

Зачем нужны тесты?

• Безопасные релизы• Безопасный рефакторинг

5

Зачем нужны тесты?

• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка

6

7

8

Почему тестов нет?

• «Есть задачи поважнее»

9

Почему тестов нет?

• «Есть задачи поважнее»

• Мешают на стадии прототипа

10

Рост приложения

0

12,5

25

37,5

50

0 1 2 3 4 5

Новые фичи

Релизы

Разработка с тестамиРазработка без тестов

11

Почему тестов нет?

• «Есть задачи поважнее»

• Мешают на стадии прототипа• Команда не имеет опыта тестирования

12

Зачем нужны тесты?

• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка

13

Зачем нужны тесты?

• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка

14

Зачем нужны тесты?

• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка

15

Зачем нужны тесты?

• Безопасные релизы• Безопасный рефакторинг• Предсказуемая разработка

16

17

18

19

20

Нужно писать тесты

21

Работа над ошибками

22

Работа над ошибками

• Программист может ошибаться

23

Работа над ошибками

• Программист может ошибаться• Тесты - часть задачи

24

Работа над ошибками

• Программист может ошибаться• Тесты - часть задачи

• Долго пишет тот, кто не умеет

25

Работа над ошибками

• Программист может ошибаться• Тесты - часть задачи

• Долго пишет тот, кто не умеет• «Потомдопишу» Driven Development

26

Работа над ошибками

• Программист может ошибаться• Тесты - часть задачи

• Долго пишет тот, кто не умеет• «Потомдопишу» Driven Development

• Нужно менять воркфлоу

27

Фигакс, фигакс и в продакшн

Requirement

Research & Development

Production

28

Делаем по науке

Requirement

Research & Red-Green Cycle

Code Review & CI Server

Production

29

Делаем по науке

Requirement

Research & Red-Green Cycle

Code Review & CI Server

Production

30

Делаем по науке

Requirement

Research & Red-Green Cycle

Code Review & CI Server

Production

31

Средняя температура по больнице

32

0

20

40

60

80

Junior Senior Senior Teamlead

Уровень

, lvl

Программисты

Средняя температура по больнице

33

0

20

40

60

80

Junior Senior Senior Teamlead

Уровень

, lvl

Программисты

Средняя температура по больнице

34

Средняя температура по больнице

35

Серебряной пули нетПокрываем тестами баги, новый код, рефакторинг

36

Что тестировать

•Request Specs

37

Что тестировать

•Request Specs• Model Specs

• Controller Specs

• Helper Specs

38

Приоритеты

• Читаемые• Edge-кейсы

• Быстрые

39

Что нужно уметь

• Mock + Stub

• let/set, синтаксический сахар RSpec

• FactoryGirl

40

Инструментарий• factory_girl_rails

• rspec-rails

• capybara & capybara-webkit

• rr

• simplecov

• shoulda

• webmock

• guard

• zeus/spin/spring

• guard-rspec

• terminal-notifier-guard

41

SimpleCov

42

43

Fast Sync

• codeschool.com/courses/rails-testing-for-zombies

• codeschool.com/courses/testing-with-rspec

• betterspecs.org (issues/20)

• betterspecs.org/#resources

44

Займемся списыванием

• github.com/rails/rails

• github.com/gitlabhq/gitlabhq

• github.com/infews/keydown

• github.com/spree/spree

• github.com/errbit/errbit

• Любой большой опенсорc

45

ToDo List

• Осознаем проблему

• Меняем базовый воркфлоу

• Посвящаем спринт тестам

• Синхронизируем знания

• Ни коммита без тестов

46

Николай Шебанов@killthekitten

Gistflow

Спасибо!

Вопросы?

47