Когда код «убивает», или зачем нам тестировать наши...

69
Когда код «убивает», или зачем нам тестировать наши продукты Стрекаловский Олег «R-Style Softlab» Конференция « WebDev», Вологда 4 апреля 2015 г.

Upload: -

Post on 06-Aug-2015

166 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Когда код «убивает», или зачем  нам тестировать наши продукты

Когда код «убивает», или зачем нам тестировать наши продукты

Стрекаловский Олег

«R-Style Softlab»

Конференция «WebDev», Вологда

4 апреля 2015 г.

Page 2: Когда код «убивает», или зачем  нам тестировать наши продукты

2

Как мы обычно делаем ЭТО

Page 3: Когда код «убивает», или зачем  нам тестировать наши продукты

3

•Сформировали требования

Как мы обычно делаем ЭТО

Page 4: Когда код «убивает», или зачем  нам тестировать наши продукты

4

•Сформировали требования

•Побежали пилить

Как мы обычно делаем ЭТО

Page 5: Когда код «убивает», или зачем  нам тестировать наши продукты

5

•Сформировали требования

•Побежали пилить

Как мы обычно делаем ЭТО

•Пилим, пилим, пилим, …

Page 6: Когда код «убивает», или зачем  нам тестировать наши продукты

6

•Сформировали требования

•Побежали пилить

Как мы обычно делаем ЭТО

•Пилим, пилим, пилим, …

•Наступает период ПСИ

Page 7: Когда код «убивает», или зачем  нам тестировать наши продукты

7

•Сформировали требования

•Побежали пилить

Как мы обычно делаем ЭТО

•Пилим, пилим, пилим, …

•Наступает период ПСИ

•Конечно, внезапно обнаруживаем проблемы и недоработки в ТЗ!

Page 8: Когда код «убивает», или зачем  нам тестировать наши продукты

8

•Сформировали требования

•Побежали пилить

Как мы обычно делаем ЭТО

•Пилим, пилим, пилим, …

•Наступает период ПСИ

•Конечно, внезапно обнаруживаем проблемы и недоработки в ТЗ!

Welcome To The Hell ;-)

Page 9: Когда код «убивает», или зачем  нам тестировать наши продукты
Page 10: Когда код «убивает», или зачем  нам тестировать наши продукты

Менеджеры

10

Page 11: Когда код «убивает», или зачем  нам тестировать наши продукты

Тем временем у программистов …

11

Page 12: Когда код «убивает», или зачем  нам тестировать наши продукты

Continues цейтнот у ручных тестировщиков

12

Page 13: Когда код «убивает», или зачем  нам тестировать наши продукты

Внедренцев становится жалко

13

Page 14: Когда код «убивает», или зачем  нам тестировать наши продукты

Наш «счастливый» клиент

14

Page 15: Когда код «убивает», или зачем  нам тестировать наши продукты
Page 16: Когда код «убивает», или зачем  нам тестировать наши продукты

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

16

Page 17: Когда код «убивает», или зачем  нам тестировать наши продукты

«Я опасаюсь, что мы потерпелипоражение в борьбе со сложностью систем»

Эдсгер ВибеДейкстра

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

17

Page 18: Когда код «убивает», или зачем  нам тестировать наши продукты

Почему вы не заботитесь о качестве вашего продукта?

18

Page 19: Когда код «убивает», или зачем  нам тестировать наши продукты

Почему вы не заботитесь о качестве вашего продукта?

19

Page 20: Когда код «убивает», или зачем  нам тестировать наши продукты

«В нашем продукте нет ошибок!»

20

Page 21: Когда код «убивает», или зачем  нам тестировать наши продукты

Работаете с железом?

21

Page 22: Когда код «убивает», или зачем  нам тестировать наши продукты

Управляете объектами в real-time?

22

Page 23: Когда код «убивает», или зачем  нам тестировать наши продукты

Защищаете приватные данные?

23

Page 24: Когда код «убивает», или зачем  нам тестировать наши продукты

Автоматизируете предприятия?

24

Page 25: Когда код «убивает», или зачем  нам тестировать наши продукты

Работаете с диском пользователя?

25

Page 26: Когда код «убивает», или зачем  нам тестировать наши продукты

Работаете с диском пользователя?

26

Page 27: Когда код «убивает», или зачем  нам тестировать наши продукты

Создаете приложения с UI?

27

Page 28: Когда код «убивает», или зачем  нам тестировать наши продукты

28

Game Dev?

Page 29: Когда код «убивает», или зачем  нам тестировать наши продукты

29

Game Dev?

Page 30: Когда код «убивает», или зачем  нам тестировать наши продукты

«Мы их всему научим, а они потом уйдут.»

30

Page 31: Когда код «убивает», или зачем  нам тестировать наши продукты

«Мы не знаем, как этим эффективно заниматься.»

31

Page 32: Когда код «убивает», или зачем  нам тестировать наши продукты

Путь к созданию надёжного ПО

32

Page 33: Когда код «убивает», или зачем  нам тестировать наши продукты

33

•Осознание наличия проблемы

Путь к созданию надёжного ПО

Page 34: Когда код «убивает», или зачем  нам тестировать наши продукты

34

•Осознание наличия проблемы

•Изучение опыта индустрии

Путь к созданию надёжного ПО

Page 35: Когда код «убивает», или зачем  нам тестировать наши продукты

35

Тематические каналы YouTube

Page 36: Когда код «убивает», или зачем  нам тестировать наши продукты

36

Конференции

Page 37: Когда код «убивает», или зачем  нам тестировать наши продукты

37

Книги

Page 38: Когда код «убивает», или зачем  нам тестировать наши продукты

38

•Осознание наличия проблемы

•Внедрение «Best Practices»:•Code Review•Автоматизация тестирования•Парное программирование

•Изучение опыта индустрии

Путь к созданию надёжного ПО

Page 39: Когда код «убивает», или зачем  нам тестировать наши продукты

39

•Осознание наличия проблемы

•Внедрение «Best Practices»:•Code Review•Автоматизация тестирования•Парное программирование

•Изучение опыта индустрии

•Изменение подхода к написанию кода?!

Путь к созданию надёжного ПО

Page 40: Когда код «убивает», или зачем  нам тестировать наши продукты

40

TDDALL CODE IS GUILTY

UNTIL PROVEN INNOCENT

Test Driven Development

Page 41: Когда код «убивает», или зачем  нам тестировать наши продукты

TDD за 1 минуту

41

Page 42: Когда код «убивает», или зачем  нам тестировать наши продукты

TDD дает кучу плюшек!

42

Page 43: Когда код «убивает», или зачем  нам тестировать наши продукты

TDD дает кучу плюшек!

43

•Быстро находим ошибки

Page 44: Когда код «убивает», или зачем  нам тестировать наши продукты

TDD дает кучу плюшек!

44

•Не боимся рефакторить код

•Быстро находим ошибки

Page 45: Когда код «убивает», или зачем  нам тестировать наши продукты

TDD дает кучу плюшек!

45

•Не боимся рефакторить код

•Актуальная документация

•Быстро находим ошибки

Page 46: Когда код «убивает», или зачем  нам тестировать наши продукты

TDD дает кучу плюшек!

46

•Не боимся рефакторить код

•Актуальная документация

•Быстро находим ошибки

•Меньше over-engineering’a

Page 47: Когда код «убивает», или зачем  нам тестировать наши продукты

TDD дает кучу плюшек!

47

•Не боимся рефакторить код

•Актуальная документация

•Быстро находим ошибки

•Меньше over-engineering’a

•Более удобный для клиента API

Page 48: Когда код «убивает», или зачем  нам тестировать наши продукты

TDD дает кучу плюшек!

48

•Не боимся рефакторить код

•Актуальная документация

•Быстро находим ошибки

•Меньше over-engineering’a

•Более удобный для клиента API

•Интрига при каждом запуске тестов

Page 49: Когда код «убивает», или зачем  нам тестировать наши продукты

TDD – это хорошо, а с Agile – ещё лучше!

49

AgileTDD

Page 50: Когда код «убивает», или зачем  нам тестировать наши продукты

Что нам всем даст тестирование

50

Page 51: Когда код «убивает», или зачем  нам тестировать наши продукты

Что нам всем даст тестирование

51

•Хороший код - программистам

Page 52: Когда код «убивает», или зачем  нам тестировать наши продукты

Что нам всем даст тестирование

52

•Много автотестов - тестировщикам

•Хороший код - программистам

Page 53: Когда код «убивает», или зачем  нам тестировать наши продукты

Что нам всем даст тестирование

53

•Много автотестов - тестировщикам

•Хороший код - программистам

•Нормальную жизнь - внедренцам

Page 54: Когда код «убивает», или зачем  нам тестировать наши продукты

Что нам всем даст тестирование

54

•Много автотестов - тестировщикам

•Хороший код - программистам

•Нормальную жизнь - внедренцам

•Уверенность - менеджерам

Page 55: Когда код «убивает», или зачем  нам тестировать наши продукты

Что нам всем даст тестирование

55

•Много автотестов - тестировщикам

•Хороший код - программистам

•Нормальную жизнь - внедренцам

•Уверенность - менеджерам

•Непоправимое счастье – клиентам!

Page 56: Когда код «убивает», или зачем  нам тестировать наши продукты

Выводы

Page 57: Когда код «убивает», или зачем  нам тестировать наши продукты

Приложения ХардварФреймворки

Библиотеки Middleware

UI

57

Page 58: Когда код «убивает», или зачем  нам тестировать наши продукты

58

Профессиональный подход

Page 59: Когда код «убивает», или зачем  нам тестировать наши продукты

59

1. Найдите для своего языка, фреймворкаинструменты тестирования (unit-тестирование, функциональное и т.д.).

Профессиональный подход

Page 60: Когда код «убивает», или зачем  нам тестировать наши продукты

60

1. Найдите для своего языка, фреймворкаинструменты тестирования (unit-тестирование, функциональное и т.д.).

1. Если готовых нет – плохо искали напишите сами, заопенсорсите!

Профессиональный подход

Page 61: Когда код «убивает», или зачем  нам тестировать наши продукты

61

1. Найдите для своего языка, фреймворкаинструменты тестирования (unit-тестирование, функциональное и т.д.).

1. Если готовых нет – плохо искали напишите сами, заопенсорсите!

2. Если готовых нет и не можете их написать –не используйте этот язык или фреймворк!

Профессиональный подход

Page 62: Когда код «убивает», или зачем  нам тестировать наши продукты

62

1. Найдите для своего языка, фреймворкаинструменты тестирования (unit-тестирование, функциональное и т.д.).

1. Если готовых нет – плохо искали напишите сами, заопенсорсите!

2. Если готовых нет и не можете их написать –не используйте этот язык или фреймворк!

2. Пишите тесты для вашего приложения.

Профессиональный подход

Page 63: Когда код «убивает», или зачем  нам тестировать наши продукты

63

1. Найдите для своего языка, фреймворкаинструменты тестирования (unit-тестирование, функциональное и т.д.).

1. Если готовых нет – плохо искали напишите сами, заопенсорсите!

2. Если готовых нет и не можете их написать –не используйте этот язык или фреймворк!

2. Пишите тесты для вашего приложения.3. Автоматизируйте их прогон для получения быстрой

обратной связи.

Профессиональный подход

Page 64: Когда код «убивает», или зачем  нам тестировать наши продукты

64

1. Найдите для своего языка, фреймворкаинструменты тестирования (unit-тестирование, функциональное и т.д.).

1. Если готовых нет – плохо искали напишите сами, заопенсорсите!

2. Если готовых нет и не можете их написать –не используйте этот язык или фреймворк!

2. Пишите тесты для вашего приложения.3. Автоматизируйте их прогон для получения быстрой

обратной связи.4. ???

Профессиональный подход

Page 65: Когда код «убивает», или зачем  нам тестировать наши продукты

65

1. Найдите для своего языка, фреймворкаинструменты тестирования (unit-тестирование, функциональное и т.д.).

1. Если готовых нет – плохо искали напишите сами, заопенсорсите!

2. Если готовых нет и не можете их написать –не используйте этот язык или фреймворк!

2. Пишите тесты для вашего приложения.3. Автоматизируйте их прогон для получения быстрой

обратной связи.4. ???5. PROFIT !

Профессиональный подход

Page 66: Когда код «убивает», или зачем  нам тестировать наши продукты

Тестирование – вот наш путь!

66

Page 67: Когда код «убивает», или зачем  нам тестировать наши продукты

Начни сам и убеди начать других!

67

Page 68: Когда код «убивает», или зачем  нам тестировать наши продукты

Личное обращение

Дяденьки и тетеньки, вы вместо очередного %bullshit%.js,лучше попишите тестов для вашего продукта, пожалуйста, а?

68

Page 69: Когда код «убивает», или зачем  нам тестировать наши продукты

Спасибо за внимание!Вопросы?

[email protected]

slideshare.net/ssuser3c5f11

olegstrekalovsky.blogspot.ru

o.strekalovsky