Читаем Руководство по DevOps. Как добиться гибкости, надежности и безопасности мирового уровня в технологических компаниях полностью

• Интеграционное тестирование. Интеграционное тестирование дает нам возможность убедиться, что наши приложения правильно взаимодействуют с другими приложениями и сервисами в производственной среде, в отличие от тестирования с заглушками на интерфейсах. Как отметили Хамбл и Фарли, «значительная часть работы в среде тестирования системной интеграции включает развертывание новых версий каждого приложения, пока они не начнут правильно взаимодействовать. В этой ситуации “смоук-тест” (проверка общей работоспособности) обычно — полный набор приемочных испытаний. Им подвергается все приложение». Интеграционным тестам подвергаются сборки, прошедшие модульные и приемочные испытания. Поскольку интеграционное тестирование часто оказывается нестабильным, мы хотим свести к минимуму количество интеграционных тестов и найти как можно больше дефектов в ходе модульного и приемочного тестирования. Возможность использования виртуальных или имитированных версий удаленных сервисов при запуске приемочных испытаний становится важным для архитектуры требованием.

Если разработчики сталкиваются с давлением из-за приближающегося срока завершения проекта, они могут перестать создавать модульные тесты в ходе повседневной работы, независимо от того, как мы определили состояние «сделано». Для обнаружения этой проблемы мы можем выбрать в качестве показателя и сделать прозрачной глубину покрытия тестами (как функцию от числа классов, строк кода, перестановок и так далее), даже считая наш набор приемосдаточных тестов не пройденным, если покрытие падает ниже определенного уровня[81].

Мартин Фаулер отмечает, что в целом «десять минут на сборку и тестирование — отличное время, в пределах разумного… Сначала мы выполняем компиляцию и запускаем более локальные модульные тесты с базой данных, полностью отключенной с помощью заглушек. Такие тесты могут выполняться очень быстро, завершаясь в течение десяти минут. Однако любые ошибки, связанные с более масштабным взаимодействием, особенно включающие работу с реальными базами данных, не будут найдены. На втором этапе сборка подвергается другому набору тестов приемочных испытаний, работающих с реальными базами данных и проверяющих более сложное, сквозное поведение. Выполнение этого набора тестов может занять несколько часов».

Обнаружение ошибок с помощью автоматизированного тестирования на самых ранних этапах

Конкретная цель разработки наших наборов автоматизированных тестов — найти ошибки на максимально раннем этапе тестирования. Вот почему мы запускаем быстро работающие автоматизированные тесты (например, модульные) раньше, чем медленнее работающие автоматизированные тесты (например, приемочные и интеграционные тесты), а они, в свою очередь, запускаются до любых видов тестирования вручную.

Другое следствие этого принципа — то, что любые ошибки должны быть найдены с помощью самых быстрых категорий тестирования. Если большинство ошибок обнаруживаются в ходе приемочного и интеграционного тестирования, то обратная связь к разработчикам приходит на порядок медленнее, чем при модульном тестировании — и интеграционное тестирование требует применения ограниченных и сложных тестовых сред. Они могут использоваться только одной командой в каждый момент, что еще сильнее затягивает получение обратной связи.

Кроме того, не только само воспроизведение ошибок, обнаруженных в ходе интеграционного тестирования, является трудоемким и отнимает много времени. Сложным является даже процесс проверки того, что они действительно исправлены (то есть разработчик создает исправление, но затем необходимо ждать четыре часа, чтобы узнать, успешно ли завершилось интеграционное тестирование).

Поэтому, обнаружив ошибку в ходе приемочного или интеграционного тестирования, мы должны создать модульный тест, чтобы он мог найти ошибку быстрее, раньше и дешевле. Мартин Фаулер описал понятие «пирамиды идеального тестирования». С ее помощью мы могли бы отлавливать большинство ошибок благодаря модульным тестам (рис. 14). На деле же зачастую верно обратное, и основной вклад в поиск ошибок вносят ручное и интеграционное тестирование.

Идеальное и неидеальное автоматизированное тестирование

Рис. 14. Пирамиды идеального и неидеального автоматизированного тестирования (источник: Martin Fowler, TestPyramid)

Если мы обнаружим, что модульные или приемочные испытания слишком сложны и дорогостоящи, чтобы писать их и поддерживать, то, скорее всего, у нас слишком связанная архитектура, когда четких границ между модулями не существует (или, возможно, никогда не существовало). В этом случае нам необходимо создать менее связанную систему. Ее модули можно тестировать независимо, без среды интеграции. Тогда можно сделать так, чтобы приемочные испытания даже самых сложных приложений выполнялись в течение нескольких минут.

Перейти на страницу:

Похожие книги

Оптимизация BIOS. Полный справочник по всем параметрам BIOS и их настройкам
Оптимизация BIOS. Полный справочник по всем параметрам BIOS и их настройкам

Прочтя эту книгу, вы узнаете, что представляет собой BIOS, какие типы BIOS существуют, как получить доступ к BIOS и обновлять ее. Кроме того, в издании рассказано о неполадках в работе BIOS, которые приводят, например, к тому, что ваш компьютер не загружается, или к возникновению ошибок в BIOS. Что делать в этот случае? Как устранить проблему? В книге рассказывается об этом и даже приводится описание загрузки BIOS во флэш-память.Также вы научитесь использовать различные функции BIOS, узнаете, как оптимизировать их с целью улучшения производительности и надежности системы. Вы поймете, почему рекомендуемые установки являются оптимальными.После прочтения книги вы сможете оптимизировать BIOS не хуже профессионала!Книга предназначена для всех пользователей компьютера – как начинающих, которые хотят научиться правильно и грамотно настроить свою машину, используя возможности BIOS, так и профессионалов, для которых книга окажется полезным справочником по всему многообразию настроек BIOS. Перевод: А. Осипов

Адриан Вонг

Зарубежная компьютерная, околокомпьютерная литература / Программирование / Книги по IT
SAP R/3 Системное администрирование
SAP R/3 Системное администрирование

Эта книга полностью обновлена и тщательно пересмотрена. Она является необходимым пособием для руководителей информационных служб, технических консультантов и системных администраторов R/3, которые хотят иметь полное представление об администрировании Basis.Знания, полученные "из первых рук" РѕС' различных специалистов SAP Global Support, работавших над реализацией более 20000 систем R/3, служат РѕСЃРЅРѕРІРѕР№ этой книги, которая научит выполнять все критически важные задачи системного администрирования с оптимальной эффективностью. Она учит быстро принимать правильные решения в сложных ситуациях, используя рекомендации экспертов и ценные рекомендации из реального мира, которые делают это уникальное РїРѕСЃРѕР±ие необходимым для повседневного использования.Кроме всего прочего, эта книга является ценным источником, помогающим подготовиться к экзамену СТС (Certified Technical Consultant) no R/3 Release 4.6C и Enterprise.Р' руководстве рассмотрены:# Настройка системной инфраструктуры.# Администрирование клиента.# Пользователи и полномочия.# Фоновая обработка.# Архивирование данных.# Администрирование спула.# Обслуживание инстанций.# Системный мониторинг.Р

Лиане Вилл , Сигрид Хагеман

Зарубежная компьютерная, околокомпьютерная литература