Все что вам нужно знать о Непрерывном Тестировании в DevOps

Все что вам нужно знать о Непрерывном Тестировании в DevOps

Hanna Horskaya

Agile, DevOps и непрерывная доставка сегодня являются частью словаря каждого технического специалиста. Мы все хотим быть гибкими, быстрее выпускать программное обеспечение и создавать инновационные продукты, как гиганты Кремниевой долины и стартапы. Многие аспекты этой трансформации очень хорошо изучены и до некоторой степени успешно приняты. Тем не менее, одна область, где все еще существует значительная путаница и проблемы с внедрением, - это тестирование. Когда цикл выпуска программного обеспечения сокращается с пары лет или месяцев до недель, дней или даже быстрее; как мы изменим нашу практику тестирования, чтобы удостовериться, что программное обеспечение, выпущенное в производство, не ломается и не разочаровывает пользователей?

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

Непрерывное тестирование - это ответ, но что именно такое непрерывное тестирование и как его реализовывать? 

Что такое непрерывное тестирование?

Википедия определяет непрерывное тестирование как «процесс выполнения автоматизированных тестов в рамках конвейера поставки программного обеспечения для получения немедленной обратной связи о бизнес-рисках, связанных с выпуском программного обеспечения-кандидата». 

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

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

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

Чем отличается непрерывное тестирование?

Старый способ тестирования был децентрализованным. Программное обеспечение передавалось от одной команды к другой. Проект имел определенные фазы разработки и контроля качества. Командам QA всегда необходимо было больше времени для обеспечения качества. Цель заключалась в том, чтобы качество преобладало над графиком проекта.

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

Данный тип тестирования характеризуется непрерывным тестированием, проводимым на постоянной основе. В процессе непрерывного DevOps изменения программного обеспечения постоянно перемещается от разработки к тестированию и развертыванию.

Код постоянно разрабатывается, доставляется, тестируется и развертывается.

Например, всякий раз, когда разработчик проверяет код на сервере исходного кода, автоматический набор модульных тестов Jenkins выполняется в непрерывном процессе. Если тесты терпят неудачу, сборка отклоняется, и разработчик получает уведомление. Если сборка проходит проверку, она развертывается на серверах производительности, QA для исчерпывающих функциональных и нагрузочных тестов. Испытания проводятся параллельно. Если тесты пройдены, программное обеспечение запускается в производство.

Непрерывное тестирование - это небольшая шестеренка в цикле непрерывной разработки, интеграции и развертывания.

Как проводить непрерывное тестирование

Использовать инструменты для создания набора автоматизации тестирования из пользовательских требований
Создать тестовую среду.
Копировать и анонимиировать производственные данных для создания тестового массива данных
Использовать виртуализацию сервисов для тестирования API
Параллельное тестирование производительности

Инструменты

1) Experitest

Experitest – платформа непрерывного тестирования для мобильных и веб-приложений, позволяющая вам проводить тесты на 2000 реальных мобильных устройствах и браузерах. Она полностью интегрируются с экосистемой вашей разработки, тестирования и непрерывной интеграции и совместима с Appium, Selenium, Jenkins, Travis CI и так далее.

2) QuerySurge

QuerySurge – умное решение для тестирования данных; это первое DevOps-решение для непрерывного тестирования данных. К числу основных функций относятся надежный API, аналитика данных, интеграция в DevOps-процесс для непрерывного тестирования и быстрая проверка больших объемов данных. 

3) Jenkins

Jenkins – инструмент непрерывного тестирования, написанный на Java. Его можно настроить через графический интерфейс или консольные команды.

4) Travis

Travis – инструмент непрерывного тестирования, размещенный на GitHub. Он предлагает множество разных языков и хорошую документацию.

5) Selenium

Selenium – инструмент тестирования с открытым исходным кодом. Он поддерживает все ведущие браузеры: Firefox, Chrome, IE и Safari. Selenium WebDriver используется для автоматизации веб-приложений.

Плюсы непрерывного тестирования

Включение непрерывного тестирования в процессы DevOps дает растущим предприятиям ряд преимуществ, в том числе следующие:

Высокая эффективность и более качественное развертывание

Непрерывное тестирование обеспечивает автоматизированный метод управления обеспечением качества и взаимодействием качества между рабочими процессами на каждом этапе жизненного цикла разработки программного обеспечения (SDLC). Интегрируя непрерывные циклы обратной связи в пользовательские и модульные модули тестирования, разработчики могут получить практическую информацию, необходимую им для улучшения совместимости и производительности своего кода, прежде чем он будет развернут. Эта эффективность устраняет разногласия между несколькими членами команды DevOps и поддерживает ускоренные графики доставки программного обеспечения.

Быстрое обнаружение и устранение ошибок в распределенных проектах

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

Улучшенный пользовательский интерфейс

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

Минимизация или устранение сбоев в бизнесе и связанных с ними затрат

Ошибка только в одном модуле приложения, особенно в больших взаимосвязанных системах, может иметь волновой эффект, который может вызвать нежелательные простои, отрицательно сказавшись на производительности и прибылях.

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

Report Page