Introduction into Test Driven Development
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Introduction into Test Driven Development

  • 268 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
268
On Slideshare
268
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 1Ignite20131TDDРазработка через тестированиеДяченко Иван
  • 2. 2Ignite20132The problemGoodCheap Fast
  • 3. 3Ignite20133Экстремальноепрограммирование (XP)Разработка черезтестирование (TDD)Agile Manifesto в 2001году.Кент Бек
  • 4. 4Ignite20134Extreme Programming PracticesWholeTeamSmallReleasesPlanningGameCustomerTestsCodingStandardSustainablePaceCollectiveOwnershipContinuousIntegrationMetaphorTest-DrivenDevelopmentSimpleDesignRefactoringPairProgramming
  • 5. 5Ignite20135Extreme Programming PracticesWholeTeamSmallReleasesPlanningGameCustomerTestsCodingStandardSustainablePaceCollectiveOwnershipContinuousIntegrationMetaphorTest-DrivenDevelopmentSimpleDesignRefactoringPairProgramming
  • 6. 6Ignite20136TDD«Чистый код, который работает»
  • 7. 7Ignite20137Мифы TDDUnit tests == TDDTDD == 100% coverageTDD == время * 2TDD == серебряная пуля
  • 8. 8Ignite20138Два простых правила TDDУдаляем дублированиеПишем новый код только тогда, когдаавтоматический код не сработал21
  • 9. 9Ignite20139Мантра TDD – “red, green, refactor”
  • 10. 10Ignite201310
  • 11. 11Ignite201311Почему Чак не пишет тесты ?- Сразу пишет идельный код- У Чака идеальная память- Работает один- Рефакторинг без проблем
  • 12. 12Ignite201312Почему стоит применять TDD?Одобрен выдающимися специалистамиTDD придуман и одобрен коллективнымразумомПрименяется уже далеко не первый год321
  • 13. 13Ignite201313Что такое тестирование?Тестирование – способ обеспечениякачества продукта
  • 14. 14Ignite201314Что такое тестирование?С технической точки зрения, тестирование заключается в:§  Выполнении приложения на некотором множествеисходных данных§  Сверке получаемых результатов с заранее известными(эталонными) с целью установить соответствиеразличных свойств и характеристик приложениязаказанным свойствам
  • 15. 15Ignite201315Что такое тестирование?§  Тестирование является одной из основных фазразработки программного продукта (наряду сДизайном приложения и Разработкой кода)§  Оно характеризуется достаточно большим вкладом всуммарную трудоемкость разработки продукта
  • 16. 16Ignite201316Качество ПОЗаинтересованными сторонами являются:§  Заказчик продукта§  Спонсор§  Конечный пользователь§  Разработчики§  Тестировщики продукта§  Инженеры поддержки§  Сотрудники отделов маркетинга, обученияи продаж
  • 17. 17Ignite201317Качество ПОТаким образом, постановка задачи обеспечениякачества продукта выливается в задачи:§  Определения заинтересованных лиц§  Их критериев качества§  Нахождения оптимального решения,удовлетворяющего этим критериям
  • 18. 18Ignite201318Уровни качества ПОГотовностькProductionХорошайдизайнКачествоЧистый код
  • 19. 19Ignite201319Уровни тестирования§  Cистемное тестирование, в ходе которого тестируетсясистема в целом§  Интеграционное тестирование, в ходе котороготестируются группы взаимодействующих модулей икомпонент системы§  Модульное тестирование, в ходе которого тестируютсяотдельные компоненты
  • 20. 20Ignite201320Системное тестированиеОсновной задачей системного тестированияявляется проверка как функциональных, так инефункциональных требований в системе в целом
  • 21. 21Ignite201321Системное тестированиеВ ходе системного тестирования выявляются следующие дефекты:§  Неверное использование ресурсов системы§  Непредусмотренные комбинации данных пользовательского уровня§  Несовместимость с окружением§  Непредусмотренные сценарии использования§  Отсутствующая или неверная функциональность§  Неудобство использования и т.д.
  • 22. 22Ignite201322Интеграционное тестированиеИнтеграционное тестирование предназначено для проверки связимежду компонентами, а также взаимодействия с различнымичастями системы (операционной системой, оборудованием либосвязи между различными системами)
  • 23. 23Ignite201323Интеграционное тестированиеИнтеграционное тестирование так же может проводиться наразличных уровнях:§  Компонентный: проверяется взаимодействие междукомпонентами системы после проведения компонентного(модульного) тестирования§  Системный: проверяется взаимодействие между разнымисистемами после проведения системного тестирования
  • 24. 24Ignite201324Компонентное илиМодульное тестированиеМодульное тестирование проверяет функциональность и ищетдефекты в частях приложения, которые доступны и могут бытьпротестированы по отдельности (модули программ, объекты,классы, функции и т.д.)
  • 25. 25Ignite201325Почему TDD? Потому что:Во многих проектах:§  Тестирование запланировано позжеразработкиНедостаточно времени / бюджета§  Короткий период тестирования§  Ручное тестирование исключается
  • 26. 26Ignite201326Эффективность автоматизацииОценка распределения трудоемкости между фазами созданияпрограммного продукта: 40%-20%-40%
  • 27. 27Ignite201327Эффективность автоматизации§  Следовательно, наибольший эффект в снижениитрудоемкости может быть получен прежде всего нафазах Design и Testing§  А значит и основные вложения в автоматизацию илигенерацию кода следует осуществлять, прежде всего, наэтих фазах
  • 28. 28Ignite201328Unit Testing§  Облегчает работу программиста, позволяя маленькимишажками реализовывать большой функционал. Игарантирует работоспособность на каждом шаге§  Вынуждает проектировать красивый дизайн проекта,который в дальнейшем легче использовать§  Есть гарантия, что покрытый тестами код - работает!§  Рефакторинг становится почти безболезненным.
  • 29. 29Ignite201329TDD – это о дизайне!
  • 30. 30Ignite201330Влияние хорошего дизайна
  • 31. 31Ignite201331Почему автоматизированныетесты?
  • 32. 32Ignite201332Риски ручного тестирования
  • 33. 33Ignite201333Почему Test First?
  • 34. 34Ignite201334Почему Test First?
  • 35. 35Ignite201335Итеративный процессAddTestWatchTest FailWriteCodeRunTestsRefactor
  • 36. 36Ignite201336
  • 37. 37Ignite201337Вопросы ?