Содержание книги "Эффективное тестирование программного обеспечения
:
руководство разработчика"
Оглавление
Предисловие
Вступление
Благодарности
О книге
Об авторе
Об иллюстрации на обложке
1. Эффективное и систематическое тестирование программного обеспечения
1.1 Разница между разработчиками, тестирующими и не тестирующими свой код
1.2 Эффективное тестирование программного обеспечения для разработчиков
1.3 Принципы тестирования программного обеспечения (или Почему тестирование такое сложное)
1.4 Пирамида тестирования и на чем следует сосредоточиться
Упражнения
Итоги
2. Тестирование на основе спецификаций
2.1 Требования говорят сами за себя
2.2 Коротко о тестировании на основе спецификаций
2.3 Поиск ошибок с помощью тестирования на основе спецификаций
2.4 Тестирование на основе спецификаций в реальных условиях
Упражнения
Итоги
3. Структурное тестирование и охват кода
3.1 Охват кода, правильный способ
3.2 Кратко о структурном тестировании
3.3 Критерии охвата кода
3.4 Сложные условия и критерий охвата MC/DC
3.5 Тестирование циклов и других подобных конструкций
3.6 Классификация и выбор критериев
3.7 Тестирование на основе спецификаций и структурное тестирование: практический пример
3.8 Граничное и структурное тестирование
3.9 Одного структурного тестирования часто недостаточно
3.10 Структурное тестирование в реальном мире
3.11 Мутационное тестирование
Упражнения
Итоги
4. Проектирование по контрактам
4.1 Пред- и постусловия
4.2 Инварианты
4.3 Изменение контрактов и принцип подстановки Лисков
4.4 Как проектирование по контрактам связано с тестированием?
4.5 Проектирование по контрактам в реальном мире
Упражнения
Итоги
5. Тестирование на основе свойств
5.1 Пример 1: программа проверки оценок за экзамены
5.2 Пример 2: тестирование метода unique
5.3 Пример 3: тестирование метода indexOf
5.4 Пример 4: тестирование класса Basket
5.5 Пример 5: создание сложных объектов предметной области
5.6 Тестирование на основе свойств в реальном мире
Упражнения
Итоги
6. Дублеры и имитации для тестирования
6.1 Пустышки, фиктивные объекты, заглушки, шпионы и имитации
6.2 Введение в фреймворки имитаций
6.3 Имитации в реальном мире
Упражнения
Итоги
7. Проектирование с учетом простоты тестирования
7.1 Отделение инфраструктурного кода от предметного
7.2 Внедрение зависимостей и управляемость
7.3 Улучшение наблюдаемости классов и методов
7.4 Передача зависимостей через конструктор класса и значений через параметры методов
7.5 Проектирование с учетом простоты тестирования на практике
Упражнения
Итоги
8. Разработка через тестирование
8.1 Наш первый сеанс TDD
8.2 Размышления о первом опыте применения TDD
8.3 TDD в реальном мире
Упражнения
Итоги
9. Большие тесты
9.1 Когда использовать большие тесты
9.2 База данных и тестирование SQL
9.3 Системные тесты
9.4 Заключительные замечания по большим тестам
Упражнения
Итоги
10. Качество тестового кода
10.1 Отличительные черты поддерживаемого тестового кода
10.2 Дурно пахнущие тесты
Упражнения
Итоги
11. Заключение
11.1 Хотя модель выглядит линейной, итерации имеют фундаментальное значение
11.2 Разработка программного обеспечения без ошибок: миф или реальность?
11.3 Вовлекайте в процесс тестирования конечных пользователей
11.4 Модульное тестирование – сложная задача
11.5 Уделяйте внимание мониторингу
11.6 Что дальше?
Приложение A. Решения упражнений
Ссылки
Предметный указатель