Upload
andrey-kucherenko
View
311
Download
4
Embed Size (px)
Citation preview
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● тесты независимы друг от друга
Антипаттерны тестирования● Лжец● Гигант● Чрезмерная инициализация● Чрезмерное использование "подделок" ● Инспектор● Объедки● Герой● Скрытые зависимости
Будущее
Литература
Вопросы