SlideShare a Scribd company logo
Автотесты
Как перестать бояться и полюбить тестировать
Что будет?

 Зачем тестировать?
 Основные принципы
 Как тестировать?
 Что тестировать?
 Какие бывают тесты?
 Как не бросить их писать?
Зачем тестировать?
Регрессионная спираль смерти

              Трудозатраты в зависимости от количества фич
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
 0%
        Начальный этап    Больше фич           Еще больше фич   Коллапс

                              Ряд 3    Тестирование
Рефакторинг

Без автотестов          С автотестами
You Ain’t Gonna Need It
Быстрый запуск нужного кода
Основные принципы
              или
Каким должен быть правильный тест?
F.I.R.S.T.

 Fast
 Independent
 Repeatable
 Self-validating
 Timely
Автоматический запуск




    My code sure works, why bother?
Читаемость
Достоверность
Ложные срабатывания подрывают доверие к тестам
Как тестировать?
Red-Green-Refactor




Обычно весь цикл занимает не более 15 минут
Arrange-Act-Assert
Адвокат дьявола
Outside-In & Bottom-Up
Mocks & Stubs
  Stub                              Mock
 Не может провалить тест          Может провалить тест
                                   Проверяет, были ли вызваны SUT
 Реагирует заданным образом        методы замоканного объекта
  на внешние
                                   Используйте не более одного
  воздействия, предоставляя         мока для одного теста. Правда.
  данные или некий контекст для
  SUT
Что делать со старым кодом?

 Приоритезировать объекты, которые нужно покрыть тестами
 Написать интеграционные тесты для облегчения рефакторинга
 Провести рефакторинг для избавления от внешних зависимостей
 Написать юнит-тесты
Что тестировать?
Избегайте тестирования внутренней
структуры
Старайтесь тестировать фичи

 Именно покрытие автоматическими тестами фич, несущих ценность
  для бизнеса, позволяет избежать разрастания регрессионной спирали
  смерти
 Фичи медленнее изменяются со временем. Если требования к фиче
  все-таки изменились, хорошо начать с того, чтобы модифицировать
  тесты под новые требования, а уже потом – код, под новые
  (падающие!) тесты
 Тесты на фичу, написанные до еѐ реализации, позволяют успешно
  реализовать YAGNI-принцип и могут служить одним из критериев
  приемки
Какие бывают тесты?
Юнит тесты

 Быстрые
 System Under Test == Class Under Test
 Изменение тестируемого класса с большой вероятностью приведет к
  поломке тестов.
Приемочные тесты


         • Не используют (в идеале) фейки
         • Тестируют конкретные бизнес-фичи
         • Более устойчивы – изменения
         обычно не приводят к поломке тестов
UI тесты

 Фреймворки: Coded UI test project, Selenium
 Медленные
 Требуют специального окружения, где будет разворачиваться
  приложение
Как не бросить писать тесты?
Аргументы против тестов

 У нас нет времени, нужно писать код!
 Тесты только мешают – постоянно приходится переписывать!
Как же не бросить их писать?

 Принять наличие тестов, как одно из условий DoD
 Проводить Code Review тестов
 Делиться опытом внутри команды и между командами
Резюме

 Автоматические тесты ускоряют процесс разработки
 Чтобы тесты выполняли свои функции, они должны быть написаны
  вовремя, запускаться автоматически, быть читаемыми и надежными
 Невыполнение хотя бы одного из условий скорее всего приведет к
  скопищу бесполезных тестов, которые проще отключить, чем
  разбираться как они работают
 Делитесь опытом – вместе мы сильнее
Рекомендации

• The Art of Unit Testing – Roy Osherove
• Pluralsight – TDD course,
• Pluralsight – Outside-in TDD
Спасибо за внимание!

More Related Content

What's hot

Severity и Priority для неначинающих: очевидное и невероятное
Severity и Priority для неначинающих: очевидное и невероятноеSeverity и Priority для неначинающих: очевидное и невероятное
Severity и Priority для неначинающих: очевидное и невероятное
Deutsche Post
 
Правила хорошего тона для тестировщиков
Правила хорошего тона для тестировщиковПравила хорошего тона для тестировщиков
Правила хорошего тона для тестировщиков
Rina Uzhevko
 
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программистВладимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Dev_Party
 
Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...
Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...
Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...
FrontTalks Conference
 
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
Dakiry
 
андрей дмитриев взгляд со стороны разработчика
андрей дмитриев взгляд со стороны разработчикаандрей дмитриев взгляд со стороны разработчика
андрей дмитриев взгляд со стороны разработчикаAlexei Lupan
 
Sqa days2010 polazhenko_osstm
Sqa days2010 polazhenko_osstmSqa days2010 polazhenko_osstm
Sqa days2010 polazhenko_osstmAlexei Lupan
 
Mikhail Dovgiy, QA Stand Up: Episode 4
Mikhail Dovgiy, QA Stand Up: Episode 4Mikhail Dovgiy, QA Stand Up: Episode 4
Mikhail Dovgiy, QA Stand Up: Episode 4
Provectus
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QAFest
 
Скандалы, расследования, тестирование
Скандалы, расследования, тестированиеСкандалы, расследования, тестирование
Скандалы, расследования, тестирование
SQALab
 
Дмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестированиеДмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестированиеTatyana Pischasova
 
Юзабилити тестирование
Юзабилити тестированиеЮзабилити тестирование
Юзабилити тестирование
Oleg Karapuzov
 
Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...
Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...
Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...
GTestClub
 
Нагрузочное тестирование по-живому
Нагрузочное тестирование по-живомуНагрузочное тестирование по-живому
Нагрузочное тестирование по-живому
Anton Stepanenko
 
7 принципов эффективного тестирования
7 принципов эффективного тестирования7 принципов эффективного тестирования
7 принципов эффективного тестирования
ak-itconsulting.com
 
[Sqa days]risk driven testing
[Sqa days]risk driven testing[Sqa days]risk driven testing
[Sqa days]risk driven testingAlexei Lupan
 
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
SQALab
 
Подводные камни при построении процесса тестирования
Подводные камни при построении процесса тестированияПодводные камни при построении процесса тестирования
Подводные камни при построении процесса тестирования
SQALab
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1
sgdread
 

What's hot (19)

Severity и Priority для неначинающих: очевидное и невероятное
Severity и Priority для неначинающих: очевидное и невероятноеSeverity и Priority для неначинающих: очевидное и невероятное
Severity и Priority для неначинающих: очевидное и невероятное
 
Правила хорошего тона для тестировщиков
Правила хорошего тона для тестировщиковПравила хорошего тона для тестировщиков
Правила хорошего тона для тестировщиков
 
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программистВладимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
Владимир Варнавский, интернет-студия «33 Кита» — Идеальный программист
 
Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...
Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...
Тестирование веба без тестировщиков — успех или провал – Татьяна Рыженкова и ...
 
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
 
андрей дмитриев взгляд со стороны разработчика
андрей дмитриев взгляд со стороны разработчикаандрей дмитриев взгляд со стороны разработчика
андрей дмитриев взгляд со стороны разработчика
 
Sqa days2010 polazhenko_osstm
Sqa days2010 polazhenko_osstmSqa days2010 polazhenko_osstm
Sqa days2010 polazhenko_osstm
 
Mikhail Dovgiy, QA Stand Up: Episode 4
Mikhail Dovgiy, QA Stand Up: Episode 4Mikhail Dovgiy, QA Stand Up: Episode 4
Mikhail Dovgiy, QA Stand Up: Episode 4
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
 
Скандалы, расследования, тестирование
Скандалы, расследования, тестированиеСкандалы, расследования, тестирование
Скандалы, расследования, тестирование
 
Дмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестированиеДмитрий Пиликов - Юзабилити тестирование
Дмитрий Пиликов - Юзабилити тестирование
 
Юзабилити тестирование
Юзабилити тестированиеЮзабилити тестирование
Юзабилити тестирование
 
Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...
Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...
Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...
 
Нагрузочное тестирование по-живому
Нагрузочное тестирование по-живомуНагрузочное тестирование по-живому
Нагрузочное тестирование по-живому
 
7 принципов эффективного тестирования
7 принципов эффективного тестирования7 принципов эффективного тестирования
7 принципов эффективного тестирования
 
[Sqa days]risk driven testing
[Sqa days]risk driven testing[Sqa days]risk driven testing
[Sqa days]risk driven testing
 
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
 
Подводные камни при построении процесса тестирования
Подводные камни при построении процесса тестированияПодводные камни при построении процесса тестирования
Подводные камни при построении процесса тестирования
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1
 

Similar to Автотесты и образ мышления

Unit Testing
Unit TestingUnit Testing
Unit Testing
Dima Denisenko
 
Юнит тестирование, Александр Прукс, 30 Марта 2014
Юнит тестирование, Александр Прукс, 30 Марта 2014Юнит тестирование, Александр Прукс, 30 Марта 2014
Юнит тестирование, Александр Прукс, 30 Марта 2014
ForkConf
 
Как тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книгиКак тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книги
kosyakov
 
About Testers
About TestersAbout Testers
About Testersantsh
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Paul Stashevsky
 
тестирование
тестированиетестирование
тестированиеYandex
 
SoapUI one key to all doors
SoapUI one key to all doorsSoapUI one key to all doors
SoapUI one key to all doors
Yegor Maksymchuk
 
Unit tests
Unit testsUnit tests
Unit tests
Pavel Tsukanov
 
Sef Streluk Agile
Sef Streluk AgileSef Streluk Agile
Sef Streluk Agilesef2009
 
Постановка процесса тестирования в Agile
Постановка процесса тестирования в AgileПостановка процесса тестирования в Agile
Постановка процесса тестирования в Agile
SQALab
 
лившиц владимир - независимое тестирование миф
лившиц владимир - независимое тестирование мифлившиц владимир - независимое тестирование миф
лившиц владимир - независимое тестирование миф
Magneta AI
 
CodeFest 2010. Емелина Т. — Trial-and-error: как мы начинали тестировать
CodeFest 2010. Емелина Т. — Trial-and-error: как мы начинали тестироватьCodeFest 2010. Емелина Т. — Trial-and-error: как мы начинали тестировать
CodeFest 2010. Емелина Т. — Trial-and-error: как мы начинали тестироватьCodeFest
 
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSРоман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Provectus
 
больше тестов, хороших и разных! часть 1
больше тестов, хороших и разных! часть 1больше тестов, хороших и разных! часть 1
больше тестов, хороших и разных! часть 1
Фарида Абдуллина
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: ТестированиеYandex
 
Иван Гришаев «Тонкости тестирования» (Python Meetup)
Иван Гришаев  «Тонкости тестирования» (Python Meetup)Иван Гришаев  «Тонкости тестирования» (Python Meetup)
Иван Гришаев «Тонкости тестирования» (Python Meetup)
DataArt
 
Олексій Брошков "Мистецтво Дослідницького Тестування"
Олексій Брошков "Мистецтво Дослідницького Тестування"Олексій Брошков "Мистецтво Дослідницького Тестування"
Олексій Брошков "Мистецтво Дослідницького Тестування"
Dakiry
 
IntroductionPrinciples
IntroductionPrinciplesIntroductionPrinciples
IntroductionPrinciplesQA Guards
 
Стратегия тестирования крупного проекта в условиях Agile разработки v2
Стратегия тестирования крупного проекта в условиях Agile разработки v2Стратегия тестирования крупного проекта в условиях Agile разработки v2
Стратегия тестирования крупного проекта в условиях Agile разработки v2
Magneta AI
 
Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Yandex
 

Similar to Автотесты и образ мышления (20)

Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Юнит тестирование, Александр Прукс, 30 Марта 2014
Юнит тестирование, Александр Прукс, 30 Марта 2014Юнит тестирование, Александр Прукс, 30 Марта 2014
Юнит тестирование, Александр Прукс, 30 Марта 2014
 
Как тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книгиКак тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книги
 
About Testers
About TestersAbout Testers
About Testers
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)
 
тестирование
тестированиетестирование
тестирование
 
SoapUI one key to all doors
SoapUI one key to all doorsSoapUI one key to all doors
SoapUI one key to all doors
 
Unit tests
Unit testsUnit tests
Unit tests
 
Sef Streluk Agile
Sef Streluk AgileSef Streluk Agile
Sef Streluk Agile
 
Постановка процесса тестирования в Agile
Постановка процесса тестирования в AgileПостановка процесса тестирования в Agile
Постановка процесса тестирования в Agile
 
лившиц владимир - независимое тестирование миф
лившиц владимир - независимое тестирование мифлившиц владимир - независимое тестирование миф
лившиц владимир - независимое тестирование миф
 
CodeFest 2010. Емелина Т. — Trial-and-error: как мы начинали тестировать
CodeFest 2010. Емелина Т. — Trial-and-error: как мы начинали тестироватьCodeFest 2010. Емелина Т. — Trial-and-error: как мы начинали тестировать
CodeFest 2010. Емелина Т. — Trial-and-error: как мы начинали тестировать
 
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSРоман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
 
больше тестов, хороших и разных! часть 1
больше тестов, хороших и разных! часть 1больше тестов, хороших и разных! часть 1
больше тестов, хороших и разных! часть 1
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: Тестирование
 
Иван Гришаев «Тонкости тестирования» (Python Meetup)
Иван Гришаев  «Тонкости тестирования» (Python Meetup)Иван Гришаев  «Тонкости тестирования» (Python Meetup)
Иван Гришаев «Тонкости тестирования» (Python Meetup)
 
Олексій Брошков "Мистецтво Дослідницького Тестування"
Олексій Брошков "Мистецтво Дослідницького Тестування"Олексій Брошков "Мистецтво Дослідницького Тестування"
Олексій Брошков "Мистецтво Дослідницького Тестування"
 
IntroductionPrinciples
IntroductionPrinciplesIntroductionPrinciples
IntroductionPrinciples
 
Стратегия тестирования крупного проекта в условиях Agile разработки v2
Стратегия тестирования крупного проекта в условиях Agile разработки v2Стратегия тестирования крупного проекта в условиях Agile разработки v2
Стратегия тестирования крупного проекта в условиях Agile разработки v2
 
Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»
 

Автотесты и образ мышления