- Артикул:00-01036681
- Автор: Бек К.
- ISBN: 978-5-4461-1439-9
- Обложка: Мягкая обложка
- Издательство: Питер (все книги издательства)
- Город: Санкт-Петербург
- Страниц: 224
- Формат: 70x100/16 (~167x236 мм)
- Год: 2023
- Вес: 564 г
- Серия: Библиотека программиста (все книги серии)
Возвращение знаменитого бестселлера. Изящный, гибкий и понятный код, который легко модифицировать, который корректно работает и который не подкидывает своим создателям неприятных сюрпризов.
Неужели подобное возможно? Чтобы достичь цели, попробуйте тестировать программу еще до того, как она написана. Именно такая парадоксальная идея положена в основу методики ТDD (Test-Driven-Development - разработка основанная на тестировании). Бессмыслица? Не спешите делать скороспелые выводы.
Рассматривая применение ТDD на примере разработки реального программного кода, автор демонстрирует простоту и мощь этой методики. В книге приведены два программных проекта, целиком и полностью реализованных с использованием ТDD.
За рассмотрением примеров следует обширный каталог приемов работы в стиле ТDD, а также паттернов и рефакторингов, имеющих отношение к ТDD.
Книга будет полезна для любого программиста, желающего повысить производительность своей работы и получить удовольствие от программирования.
Содержание
Предисловие
Благодарности
Введение
Часть I. На примере денег
Глава 1. Мультивалютные деньги
Глава 2. Вырождающиеся объекты
Глава 3. Равенство для всех
Глава 4. Данные должны быть закрытыми
Глава 5. Поговорим о франках
Глава 6. Равенство для всех, вторая серия
Глава 7. Яблоки и апельсины
Глава 8. Создание объектов
Глава 9. Потребность в валюте
Глава 10. Избавление от двух разных версий times
Глава 11. Корень всего зла
Глава 12. Сложение, наконец-то
Глава 13. Делаем реализацию реальной
Глава 14. Обмен валюты
Глава 16. Абстракция, наконец-то!
Глава 17. Ретроспектива денежного примера
Что дальше?
Метафора
Использование JUnit
Метрики кода
Процесс
Качество тестов
Последний взгляд назад
Часть II. На примере xUnit
Глава 18. Первые шаги на пути к xUnit
Глава 19. Сервируем стол (метод setup)
Глава 20. Убираем со стола (метод tearDown)
Глава 21. Учет и контроль
Глава 22. Обработка неудачного теста
Глава 23. Оформляем тесты в набор
Глава 24. Ретроспектива xUnit
Часть III. Шаблоны разработки через тестирование
Глава 25. Шаблоны разработки через тестирование
Тест
Изолированный тест (Isolated Test)
Список тестов (Test List)
Сначала тест (Test First)
Сначала оператор assert (Assert First)
Тестовые данные (Test Data)
Понятные данные (Evident Data)
Глава 26. Шаблоны красной полосы
Тест одного шага (One Step Test)
Начальный тест (Starter Test)
Объясняющий тест (Explanation Test)
Тест для изучения (Learning Test)
Еще один тест (Another Test)
Регрессионный тест (Regression Test)
Перерыв (Break)
Начать сначала (Do over)
Дешевый стол, хорошие кресла (Cheap Desk, Nice Chair)
Глава 27. Шаблоны тестирования
Дочерний тест (Child Test)
Поддельный объект (Mock Object)
Самошунтирование (Self Shunt)
Строка-журнал (Log String)
Тестирование обработки ошибок (Crush Test Dummy)
Сломанный тест (Broken Test)
Чистый выпускаемый код (Clean Check-in)
Глава 28. Шаблоны зеленой полосы
Подделка (Fake It)
Триангуляция (Triangulate)
Очевидная реализация (Obvious Implementation)
От одного ко многим (One to Many)
Глава 29. Шаблоны xUnit
Проверка утверждений
Фикстура (Fixture)
Внешняя фикстура (External Fixture)
Тестовый метод (Test Method)
Тест исключения (Exception Test)
Все тесты (All Tests)
Глава 30. Шаблоны проектирования
Команда (Command)
Объект-значение (Value Object)
Нуль-объект (Null Object)
Шаблонный метод (Template Method)
Встраиваемый объект (Pluggable Object)
Встраиваемый переключатель (Pluggable Selector)
Фабричный метод (Factory Method)
Самозванец (Imposter)
Компоновщик (Composite)
Накапливающий параметр (Collecting Parameter)
Одиночка (Singleton)
Глава 31. Рефакторинг
Согласование различий (Reconcile Differences)
Изоляция изменений (Isolate Change)
Миграция данных (Migrate Data)
Выделение метода (Extract Method)
Встраивание метода (Inline Method)
Выделение интерфейса (Extract Interface)
Перемещение метода (Move Method)
Метод в объект (Method Object)
Добавление параметра (Add Parameter)
Параметр метода в параметр конструктора (Method Parameter to Constructor Parameter)
Глава 32. Развитие навыков TDD
Насколько большими должны быть шаги?
Что не подлежит тестированию?
Как определить качество тестов?
Как TDD способствует созданию инфраструктур?
Сколько должно быть тестов?
Когда следует удалять тесты?
Как язык программирования и среда разработки влияют на TDD?
Можно ли использовать TDD для разработки крупномасштабных систем?
Можно ли осуществлять разработку через тестирование на уровне приложения?
Как перейти к использованию TDD в середине работы над проектом?
Для кого предназначена методика TDD?
Зависит ли эффективность TDD от начальных условий?
Как методика TDD связана с шаблонами?
Почему TDD работает?
Что означает название?
Как методика ТDD связана с практиками экстремального программирования?
Нерешенные проблемы ТDD
Приложение I. Диаграммы взаимовлияния
Обратная связь
Контроль над системой
Приложение II. Фибоначчи
Послесловие