Преодоление ограничений среды при интеграционном тестированииИсточник: ibm.com/developerworks Эрик Миник, популяризатор DevOps, IBM
Для проверки поставляемых систем ПО используется интеграционное тестирование. Оно позволяет предприятию проверить приложение в деле и определить, достигли ли разработчики поставленной цели. Поскольку системы программного обеспечения становятся все более модульными и все чаще строятся из служб, интервал времени между внесением изменений в код и интеграционным тестированием оказывается ключевым показателем, от которого зависят сроки выпуска продукта на рынок и производительность труда разработчиков. Идеальный процесс прост. Каждый раз, когда разработчик изменяет код, нужно быстро выполнить все тесты и сообщить разработчику результат. Сборка измененных компонентов, модульное тестирование, развертывание в среде интеграции и весь интеграционный тест выполняются всего за несколько минут. К сожалению, во многих случаях этот идеал недостижим. Автоматических тестов может быть слишком мало, или они могут занимать слишком много времени. Непрерывная интеграция может быть не организована. Автоматическое развертывание сложных приложений может требовать специальных инструментов. Решения этих проблем сегодня довольно хорошо изучены. Тесты должны быть автоматизированы с тяжелым упором на тестирование API. Организовать процесс непрерывной автоматической сборки легко, так что его отсутствию нет никакого оправдания. Средства автоматизации развертывания хорошо проработаны. Однако все более распространенной проблемой среди организаций становится дефицит среды интеграционного тестирования. Она может быть неполной. Она может быть несогласованной. Она может быть просто недостаточной. Эта статья отвечает на вопрос, почему возникают эти проблемы и как их решать. Ограничения средыЧтобы понять, как получить избыточную и высококачественную среду тестирования для ускорения обратной связи, нужно понять, в чем заключаются ограничения существующей среды. Это знание поможет совладать с проблемами.
В общем случае эти характеристики среды интеграционного тестирования усиливают друг друга. Например, дорогостоящая среда допустима, если она устанавливается надолго, но в результате несогласованной эксплуатации она может недоиспользоваться. Поддерживать среду проще, если она постоянно находится в работе. Но, к сожалению, для экономии расходов на оборудование ее желательно отключать, когда она не используется. Методы устранения узких местСуществуют три подхода, которые помогают решить проблемы среды интеграционного тестирования и повысить ее доступность: планирование использования среды, среда как услуга и виртуализация услуг. Каждый подход решает разные части этой проблемы. Планирование использования средыПростейшая стратегия заключается в том, чтобы активно планировать использование среды и управлять ею. Обычно ответственность за это возлагается на менеджера выпуска. Интеграционные среды рассматриваются как ценные ресурсы и выделяются для тестирования выпуска в зависимости от его приоритета и сроков. Современные инструменты управления выпусками, такие как IBM UrbanCode Release, способны обеспечить формальное отслеживание среды, планирование и выявление конфликтов, но до сих пор в этих целях широко используются электронные таблицы. ПреимуществаЧеткое разграничение того, какие выпуски могут использовать среду и когда, обеспечивает группам разработки и тестирования необходимую предсказуемость и позволяют извлечь максимальную выгоду из ограниченных ресурсов. НедостаткиРезервирование среды помогает гарантировать, что ограниченные ресурсы будут использоваться эффективно, но оно не создает больше сред и не помогает при их несогласованности. Среда как услугаЧрезвычайно полезна возможность запросить среду тестирования, оптимизированную для вашего приложения, и подготовить и настроить ее в течение нескольких минут. Для этого используются технологии облака (открытого или частного) в сочетании с механизмом модельных сред, таким как UrbanCode Deploy with Patterns, для создания сред, их настройки и ликвидации. ПреимуществаРешение "среда как услуга" резко сокращает трудоемкость создания среды тестирования. Решения, которые также вносят новую конфигурацию, позволяют держать под контролем затраты на поддержание среды при одновременном повышении ее готовности к производству. В результате группа может получить необходимую ей среду интеграции, когда она ей нужна. Технология "среда как услуга" должна стать краеугольным камнем вашей стратегии интеграционного тестирования. НедостаткиНизкие затраты на создание среды ведут к размножению сред. Это может привести к большим расходам на оборудование, особенно при наличии очень больших сред интеграции. Среды, построенные поверх относительно дешевых облачных ресурсов, помогают уменьшить затраты на установку. Так как среды легко создавать и ликвидировать, уменьшается склонность поддерживать редко используемые среды. Вместо этого можно освобождать ресурсы, когда они не используются, и при необходимости быстро восстановить среду. Так как эта стратегия строится на облаке и виртуализации, многие "ценные" компоненты не вписываются в стратегию "среда как услуга". Их нужно либо распределять между несколькими планируемыми средами, либо виртуализировать. Проблему могут вызвать неисправные компоненты из других групп, но если у каждой большой группы есть своя собственная среда интеграции и при автоматическом развертывании используются только надежные версии чужих компонентов, то в целях изоляции можно использовать подход "среда как услуга". Виртуализация услугПри виртуализации услуг некоторые из компонентов системы заменяются "заглушками" или "фиктивными компонентами". Этот подход известен давно. Разработчики создают макет, который внешне функционирует как полноценная служба, и выполняют тестирование с этим макетом. Например, если услуги сторонней компании по предоставлению котировок акций оцениваются, исходя из числа транзакций, то для целей тестирования разработчик может создать службу-дублер с тем же API, которая всегда возвращает одни и те же значения. Инструменты виртуализации служб вроде тех, что присутствуют в IBM Rational Test Workbench, рационализируют процесс создания подобных заглушек и управления их использованием. ПреимуществаВиртуализация услуг обеспечивает "чистый" способ работы с "ценными" компонентами. Заглушки могут замещать компоненты, за использование которых надо платить, или уникальные компоненты (мейнфреймы, дорогое промежуточное ПО или программно-аппаратные комплексы). Заглушки также могут заменять компоненты, поставляемые другими группами. Этот подход имеет три основных преимущества:
НедостаткиТесты более релевантны, когда тестирование выполняется с реальным продуктом, а не заглушкой. Те же возможности изоляции, которые защищают вашу работу от ошибок, допущенных другой группой, вынуждают откладывать тестирование полностью интегрированной системы. Задержка тестирования обходится дорого, так как замедляет обратную связь. Виртуализация служб не помогает и в управлении средами из имеющихся компонентов. Реалистичный сценарий, объединяющий разные методыВымышленный пример крупной системы Marketplace демонстрирует, как использовать разные инструменты вместе. Marketplace состоит из многих частей.
У группы выпуска Marketplace была одна большая среда интеграционного тестирования (INT) и среда тестирования производительности (PERF). Теперь каждая из шести групп располагает небольшой лабораторией тестирования, где можно проверять отдельные компоненты, но не комплексные сценарии. Интеграционное тестирование значится в графике выпуска, и руководство выпуском регулирует доступ к средам INT и PERF. Интеграционные среды уровня группыДля повышения производительности труда разработчиков организация Marketplace решила сделать так, чтобы у каждой группы разработки была собственная среда интеграционного тестирования и возможность наращивать ее, если нужно проверить больше строк кода или ускорить процесс разработки.
В результате каждая группа разработчиков получила ряд небольших, дешевых сред, в значительной мере использующих виртуализацию услуг. Они могли бы тестировать свои компоненты и в рамках более крупной системы, но так они изолированы от других групп. Эти другие группы могут нарушить их работу, или они могут беспокоиться о том, чтобы не испортить компоненты других групп. Однако существенное использование виртуализации означает, что вопросы интеграции служб сразу решить не удастся. Среда интеграции уровня выпускаДля каждого выпуска подготавливается среда интеграционного тестирования системы. В основном это полная среда с минимальным использованием виртуализации услуг. Чтобы попасть в эту среду, изменения должны успешно пройти широкий набор автоматических тестов в средах уровня групп.
Ввиду того, что на уровне группы проводится тщательное интеграционное тестирование, изменения, которые мешают тестированию в этой среде, чрезвычайно редки. Это среды, в которых работают специалисты по ручному тестированию, получая выгоду от сочетания высокой доступности среды и работы с последней версией проверенного кода. Тестирование производительностиТестирование производительности остается практически неизменным, и это самая большая среда. Как для веб-сервисов, так и для мейнфрейма применяется виртуализация услуг. Для мейнфрейма и сдельно оплачиваемых услуг виртуализация иногда используется при тестировании с большим количеством транзакций. В других сценариях тестирования производительности для обоих сторонних поставщиков веб-сервисов устанавливаются заглушки, которые медленно реагируют на запросы, для проверки поведения приложения, когда у сторонних поставщиков услуг возникают проблемы. Окончательное интеграционное тестированиеДля окончательной проверки интеграции используется среда интеграционного тестирования. Так как она предусматривает доступ к ценным ресурсам, таким как реальная версия сдельно оплачиваемых услуг и компоненты мейнфрейма, она подлежит управлению и планированию. По-прежнему применяется система планирования использования среды для ее выделения предстоящим выпускам. МодельМодель, используемая в приведенном выше примере, довольно распространена. Ближе к разработчикам используются небольшие, существенно виртуализированные среды. Так как они, вероятно, проживут недолго, они также в значительной мере используют преимущество распределения среды. На среднем уровне распределение среды используется для создания более полных сред интеграции, и виртуализация услуг применяется в меньшей степени. На поздних этапах тестирования планируются и распределяются между выпусками ценные ресурсы. Каждый подход имеет свои преимущества, и недостатки одного подхода компенсируются возможностями другого. Таким образом, группы извлекают максимальную выгоду из сочетания подходов планирования ресурсов, виртуализации услуг и использования среды как услуги. Интернет-магазин
|