Close

Тестирование ПО при непрерывной поставке

Узнайте о преимуществах тестирования программного обеспечения и его роли в непрерывной поставке.


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

Тестирование ПО может выполняться вручную или автоматически.

  • Ручное тестирование проводится командой или отдельным ее участником, которые вручную используют программный продукт и проверяют правильность его поведения.
  • В процессе автоматического тестирования ПО используются различные инструменты, предназначенные для разных целей: от проверки правильности изолированного кода до моделирования тестирования, полностью выполняемого человеком.

Различные виды тестирования ПО

Сравните разные виды тестирования ПО: модульное, интеграционное, функциональное, приемочное тестирование и другие варианты.

Глубокое тестирование

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

Введение в покрытие кода

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

Учебное руководство по интеграционному тестированию

Из этого учебного руководства вы узнаете, как выполнять интеграционные тесты с помощью Bitbucket Pipelines.

Преимущества тестирования ПО


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

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

Уровни тестирования ПО


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

Модульное тестирование

Фундаментом тестирования ПО является модульное тестирование. Модульное тестирование — это практика проведения проверок правильности ввода и вывода для отдельных модулей кода. Единицей измерения в данном случае являются самостоятельные функции и методы кода.

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

Гипотетический образец пользовательской истории по написанию модульного теста выглядит примерно так: «функция 2VAL, принимая на вход 2 значения, x и y, всегда возвращает x+y». Тогда модульный тест должен будет выполнять 2VAL с двумя значениями и подтверждать, что на выходе получается x+y. Модульные тесты отлично подходят для подтверждения правильности кода, работающего с денежными значениями.

Уровни тестирования программного обеспечения: модульное тестирование, интеграционные тесты, функциональные тесты и глубокое тестирование

Интеграционное тестирование

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

Функциональное (сквозное) тестирование

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

  • Нажмите эту кнопку
  • Прочитать текст
  • Отправить форму

Поскольку сквозные тесты выполняются в полном контексте пользовательского интерфейса, они проверяют правильность работы ПО на всех уровнях программного стека.

Глубокое тестирование

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

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

Тестирование ПО при непрерывной поставке


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

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

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

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

Как сделать тестирование частью конвейера CD


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

Делайте упор на качество на каждом этапе конвейера

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

Помогите разработчикам проверить качество новых возможностей

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

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

Встройте функцию получения отзывов клиентов

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

Хотите создать собственную среду непрерывной поставки? Мы поможем сделать первый шаг.

Создайте надежную стратегию тестирования ПО


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

В идеальном проекте разработки ПО следовало бы стремиться к стопроцентному покрытию тестами, чтобы гарантировать, что код не содержит багов и работает в соответствии с ожиданиями. К сожалению, в реальном бизнесе с его временными и бюджетными ограничениями это вряд ли осуществимо.

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

Общая стратегия для пользовательских приложений на основе графического интерфейса заключается в следующем.

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

Усовершенствуйте тестирование ПО за счет непрерывной поставки


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

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

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

Вы готовы поднять тестирование ПО на новый уровень? Узнайте больше о тестировании в среде CD. А из наших руководств по тестированию DevOps вы можете узнать, как инструменты Atlassian и сторонних производителей могут интегрировать тестирование в ваш рабочий процесс.

Claire Maynard
Claire Maynard

Клэр — опытный специалист по маркетингу, которая за время своей карьеры в Atlassian успела поработать в различных направлениях, включая growth-маркетинг, performance-маркетинг и маркетинг продуктов. В настоящее время она отвечает за стратегию бренда компании, контент-стратегию и стратегию вывода продукции на рынок для продуктов Confluence Cloud. На досуге Клэр любит кататься на волнах, заниматься бегом и пробовать что-нибудь новенькое в еще неизведанных ресторанах Сан-Франциско и других городах по всему миру.


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

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

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

Узнать больше в блоге

Рисунок: карта

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

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

Thank you for signing up