Shift Happens: что такое shift-left-тестирование?

Девиз “Тестируй как можно раньше и чаще” звучит довольно просто. Но чтобы эффективно реализовать shift-left-тестирование (тестирование со сдвигом влево), необходимы изменения в рабочих процессах компании и правильный набор практических инструментов.

Shift-left-тестирование впервые было предложено в 2001 году Ларри Смитом. Это такой подход, в котором тестирование интегрируется в процесс разработки ПО на всех его стадиях. Однако для некоторых это просто очередное модное слово, навязанное маркетологами. 

БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале "Библиотека тестировщика"

В теории shift-left-тестирование звучит красиво, но что оно означает на самом деле? Является ли это просто очередным термином из Agile, или оно действительно может улучшить качество продукта? В этой статье мы объясним, что такое тестирование со сдвигом влево, что оно требует от разработчиков и тестировщиков и как внедрить его в вашей команде. 

Что собой представляет “сдвиг влево”?

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

Тестирование начиналось только после того, как заканчивалась вся разработка программы, т.е. на воображаемом векторе оно располагалось справа. Подход shift-left предполагает смещение тестирования влево.

Если вы придерживаетесь shift-left-подхода, то тестирование происходит в конце спринта на каждой стадии этапа разработки. Более того, QA-инженеры и разработчики могут не ждать окончания спринта, а работать вместе с самого начала, чтобы создавать код, который можно тестировать, и проверять требования как можно раньше.

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

Место тестирования в традиционной модели жизненного цикла разработки и в Agile. В Agile применяется shift-left подход, тестирование смещается к фазе планирования.

Shift-left-тестирование – это непрерывный процесс, который требует тесного сотрудничества между командами разработчиков и QA. 

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

Shift-left для разработчиков: основной упор на качество кода

Как разработчика, подход shift-left побуждает вас с самого начала ориентироваться на тестируемость и качество продукта, а не на скорость, с которой он доходит до конечного пользователя. Задача в том, чтобы заранее учитывать масштабируемость, безопасность и пользовательский опыт при разработке каждой новой фичи.

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

Главное – понять, что написание кода – это только часть работы: вам также нужно думать о том, как этот код будет функционировать в долгосрочной перспективе. Проще говоря, shift-left нужен для того, чтобы все работало как должно с первого раза.

Shift-left для QA: совместная работа с разработчиками на протяжении всего цикла разработки

Для QA-инженеров shift-left-тестирование подразумевает работу в одной команде с разработчиками. По мере создания нового функционала они совместно проводят модульное, интеграционное и системное тестирование.

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

К моменту завершения этапа разработки вы вместе со всеми заинтересованными участниками проекта проводите пользовательское приемочное тестирование (User Acceptance Testing), после чегоприходите к выводу, что ваш продукт соответствует всем требованиям и готов к запуску.

С помощью shift-left-тестирования тестировщики добиваются высокого качества выпускаемых продуктов и уменьшения количества ошибок на проде. Ваш вклад как QA-специалиста помогает разработчикам создавать код более высокого качества, сокращая время, которое было бы потрачено на устранение дефектов в будущем.

Достоинства shift-left-тестирования

Если все сделано правильно, shift-left-тестирование может помочь сэкономить значительные средства и время. Давайте рассмотрим несколько преимуществ, которые может по достоинству оценить каждый специалист.

Более высокое качество ПО

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

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

Ускоренные циклы разработки

Shift-left-тестирование фактически ускоряет процесс разработки. Оно помогает выявлять и устранять баги на ранних стадиях, что избавляет от необходимости их исправления в уже готовом продукте. И это значительно экономит время.

Снижение затрат

Чем раньше обнаружена ошибка, тем меньше времени тратится на переписывание кода и тем ниже стоимость ее исправления. Согласно исследованиям Systems Sciences Institute at IBM, стоимость исправления ошибки, обнаруженной после развертывания ПО, в четыре-пять раз больше той, что была обнаружена на этапе разработки, и в 100 раз выше, если она выявлена уже на стадии эксплуатации.

стоимость исправления багов

Как внедрить shift-left-тестирование

цикл разработки с shift-left

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

Сотрудничество – ключевой момент

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

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

Внедрение централизованной системы для коммуникации, обеспечивающей обмен информацией и взаимодействие между всеми заинтересованными сторонами, является отправной точкой при внедрении shift-left-тестирования в вашей команде.

Внедряйте автоматизацию

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

Например, при разработке SaaS-решения (Software as a Service) в области здравоохранения было бы сложно и затратно по времени охватить все сценарии и модули только с помощью ручного тестирования. В этом случае лучше использовать автоматизированное регрессионное тестирование, в котором будут выполняться sanity и smoke-тесты.

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

Непрерывная интеграция и непрерывное развертывание (CI/CD)

Непрерывная интеграция и непрерывная доставка/развертывание (CI/CD) – это инструменты и методы для автоматизации, ускорения и оптимизации жизненного цикла разработки программного обеспечения (SDLC). В сочетании с тестированием они повышают гибкость, адаптивность и способность компании быстро учитывать требования бизнеса.

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

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

Для более эффективного внедрения shift-left-тестирования необходимо также использовать инструменты оркестрации тестов (например, Jenkins). Такие инструменты ускоряют автоматическое выполнение тестов и позволяют создавать эффективные CI/CD.

Безопасный и качественный код в приоритете

Shift-left-тестирование требует от разработчиков с самого старта проекта  сосредоточиться на создании качественного и безопасного кода. Не стоит писать код как получится, лишь бы успеть до дедлайна. Думайте о том, как он потом будет поддерживаться, масштабироваться и обеспечивать безопасность.

Код-ревью – это критически важный процесс для обеспечения высокого качества и безопасности. При shift-left-тестировании нужно проводить код-ревью постоянно, а не только в конце разработки. Используйте инструменты статического анализа и проверяйте код вместе с коллегами, чтобы выявить баги, которые вы могли пропустить. Чем быстрее вы обнаружите и устраните ошибку, тем меньше времени потеряете.

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

Shift-left – это не только изменение процессов, но и изменение мышления и подхода к разработке

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

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

Перевод статьи «Shift Happens: Beyond The Buzzword, What Is Shift-Left Testing?».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *