SlideShare a Scribd company logo
1 of 26
Download to read offline
TDD в web
разработке
 (PHP+JS)
Введение
Метрики
Метрики в unit тестировании
Результаты тестов
Метрики в unit тестировании
Покрытие кода тестами
Инструменты

Frameworks:
 ● PHPUnit;
 ● SimpleTest;
 ● Jasmine;
 ● QUnit;
Инструменты

Запуск тестов:
 ● console;
 ● browser;
    ○ selenium;
    ○ jsTestDriver;
 ● nodejs;
 ● phantomjs;
Инструменты

IDE:
 ● Netbeans;
 ● Eclipse;
 ● PHPStorm/WebIDE
 ● Dreamweaver
Инструменты

CI (continuous integration):
 ● Jenkins/Hudson;
 ● Cruise control;
 ● TeamCity;
 ● hand made :)
Место unit тестов в проекте

● Тесты при разработке у каждого разработчика
● Тесты перед сборкой на сервере CI
● Тесты перед выкладываением готового продукта
Терминология
● assert - проверка
● test suite - набор тестов
● integration test - тесты для проверки взаимодействия
● "искусственные" объекты
● SUT - system under testing
● Fixture - тестовые данные
● black/white box
Терминология - "искусственные" объекты
 ● Mock
 ● Stub
 ● Fake
 ● Spy
 ● подкласс
Test Driven Development
Процесс разработки

    С тестами    Без тестов
Как начать писать тесты?
http://cyber-dojo.com
Рецепты

● Избавление от зависимостей
● Использование чужих тестов
● Рефакторинг во время тестирования

http://kucherenko.org/tdd_code/
Рецепты
Тестирование файловой системы
Рецепты
Тестирование баз данных
Рецепты
Тестирование внешних сервисов
Рецепты
Особенности тестирования javascript кода
● DOM
● AJAX
Паттерны тестирования

● fail first
● one assert
● тесты независимы друг от друга
Антипаттерны тестирования
● Лжец
● Гигант
● Чрезмерная инициализация
● Чрезмерное использование "подделок"
● Инспектор
● Объедки
● Герой
● Скрытые зависимости
Будущее
Литература
Вопросы

More Related Content

What's hot

Мастер класс- Maven + Jenkins
Мастер класс- Maven + JenkinsМастер класс- Maven + Jenkins
Мастер класс- Maven + Jenkins
Valentin Fedoskin
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)
Ontico
 
Комплексное использование анализаторов для повышения качества кода
Комплексное использование анализаторов для повышения качества кодаКомплексное использование анализаторов для повышения качества кода
Комплексное использование анализаторов для повышения качества кода
Andrey Karpov
 
Tizen Mobile Application Lifecycle by Kirill Danilov
Tizen Mobile Application Lifecycle by Kirill DanilovTizen Mobile Application Lifecycle by Kirill Danilov
Tizen Mobile Application Lifecycle by Kirill Danilov
MoscowJS
 

What's hot (20)

GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?
 
Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"
 
День 1: Автоматизированное тестирование: Введение
 День 1: Автоматизированное тестирование: Введение День 1: Автоматизированное тестирование: Введение
День 1: Автоматизированное тестирование: Введение
 
Сергей Сергеев — Maintainer кода в большом проекте
Сергей Сергеев — Maintainer кода в большом проектеСергей Сергеев — Maintainer кода в большом проекте
Сергей Сергеев — Maintainer кода в большом проекте
 
Мастер класс- Maven + Jenkins
Мастер класс- Maven + JenkinsМастер класс- Maven + Jenkins
Мастер класс- Maven + Jenkins
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешево
 
Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)
 
Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops
 
Константин Васильев «Fody против рутины»
Константин Васильев «Fody против рутины»Константин Васильев «Fody против рутины»
Константин Васильев «Fody против рутины»
 
Как анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузерКак анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузер
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
Behat-trick: как мы внедряли BDD на наших проектах
Behat-trick: как мы внедряли BDD на наших проектахBehat-trick: как мы внедряли BDD на наших проектах
Behat-trick: как мы внедряли BDD на наших проектах
 
Комплексное использование анализаторов для повышения качества кода
Комплексное использование анализаторов для повышения качества кодаКомплексное использование анализаторов для повышения качества кода
Комплексное использование анализаторов для повышения качества кода
 
Навигация в Android без боли и слез
Навигация в Android без боли и слезНавигация в Android без боли и слез
Навигация в Android без боли и слез
 
Tizen Mobile Application Lifecycle by Kirill Danilov
Tizen Mobile Application Lifecycle by Kirill DanilovTizen Mobile Application Lifecycle by Kirill Danilov
Tizen Mobile Application Lifecycle by Kirill Danilov
 
Введение в maven
Введение в mavenВведение в maven
Введение в maven
 
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
 

Viewers also liked

Obesity in portugal pedro moreira
Obesity in portugal pedro moreiraObesity in portugal pedro moreira
Obesity in portugal pedro moreira
Nuno Almeida
 
Java script. code quality. (2)
Java script. code quality. (2)Java script. code quality. (2)
Java script. code quality. (2)
Andrey Kucherenko
 

Viewers also liked (7)

Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
 
Obesity in portugal pedro moreira
Obesity in portugal pedro moreiraObesity in portugal pedro moreira
Obesity in portugal pedro moreira
 
Continuous integration для java script проектов
Continuous integration для java script проектовContinuous integration для java script проектов
Continuous integration для java script проектов
 
Java script. code quality. (2)
Java script. code quality. (2)Java script. code quality. (2)
Java script. code quality. (2)
 
Интернационализация и локализация в Symfony / Symfony I18n And L10n
Интернационализация и локализация в Symfony / Symfony I18n And L10nИнтернационализация и локализация в Symfony / Symfony I18n And L10n
Интернационализация и локализация в Symfony / Symfony I18n And L10n
 
Многоязычные сайты на Symfony. Проблемы и их решения
Многоязычные сайты на Symfony. Проблемы и их решенияМногоязычные сайты на Symfony. Проблемы и их решения
Многоязычные сайты на Symfony. Проблемы и их решения
 
Основные возможности Symfony 2
Основные возможности Symfony 2Основные возможности Symfony 2
Основные возможности Symfony 2
 

Similar to Unit tests & tdd in web development

C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'code
Ivan Mosiev
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
DrupalCamp MSK
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
MageCloud
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON
 
Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3
Technopark
 

Similar to Unit tests & tdd in web development (20)

C&C for coffee'n'code
C&C for coffee'n'codeC&C for coffee'n'code
C&C for coffee'n'code
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложений
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in net
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
Unity: "Очевидное-невероятное” или хитрости разработки на Unity AndroidUnity: "Очевидное-невероятное” или хитрости разработки на Unity Android
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
 
DevOps в реальном времени
DevOps в реальном времениDevOps в реальном времени
DevOps в реальном времени
 
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter..."Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Wgforge CI/CD
Wgforge CI/CDWgforge CI/CD
Wgforge CI/CD
 
ClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDD
 
Unit testing and TDD
Unit testing and TDDUnit testing and TDD
Unit testing and TDD
 
Python tools for web development (Python meetup Almaty #ALAPY)
Python tools for web development (Python meetup Almaty #ALAPY)Python tools for web development (Python meetup Almaty #ALAPY)
Python tools for web development (Python meetup Almaty #ALAPY)
 
Tdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiTdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chai
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish
 
Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3Тестирование осень 2013 лекция 3
Тестирование осень 2013 лекция 3
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 

Unit tests & tdd in web development