SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
1
Ignite2013
1
TDD
Разработка через тестирование
Дяченко Иван
2
Ignite2013
2
The problem
Good
Cheap Fast
3
Ignite2013
3
Экстремальное
программирование (XP)
Разработка через
тестирование (TDD)
Agile Manifesto в 2001
году.
Кент Бек
4
Ignite2013
4
Extreme Programming Practices
Whole
Team
Small
Releases
Planning
Game
Customer
Tests
Coding
Standard
Sustainable
Pace
Collective
Ownership
Continuous
Integration
Metaphor
Test-Driven
Development
Simple
Design
Refactoring
Pair
Programming
5
Ignite2013
5
Extreme Programming Practices
Whole
Team
Small
Releases
Planning
Game
Customer
Tests
Coding
Standard
Sustainable
Pace
Collective
Ownership
Continuous
Integration
Metaphor
Test-Driven
Development
Simple
Design
Refactoring
Pair
Programming
6
Ignite2013
6
TDD
«Чистый код, который работает»
7
Ignite2013
7
Мифы TDD
Unit tests == TDD
TDD == 100% coverage
TDD == время * 2
TDD == серебряная пуля
8
Ignite2013
8
Два простых правила TDD
Удаляем дублирование
Пишем новый код только тогда, когда
автоматический код не сработал
2
1
9
Ignite2013
9
Мантра TDD – “red, green, refactor”
10
Ignite2013
10
11
Ignite2013
11
Почему Чак не пишет тесты ?
- Сразу пишет идельный код
- У Чака идеальная память
- Работает один
- Рефакторинг без проблем
12
Ignite2013
12
Почему стоит применять TDD?
Одобрен выдающимися специалистами
TDD придуман и одобрен коллективным
разумом
Применяется уже далеко не первый год
3
2
1
13
Ignite2013
13
Что такое тестирование?
Тестирование – способ обеспечения
качества продукта
14
Ignite2013
14
Что такое тестирование?
С технической точки зрения, тестирование заключается в:
§  Выполнении приложения на некотором множестве
исходных данных
§  Сверке получаемых результатов с заранее известными
(эталонными) с целью установить соответствие
различных свойств и характеристик приложения
заказанным свойствам
15
Ignite2013
15
Что такое тестирование?
§  Тестирование является одной из основных фаз
разработки программного продукта (наряду с
Дизайном приложения и Разработкой кода)
§  Оно характеризуется достаточно большим вкладом в
суммарную трудоемкость разработки продукта
16
Ignite2013
16
Качество ПО
Заинтересованными сторонами являются:
§  Заказчик продукта
§  Спонсор
§  Конечный пользователь
§  Разработчики
§  Тестировщики продукта
§  Инженеры поддержки
§  Сотрудники отделов маркетинга, обучения
и продаж
17
Ignite2013
17
Качество ПО
Таким образом, постановка задачи обеспечения
качества продукта выливается в задачи:
§  Определения заинтересованных лиц
§  Их критериев качества
§  Нахождения оптимального решения,
удовлетворяющего этим критериям
18
Ignite2013
18
Уровни качества ПО
Готовность
к
Production
Хорошай
дизайн
Качество
Чистый код
19
Ignite2013
19
Уровни тестирования
§  Cистемное тестирование, в ходе которого тестируется
система в целом
§  Интеграционное тестирование, в ходе которого
тестируются группы взаимодействующих модулей и
компонент системы
§  Модульное тестирование, в ходе которого тестируются
отдельные компоненты
20
Ignite2013
20
Системное тестирование
Основной задачей системного тестирования
является проверка как функциональных, так и
нефункциональных требований в системе в целом
21
Ignite2013
21
Системное тестирование
В ходе системного тестирования выявляются следующие дефекты:
§  Неверное использование ресурсов системы
§  Непредусмотренные комбинации данных пользовательского уровня
§  Несовместимость с окружением
§  Непредусмотренные сценарии использования
§  Отсутствующая или неверная функциональность
§  Неудобство использования и т.д.
22
Ignite2013
22
Интеграционное тестирование
Интеграционное тестирование предназначено для проверки связи
между компонентами, а также взаимодействия с различными
частями системы (операционной системой, оборудованием либо
связи между различными системами)
23
Ignite2013
23
Интеграционное тестирование
Интеграционное тестирование так же может проводиться на
различных уровнях:
§  Компонентный: проверяется взаимодействие между
компонентами системы после проведения компонентного
(модульного) тестирования
§  Системный: проверяется взаимодействие между разными
системами после проведения системного тестирования
24
Ignite2013
24
Компонентное или
Модульное тестирование
Модульное тестирование проверяет функциональность и ищет
дефекты в частях приложения, которые доступны и могут быть
протестированы по отдельности (модули программ, объекты,
классы, функции и т.д.)
25
Ignite2013
25
Почему TDD? Потому что:
Во многих проектах:
§  Тестирование запланировано позже
разработки
Недостаточно времени / бюджета
§  Короткий период тестирования
§  Ручное тестирование исключается
26
Ignite2013
26
Эффективность автоматизации
Оценка распределения трудоемкости между фазами создания
программного продукта: 40%-20%-40%
27
Ignite2013
27
Эффективность автоматизации
§  Следовательно, наибольший эффект в снижении
трудоемкости может быть получен прежде всего на
фазах Design и Testing
§  А значит и основные вложения в автоматизацию или
генерацию кода следует осуществлять, прежде всего, на
этих фазах
28
Ignite2013
28
Unit Testing
§  Облегчает работу программиста, позволяя маленькими
шажками реализовывать большой функционал. И
гарантирует работоспособность на каждом шаге
§  Вынуждает проектировать красивый дизайн проекта,
который в дальнейшем легче использовать
§  Есть гарантия, что покрытый тестами код - работает!
§  Рефакторинг становится почти безболезненным.
29
Ignite2013
29
TDD – это о дизайне!
30
Ignite2013
30
Влияние хорошего дизайна
31
Ignite2013
31
Почему автоматизированные
тесты?
32
Ignite2013
32
Риски ручного тестирования
33
Ignite2013
33
Почему Test First?
34
Ignite2013
34
Почему Test First?
35
Ignite2013
35
Итеративный процесс
Add
Test
Watch
Test Fail
Write
Code
Run
Tests
Refactor
36
Ignite2013
36
37
Ignite2013
37
Вопросы ?

Contenu connexe

Tendances

ClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClub QA Kostroma
 
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочинеAlexei Lupan
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQAFest
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QAFest
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest
 
Great functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and ThucydidesGreat functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and ThucydidesMikalai Alimenkou
 
Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Alexei Lupan
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестированияIT61
 
Lyanguzov preso sqadays8
Lyanguzov preso sqadays8Lyanguzov preso sqadays8
Lyanguzov preso sqadays8Alexei Lupan
 
Держим дизайн системы под контролем, используя изолированное юнит-тестировани...
Держим дизайн системы под контролем, используя изолированное юнит-тестировани...Держим дизайн системы под контролем, используя изолированное юнит-тестировани...
Держим дизайн системы под контролем, используя изолированное юнит-тестировани...Ontico
 
Как заслужить доверие заказчика при передаче проекта новой команде тестирования?
Как заслужить доверие заказчика при передаче проекта новой команде тестирования?Как заслужить доверие заказчика при передаче проекта новой команде тестирования?
Как заслужить доверие заказчика при передаче проекта новой команде тестирования?SQALab
 
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQAFest
 
Тестирование инсталляторов
Тестирование инсталляторовТестирование инсталляторов
Тестирование инсталляторовSQALab
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQAFest
 
некоторые правила управления проектами. часть I
некоторые правила управления проектами. часть Iнекоторые правила управления проектами. часть I
некоторые правила управления проектами. часть Iprigarov
 
Гибкое тестирование
Гибкое тестированиеГибкое тестирование
Гибкое тестированиеRina Uzhevko
 
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQAFest
 
Автоматизация тестирования как сервис
Автоматизация тестирования как сервисАвтоматизация тестирования как сервис
Автоматизация тестирования как сервисautomated-testing.info
 
TestLink
TestLinkTestLink
TestLinkISsoft
 
Continuous Integration для тестировщиков
Continuous Integration для тестировщиковContinuous Integration для тестировщиков
Continuous Integration для тестировщиковUladzimir Kryvenka
 

Tendances (20)

ClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDD
 
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
 
Great functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and ThucydidesGreat functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and Thucydides
 
Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестирования
 
Lyanguzov preso sqadays8
Lyanguzov preso sqadays8Lyanguzov preso sqadays8
Lyanguzov preso sqadays8
 
Держим дизайн системы под контролем, используя изолированное юнит-тестировани...
Держим дизайн системы под контролем, используя изолированное юнит-тестировани...Держим дизайн системы под контролем, используя изолированное юнит-тестировани...
Держим дизайн системы под контролем, используя изолированное юнит-тестировани...
 
Как заслужить доверие заказчика при передаче проекта новой команде тестирования?
Как заслужить доверие заказчика при передаче проекта новой команде тестирования?Как заслужить доверие заказчика при передаче проекта новой команде тестирования?
Как заслужить доверие заказчика при передаче проекта новой команде тестирования?
 
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
 
Тестирование инсталляторов
Тестирование инсталляторовТестирование инсталляторов
Тестирование инсталляторов
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
 
некоторые правила управления проектами. часть I
некоторые правила управления проектами. часть Iнекоторые правила управления проектами. часть I
некоторые правила управления проектами. часть I
 
Гибкое тестирование
Гибкое тестированиеГибкое тестирование
Гибкое тестирование
 
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
 
Автоматизация тестирования как сервис
Автоматизация тестирования как сервисАвтоматизация тестирования как сервис
Автоматизация тестирования как сервис
 
TestLink
TestLinkTestLink
TestLink
 
Continuous Integration для тестировщиков
Continuous Integration для тестировщиковContinuous Integration для тестировщиков
Continuous Integration для тестировщиков
 

En vedette

Stephen Hawking Theory Of Everything
Stephen  Hawking    Theory Of  EverythingStephen  Hawking    Theory Of  Everything
Stephen Hawking Theory Of EverythingDhiraj Upadhyay
 
Acceptance Test Driven Development для Adobe Flex с применением Cucumber и Me...
Acceptance Test Driven Development для Adobe Flex с применением Cucumber и Me...Acceptance Test Driven Development для Adobe Flex с применением Cucumber и Me...
Acceptance Test Driven Development для Adobe Flex с применением Cucumber и Me...Ivan Dyachenko
 

En vedette (7)

Tdd Оbjective-С
Tdd Оbjective-СTdd Оbjective-С
Tdd Оbjective-С
 
SEO
SEOSEO
SEO
 
iPad
iPadiPad
iPad
 
YouTube
YouTubeYouTube
YouTube
 
Stephen Hawking Theory Of Everything
Stephen  Hawking    Theory Of  EverythingStephen  Hawking    Theory Of  Everything
Stephen Hawking Theory Of Everything
 
Acceptance Test Driven Development для Adobe Flex с применением Cucumber и Me...
Acceptance Test Driven Development для Adobe Flex с применением Cucumber и Me...Acceptance Test Driven Development для Adobe Flex с применением Cucumber и Me...
Acceptance Test Driven Development для Adobe Flex с применением Cucumber и Me...
 
Сайт Кутюрье
Сайт КутюрьеСайт Кутюрье
Сайт Кутюрье
 

Similaire à Introduction into Test Driven Development

Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Technopark
 
тестирование
тестированиетестирование
тестированиеYandex
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileKairat Yussupov
 
Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Yandex
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSРоман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSProvectus
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Technopark
 
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...sqadays8
 
Image-based automation
Image-based automationImage-based automation
Image-based automationVitali Shulha
 
Модульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NETМодульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NETAlexander Byndyu
 
Clean architecture on Android
Clean architecture on AndroidClean architecture on Android
Clean architecture on AndroidGDG Odessa
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...Sergey Ponomarev
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаIgor Lyubin
 
Автоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовАвтоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовSergey Borisov
 
Image-based automation
Image-based automationImage-based automation
Image-based automationVitali Shulha
 
Автоматизация с помощью скриншотов. Как научить скрипт видеть графический инт...
Автоматизация с помощью скриншотов. Как научить скрипт видеть графический инт...Автоматизация с помощью скриншотов. Как научить скрипт видеть графический инт...
Автоматизация с помощью скриншотов. Как научить скрипт видеть графический инт...SQALab
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПОseleznev_stas
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеSQALab
 
Software testing in practice
Software testing in practiceSoftware testing in practice
Software testing in practicenikolay_vasiliev
 

Similaire à Introduction into Test Driven Development (20)

Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5
 
тестирование
тестированиетестирование
тестирование
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-Agile
 
Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»Марина Широчкина — «Тестирование»
Марина Широчкина — «Тестирование»
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSРоман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
Анатолий Любомиров -- Тестирование пользовательского интерфейса – как это дел...
 
Image-based automation
Image-based automationImage-based automation
Image-based automation
 
Модульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NETМодульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NET
 
Clean architecture on Android
Clean architecture on AndroidClean architecture on Android
Clean architecture on Android
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Автоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовАвтоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотов
 
Image-based automation
Image-based automationImage-based automation
Image-based automation
 
Автоматизация с помощью скриншотов. Как научить скрипт видеть графический инт...
Автоматизация с помощью скриншотов. Как научить скрипт видеть графический инт...Автоматизация с помощью скриншотов. Как научить скрипт видеть графический инт...
Автоматизация с помощью скриншотов. Как научить скрипт видеть графический инт...
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПО
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
 
Software testing in practice
Software testing in practiceSoftware testing in practice
Software testing in practice
 

Introduction into Test Driven Development