Разделы портала

Онлайн-тренинги

.
8 привычек успешной команды, практикующей непрерывное тестирование
06.10.2021 00:00

Автор: Eran Kinsbruner
Перевод: Татьяна Рыжова, тренер курса Английский для тестировщиков

Перед тем, как познакомиться с эффективной стратегией непрерывного тестирования, следует разобраться в том, что есть такое “непрерывное тестирование”? Ниже - определение, которое мне особенно импонирует:

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

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

Почему непрерывное тестирование необходимо?

Если посмотреть на разработку, например, мобильных приложений, мы увидим многообразие их форм,  от прогрессивных веб приложений до нативных приложений. Разнообразие это, конечно, хорошо, но это значительно усложняет процесс тестирования. Только непрерывное тестирование обеспечивает достаточно полное тестирование  приложений, так как оно может адаптироваться к любым изменениям. Agile (гибкие методики) позволяют командам “сдвигаться влево”, то есть находить и решать проблемы на более ранних стадиях разработки. Согласно идее Дэна Эшби, основанием непрерывного тестирования является тестирование на каждой стадии конвейера разработки. Когда тестирование начинается рано и проводится часто, команда может  успешно “сдвигаться влево” (shift left). Вы спросите, зачем это нужно? Вот несколько веских причин:

  • в долгосрочной перспективе стоимость разработки приложений сокращается.
  • это способствует достижению целей Agile/DevOps.
  • поддержание кода и качества становится намного проще.

Непрерывное тестирование - комплексный процесс

Чтобы убедиться в том, что тесты отвечают потребностям команды разработки, тестировщики, так же как и разработчики, должны задать и ответить на  следующие вопросы:

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

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

1. Подбирайте инструменты и методы работы, подходящие конкретно вашей команде.

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

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

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

2. Автоматизируйте нужные тесты.

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

Для того, чтобы выяснить, какие именно тесты автоматизировать, сначала нужно убедиться в следующем:

1.  данные тесты легко автоматизировать

2.  данные тесты легко поддерживать.

Даже если вы МОЖЕТЕ автоматизировать все тесты, НЕ  СЛЕДУЕТ этого делать. Все, что подвергается автоматизации, необходимо обслуживать, независимо от каких-либо последующих изменений продукта.

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

Выбирая тесты для автоматизации, действуйте стратегически. Таблица, представленная ниже, оценивает разные фичи приложений по четырем критериям: критичность/регулярность теста (Critical/Freq.), правовые аспекты (Legal), необходимость данных тестирования (Data/Env.) и возможность повторного использования теста (Reuse).


3. Запускайте тесты параллельно

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

Общаясь со своими заказчиками в Perfecto, я понял, что многие из них хотят “переехать” в облако, чтобы ускорить циклы релизов, покрыть больше платформ одновременно (как веб так и мобильных), и получать быструю обратную связь от проверки. Без параллельного тестирования практически невозможно обеспечить выполнение тестов на каждом новом мобильном устройстве, операционной системе или в браузере, т.к. запуск каждого теста по отдельности занимает слишком много времени.

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

4. Интегрируйте, интегрируйте, интегрируйте

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

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


5. Конвейер автоматизации должен быть прочным

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

Один из наиболее запомнившихся мне заказчиков мог обрабатывать 7 параллельных пул-реквестов в день. Его команда решила выделять 10 минут на цикл обратной связи по пул-реквесту.

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

Допустим, вам также нужно запустить регрессионные тесты для сборок, которые вы сделали ранее в этот же день. Используйте автоматизацию.Что касается заказчика, который проверял по семь пул-реквестов ежедневно, они каждую ночь запускают автоматизированные регрессионные тесты на 80% наиболее популярных платформ, на реальных устройствах.

Короче говоря, вводить автоматизацию НЕОБХОДИМО, чтобы ваш конвейер тестирования работал эффективно и без перебоев.

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

6. Конвейер непрерывной интеграции должен содержаться в чистоте и быть “зелёным”

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

Не тратьте деньги впустую. Следите за состоянием вашего конвейера непрерывной интеграции (CI).

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

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

Нестабильная сборка, даже при относительно малом количестве ошибок, увеличивает время работы. Вы рискуете потерять сотни долларов (может быть и больше!) после нескольких  таких неудачных циклов сборки.

Не теряйте деньги. Держите свой конвейер непрерывной интеграции под контролем.

7. Критически анализируйте сбои тестирования

Если тесты часто проваливаются, убедитесь, что ваша стратегия непрерывного тестирования отвечает вашим целям.

Вопросы для самоконтроля:

1.  Много ли уже было случаев сбоев, намекающих на ненадежность ваших тестов? Если да, исключите их и займитесь отладкой  как можно скорее.

2.  Приносят ли ваши тесты пользу?

3.  В чем причина проблем? Она кроется в продукте или в процедуре сборки или в тестах?

4.  Отношусь ли я к коду тестов так же внимательно, как к рабочему коду продукта?

5.  Правильно ли я изменяю и версионирую код тестов?

6.   Следуем ли мы практикам разработки скриптов чтобы избежать:

  • Проблем с безопасностью?
  • Сообщений типа “element not found”?
  • Проблем, связанных с конкретной платформой?

8. Проводите количественную оценку и все время старайтесь что-то улучшить!

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

Занимаясь непрерывным тестированием, старайтесь следить за тем, контролируете ли вы свои трудозатраты. Вот несколько способов:

  • дашборды по проблемам с платформами
  • повторяющиеся сбои или дефекты
  • дашборды по непрерывной интеграции
  • тепловая карта кликов тестовых наборов

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

Подведем итог

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

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

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

Понравилась статья? Подписывайтесь на мои публикации на Medium чтобы не отставать от тенденций автоматизации тестирования и разработки приложений.

This article was originally published by Eran Kinsbruner of Perfecto and has been translated from its original English.

Обсудить в форуме