Компьютерная литература
  • формат pdf
  • размер 2,37 МБ
  • добавлен 1 апреля 2015 г.
Ли Грэхем. Разработка через тестирование для iOS
М.: ДМК, 2013. — 274 с.: ил. — ISBN 978-5-94074-863-2.
Гибкий и понятный программный код, легко поддающийся модификации и не скрывающий неприятных сюрпризов для своих создателей. Как оказывается, это не сказка! Всего этого позволяет добиться методика разработки через тестирование (Test-Driven-Development, TDD). Она основана, на первый взгляд, на парадоксальной идее - создавать тесты до написания тестируемого прикладного кода.
В первых главах книги автор раскрывает теоретические основы методики TDD, знание которых, кстати, может пригодиться не только разработчикам приложений для iOS. В последующих главах он подробно демонстрирует применение этой методики на примере разработки действующего приложения, целиком и полностью реализованного с использованием TDD. За рассмотрением примера следует обсуждение различных тем, связанных с проектированием программных продуктов при использовании методики TDD, применение этой методики к унаследованным проектам, и краткий обзор будущих возможностей, уже реализованных для некоторых платформ, но пока не поддерживаемых в iOS.
О модульном тестировании написано множество книг. Это отличные книги, но они не содержат специализированной информации, например, для разработчиков приложений на основе фреймворка Cocoa Touch. Предоставляя примеры на языке Objective-C, используя Xcode с сопутствующими инструментами и оперируй идиомами Cocoa, автору удалось сделать принципы, лежащие в основе разработке через тестирование, более доступными для разработчиков приложений для iOS.
Предисловие
Благодарности
Об авторе
О тестировании программного обеспечения и модульном тестировании

Зачем тестировать программное обеспечение?
Кто должен тестировать программы?
Когда следует тестировать программы?
Примеры из практики тестирования
Как в общую картину вписывается модульное тестирование?
Что все это означает для разработчиков iOS?
Приемы разработки через тестирование
Сначала тест
Красный, зеленый, рефакторинг
Проектирование приложений при разработке через тестирование
Подробнее о рефакторинге
Вам это не понадобится
Тестируйте до, во время и после создания кода
Как писать модульные тесты
Требования
Запуск кода с известными исходными данными
Получение ожидаемых результатов
Проверка результатов
Увеличение удобочитаемости тестов
Организация множества тестов
Рефакторинг
В заключение
Инструменты для тестирования
OCUnit и Xcode
Альтернативы фреймворку OCUnit
Google Toolkit for Mac
GHUnit
CATCH
OCMock

Непрерывная интеграция
Hudson
CruiseControl
В заключение

Разработка приложений для iOS через тестирование
Цель проекта
Порядок использования
План атаки
Начало
Модель данных
Темы
Вопросы
Люди
Соединение класса Question с другими классами
Ответы
Проектирование приложений
План атаки
Создание объекта Question
Создание объектов Question из данных в формате JSON
Взаимодействие с сетью
Архитектура класса NSURLConnection
Реализация StackOverflowCommunicator
В заключение
Контроллеры представлений
Организация классов
Класс контроллера представления
TopicTableDataSource и TopicTableDelegate
Создание нового контроллера представления
Источник данных со списком вопросов .
Что дальше
Собираем все вместе
Завершение реализации логики приложения
Отображение аватара пользователя
Завершение и наведение порядка
Отправка приложения!
Проектирование при разработке через тестирование
Проектируйте интерфейсы, а не реализацию
Сообщайте, а не спрашивайте
Маленькие, узкоспециализированные классы и методы
Инкапсуляция
Использование лучше повторного использования
Тестирование кода, выполняющегося параллельно
Не мудрите больше, чем это необходимо
Отдавайте предпочтение широким и неглубоким иерархиям наследования
В заключение
Применение приема разработки через тестирование к существующим проектам
Первый тест – самый важный
Рефакторинг в поддержку тестирования
Тестирование в поддержку рефакторинга
Действительно ли необходимо писать все эти тесты?
За рамками сегодняшних возможностей разработки через тестирование
Выражение диапазонов входных и выходных значений
Разработка на основе определения функциональности
Автоматическое создание тестов
Автоматическое создание кода для прохождения тестов
В заключение
Предметный указатель