Close

Как автоматическое тестирование создает условия для внедрения DevOps

Автоматизация тестирования помогает командам разрабатывать, тестировать и поставлять решения быстрее и надежнее.

Фотография: Кришна Сай
Антон Христов

Менеджер по продукту в mabl


В начале 2000-х годов компании начали внедрять agile-методики, ускорив цикл разработки и цикл обратной связи с клиентами. Позднее это привело к внедрению инструментов, обеспечивающих непрерывную интеграцию и непрерывную поставку, а также к автоматизации процессов сборки, тестирования, конфигурации и развертывания.

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

Сначала методология DevOps была ориентирована только на разработку и ИТ-операции. При этом тестированием продолжала заниматься отдельная команда, которая выполняла его главным образом вручную. Такой подход позволял решать проблемы, связанные с поставкой и мониторингом облачных приложений, и стал предпосылкой создания полностью автоматизированных конвейеров CI/CD. Тем не менее к значительному ускорению циклов релиза он не привел, поскольку тестирование выполнялось изолированно и нередко требовало трудоемкой ручной работы.

Чтобы тестирование не становилось узким местом разработки, организации отказываются от выделенных команд по контролю качества в пользу реализации контроля всей командой разработки.

Что такое автоматизация тестирования?


Автоматизация тестирования — это методика автоматической проверки и утверждения программного продукта, например веб-приложения. Она позволяет удостовериться, что продукт соответствует установленным стандартам качества в отношении оформления кода, функциональности (бизнес-логики) и удобства пользователя.

Существуют разные методики тестирования.

  • Модульное тестирование: проверка работы отдельных модулей кода, например функций.
  • Интеграционное тестирование: проверка способности нескольких фрагментов кода работать вместе без нежелательных последствий.
  • Сквозное тестирование: проверка приложения на соответствие ожиданиям пользователя.
  • Глубокое тестирование: неструктурированный подход к анализу многочисленных компонентов приложения с точки зрения пользователя для выявления функциональных и визуальных проблем.

Часто эти типы тестирования изображают в виде пирамиды. По мере подъема по ступеням количество тестов уменьшается, а стоимость их создания и запуска возрастает.

Пирамида глубокого тестирования

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

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

Несмотря на то что инструменты автоматизации появились более десяти лет назад, многие из них все еще требуют навыков программирования. Часто результат их работы нестабилен и ненадежен, а при большом масштабе слишком возрастают расходы на техническое обслуживание и устранение неполадок. В итоге многие команды создают собственные системы автоматизации тестирования. Это затрудняет и растягивает во времени адаптацию новых участников команды из-за сложного обучения. Кроме того, собственные системы автоматизации тоже нуждаются в техническом обслуживании и оптимизации, чтобы соответствовать актуальному стеку технологий. Как следствие, большая часть сквозных тестов до сих пор выполнялась вручную.

По мере того как организации совершенствуют методики DevOps, возникает потребность в автоматизации тестирования на протяжении всего цикла разработки. Удовлетворить эту потребность необходимо для реализации главных преимуществ DevOps: возможности программировать, тестировать и поставлять решения быстрее и надежнее, оптимизации реагирования на инциденты, повышения эффективности совместной работы и обмена данными в командах. Сборка релиза не должна задерживаться на несколько дней в кабинете команды по контролю качества, прежде чем разработчики смогут получить обратную связь и устранить выявленные проблемы. Командам по контролю качества стоит согласовать свою работу с циклом DevOps: обеспечить автоматизацию тестовых сценариев и практически полное покрытие кода. Среды необходимо стандартизировать, а развертывание на этапе контроля качества — автоматизировать. Операции предварительного тестирования, очистки, последующего тестирования и т. д. понадобится автоматизировать и согласовать с циклом непрерывной интеграции.

Сегодня мы располагаем инструментами с минимальным использованием кода, такими как mabl. Они позволяют внедрять надежные автоматические сквозные тесты на каждом этапе конвейера CI/CD. Благодаря этому можно выявлять проблемы на ранних этапах цикла разработки. А чем раньше обнаружена проблема в релизе, тем быстрее и дешевле ее исправить.

Автоматическое тестирование в DevOps


На практике это означает, что написанием модульных тестов для проверки работы кода занимаются разработчики, а автоматические тесты пользовательского интерфейса, которые проверяют удобство для конечного пользователя, создают специалисты по качеству и владельцы продукта. Время от времени специалисты по качеству проводят глубокое тестирование: команда вручную проверяет элементы приложения на наличие проблем.

При использовании подхода DevOps рекомендуется запускать автоматические тесты на ранних этапах конвейера CI/CD и делать это как можно чаще. В том числе следует выполнять в рабочей среде автоматическое тестирование пользовательского интерфейса для заблаговременного выявления проблем. В современных приложениях используется много сторонних многокомпонентных служб. Выявить проблемы с ними раньше, чем это сделают пользователи, разработчикам поможет синтетический мониторинг транзакций с выполнением тестов в рабочей среде.

Значок соединенных колец
Связанные материалы

Начните работу бесплатно

Значок: инструменты
Связанные материалы

Совершенствуйте методики DevOps с помощью тестирования

Начало работы с автоматическим тестированием


Универсального подхода к автоматическому тестированию не существует. И все же при выборе стратегии автоматизации можно руководствоваться несколькими важными принципами.

Частота релизов

Чем чаще выпускаются релизы, тем больше средств придется выделить на автоматизацию тестирования, особенно сквозных тестов, которые должны выполняться при каждом развертывании. Если цикл релизов долгий и вы хотите его ускорить, можно начать с увеличения покрытия кода модульными тестами и создания простых автоматических Smoke-тестов пользовательского интерфейса для быстрой проверки работоспособности каждой сборки. Затем можно постепенно вкладывать средства в создание дополнительных автоматических сквозных тестов, которые ускорят проверку релизов на предмет ухудшения работы.

Доступность инструментов

Современные инструменты автоматизации тестирования значительно улучшат способность вашей команды поставлять высококачественное ПО непрерывно. Выбирая инструменты тестирования, учитывайте простоту создания тестов, надежность, необходимость в техническом обслуживании и возможность интеграции со стеком CI/CD.

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

Уровень зрелости продукта

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

Если команда приступает к разработке нового продукта, это удобный случай для создания системы автоматического тестирования с нуля. Не теряя времени, установите цель покрытия кода модульными тестами и сосредоточьтесь на определении сценариев сквозного тестирования для каждой возможности. Прежде чем внедрять автоматические сквозные тесты, лучше дождаться момента, когда возможность будет близка к релизу: так вы сможете избежать ошибок тестирования после внесения изменений в пользовательский интерфейс.

Среды CI/CD и данные тестирования

Создание автоматических тестов — непростая задача уже сама по себе. Однако зачастую автоматизировать тестирование на ранних этапах конвейера CI/CD командам не позволяет отсутствие исходной среды с тестовыми данными. Важно заранее обсудить стратегию тестирования с командой и договориться о создании инфраструктуры тестирования. Например, разработчикам необходимо обеспечить поддержку тестовых аккаунтов пользователей. Кроме того, у них должна быть возможность загружать среду с тестовыми данными через API. Заблаговременно создав инфраструктуру для развертывания временной тестовой среды, можно значительно ускорить проверку релизов и цикл обратной связи.

Диаграмма: тестирование в рамках контроля качества

Как автоматическое тестирование влияет на роль специалистов по контролю качества?


Как автоматическое тестирование помогает расширить возможности DevOps


Сегодня автоматическое тестирование считается стандартом DevOps. Внедрение автоматических тестов на большей части конвейера разработки поначалу может показаться неподъемной задачей. В таком случае начните с автоматизации одного сквозного сценария и выполнения тестирования по расписанию. Новые инструменты также значительно упрощают процесс автоматического тестирования. При этом вы получаете прекрасный результат в виде довольных пользователей. Разве можно отказаться от такой возможности?

Автоматическое тестирование позволяет реализовать следующие преимущества DevOps.

  • Скорость без ущерба для качества: высокая скорость поставки более ценных продуктов клиентам и счастливые разработчики.
  • Более эффективная совместная работа: улучшение взаимодействия в команде в силу разделения ответственности за качество.
  • Надежность: повышение надежности релизов за счет увеличения покрытия кода автоматическими тестами. Проблемы в выпущенном продукте станут исключительно редки.
  • Масштабирование: достижение стабильно качественных результатов с меньшими рисками за счет распределения процесса разработки между небольшими автономными командами.
  • Безопасность: высокая скорость разработки без ущерба для безопасности и соответствия требованиям благодаря автоматизированным политикам, точному разграничению прав и методам управления конфигурацией.
  • Повышение удовлетворенности клиентов: усиленная надежность и быстрое реагирование на обратную связь повышают удовлетворенность пользователей и приводят к увеличению количества участников реферальных программ.

Заключение


Автоматизация тестирования помогает полностью раскрыть потенциал DevOps. Сокращение узких мест и повышение эффективности напрямую влияет на удовлетворенность сотрудников и клиентов. В конечном итоге улучшается и финансовый результат.

Начните автоматизировать тестирование с помощью Bitbucket Pipelines или одного из множества инструментов и ресурсов, доступных в Atlassian Marketplace.

Anton Hristov
Anton Hristov

Антон Христов — менеджер по продукту в компании mabl. Он обладает более чем десятилетним опытом разработки, тестирования и поставки ПО. Ему нравится работать на стыке пользователей, технологий и дизайна. В частности, Антон обожает анализировать данные на предмет ценных сведений и помогает людям по максимуму реализовать свои возможности. Это находит отражение в продуктах, которые он помогает создавать.


Поделитесь этой статьей
Следующая тема

Рекомендуемые статьи

Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

Образовательные программы DevOps

Рисунок схемы

Начните работу бесплатно

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up