Test-driven development (Anton Dmitriyev)

51
Automated Software Testing by ANTStorm Friday, 10 September 2010

Transcript of Test-driven development (Anton Dmitriyev)

Page 1: Test-driven development (Anton Dmitriyev)

Automated Software Testingby ANTStorm

Friday, 10 September 2010

Page 2: Test-driven development (Anton Dmitriyev)

Что сегодня за день?

Friday, 10 September 2010

Page 3: Test-driven development (Anton Dmitriyev)

Friday, 10 September 2010

Page 4: Test-driven development (Anton Dmitriyev)

9 сентября 1945 года, учеными Гарвардского университета, официально был зарегистрирован первый в истории баг.

Ученые Гарвардского университета, тестировавшие вычислительную машину Mark II Aiken Relay Calculator, нашли мотылька, застрявшего между контактами электромеханического реле.Проделанная работа требовала описания, и слово было найдено — «debugging» (дословно: избавление от насекомого) — так и ныне называется процесс выявления и устранения багов — причин неправильной работы компьютера.Извлеченное насекомое было вклеено в техдневник, с сопроводительной надписью: «First actual case of bug being found» (первый обнаруженный баг), и в дальнейшем передано в музей вычислительной техники.Этот забавный факт положил начало использованию слова баг в качестве ошибки.

Friday, 10 September 2010

Page 5: Test-driven development (Anton Dmitriyev)

Добрый день,меня зовут Антон и я занимаюсь тестированием софта уже 3 года...

Friday, 10 September 2010

Page 6: Test-driven development (Anton Dmitriyev)

Хмммм...Разработчик?Тестированием?3 года?Выпей йаду!

Friday, 10 September 2010

Page 7: Test-driven development (Anton Dmitriyev)

Īstie vīri softu netestē!

Friday, 10 September 2010

Page 8: Test-driven development (Anton Dmitriyev)

Зачем оно нужно?

Friday, 10 September 2010

Page 9: Test-driven development (Anton Dmitriyev)

Зачем?

улучшить разработку

облегчить жизнь

избавиться от множества проблем

значительно улучшить качество кода

Friday, 10 September 2010

Page 10: Test-driven development (Anton Dmitriyev)

Классическая проблема

Friday, 10 September 2010

Page 11: Test-driven development (Anton Dmitriyev)

Мы можем сделать этот проэкт:

быстро

качественно

дёшего

Friday, 10 September 2010

Page 12: Test-driven development (Anton Dmitriyev)

Выбирите любые два пункта...

быстро

качественно

дёшего

Friday, 10 September 2010

Page 13: Test-driven development (Anton Dmitriyev)

А ведь хочется всё сразу...

Friday, 10 September 2010

Page 14: Test-driven development (Anton Dmitriyev)

Тестирование позволяет нам сделать любой проэкт

немного быстрее

немного качественнее

немного дешевле

Friday, 10 September 2010

Page 15: Test-driven development (Anton Dmitriyev)

Быстрее

Friday, 10 September 2010

Page 16: Test-driven development (Anton Dmitriyev)

Время, необходимое для исправления ошибки на разных стадиях проэкта

0

250

500

750

1000

Проэктирование Разработка Бэта Продукция

Friday, 10 September 2010

Page 17: Test-driven development (Anton Dmitriyev)

Качественнее

Friday, 10 September 2010

Page 18: Test-driven development (Anton Dmitriyev)

меньше потенциальных ошибок

более красивый, переиспользуемый код

весомый аргумент для клиента...

Friday, 10 September 2010

Page 19: Test-driven development (Anton Dmitriyev)

Дешевле

Friday, 10 September 2010

Page 20: Test-driven development (Anton Dmitriyev)

Чё? Серьёзно?

Friday, 10 September 2010

Page 21: Test-driven development (Anton Dmitriyev)

Стоимость исправления ошибки на разных стадиях проэкта

0

250

500

750

1000

Проэктирование Разработка Бэта Продукция

Friday, 10 September 2010

Page 22: Test-driven development (Anton Dmitriyev)

И что же это за зверь?

Friday, 10 September 2010

Page 23: Test-driven development (Anton Dmitriyev)

TDD

Friday, 10 September 2010

Page 24: Test-driven development (Anton Dmitriyev)

ТДД? ЁПРСТ?

Friday, 10 September 2010

Page 25: Test-driven development (Anton Dmitriyev)

Test Driven Development

Friday, 10 September 2010

Page 26: Test-driven development (Anton Dmitriyev)

Разработка, оринтированная на тестирование

Friday, 10 September 2010

Page 27: Test-driven development (Anton Dmitriyev)

Разработка, оринтированная на тестированиечто-то типо того...

Friday, 10 September 2010

Page 28: Test-driven development (Anton Dmitriyev)

Тестирование

Планирование

Реализация

Тестирование

Friday, 10 September 2010

Page 29: Test-driven development (Anton Dmitriyev)

TDD

Планирование

Тестирование

Реализация

Friday, 10 September 2010

Page 30: Test-driven development (Anton Dmitriyev)

What?

Friday, 10 September 2010

Page 31: Test-driven development (Anton Dmitriyev)

Точнее...Планирование

Тестирование

Реализация

Тестирование

Friday, 10 September 2010

Page 32: Test-driven development (Anton Dmitriyev)

Ещё точнее...Планирование

Тестирование

Реализация

Тестирование

Friday, 10 September 2010

Page 33: Test-driven development (Anton Dmitriyev)

И в цвете...Планирование

Тестирование

Реализация

Тестирование

Friday, 10 September 2010

Page 34: Test-driven development (Anton Dmitriyev)

Как это происходит?

Планирование: придумываем функционал, который надо реализовать

Тестирование: пишем тест, проверяющий нашу задумку

Реализация: она и в Африке...

Тестирование: тест должен успешно выполняться

Friday, 10 September 2010

Page 35: Test-driven development (Anton Dmitriyev)

В чём фокус?

новый функционал реализуется до момента выполнения теста

ни строчкой больше

после этого принимаемся за рефакторинг

Friday, 10 September 2010

Page 36: Test-driven development (Anton Dmitriyev)

Red-Green-Refactor concept

Red RefactorGreen

Friday, 10 September 2010

Page 37: Test-driven development (Anton Dmitriyev)

BDD

Friday, 10 September 2010

Page 38: Test-driven development (Anton Dmitriyev)

Behavior Driven Development

Friday, 10 September 2010

Page 39: Test-driven development (Anton Dmitriyev)

Тоже самое, что и TDD. Но...

пишем не тесты, а спецификацию

тестируем не строки кода, а поведение

в результате получаем бонус - спецификацию

Friday, 10 September 2010

Page 40: Test-driven development (Anton Dmitriyev)

Friday, 10 September 2010

Page 41: Test-driven development (Anton Dmitriyev)

Чтобы тестирование было эффективным, его нужно автоматизировать

Friday, 10 September 2010

Page 42: Test-driven development (Anton Dmitriyev)

DEMO

Friday, 10 September 2010

Page 43: Test-driven development (Anton Dmitriyev)

Что же нам дают тесты, кроме потраченного времени на их написание?

:)

Friday, 10 September 2010

Page 44: Test-driven development (Anton Dmitriyev)

Бонусы

уверенность в том, что всё работает так, как было запланированно

уверенность в том, что никто случайно не сломает то, что мы написали

уверенность в том, что мы не сломаем то, что писал кто-то другой

спецификация, позволяющая новым участникам проэкта быстро в него вникнуть

Friday, 10 September 2010

Page 45: Test-driven development (Anton Dmitriyev)

Тестирование UI

Friday, 10 September 2010

Page 46: Test-driven development (Anton Dmitriyev)

Берём 10 тестировщиков...

Friday, 10 September 2010

Page 47: Test-driven development (Anton Dmitriyev)

И лишаем их работы...

:)

Friday, 10 September 2010

Page 48: Test-driven development (Anton Dmitriyev)

Selenium

Friday, 10 September 2010

Page 49: Test-driven development (Anton Dmitriyev)

Selenium

позволяет имитировать работу человека за компьютером

просто и удобный интерфейс

позволяет тестировать UI

в том числе и AJAX

Friday, 10 September 2010

Page 50: Test-driven development (Anton Dmitriyev)

И напоследок...

Friday, 10 September 2010

Page 51: Test-driven development (Anton Dmitriyev)

Хорошая практика в командах

не разделять код на “твой”, “мой” и “того чувака в красной майке”

увидел проблему - почини её

сломал чей-то тест - почини

Friday, 10 September 2010