Тестируйте как Google: передовой опыт отраслевых гигантов (04.26.24)

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

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

Как они организуют рабочий процесс с тысячами инженеров по обеспечению качества?

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

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

Давайте подробнее рассмотрим, как тестируют гиганты.

Google: важность покрытия кода

Тем не менее, многие инженеры спорят о важности такого показателя эффективности тестирования программного обеспечения как покрытие кода. Специалисты Google настаивают на том, что данные о покрытии кода могут быть ценной информацией для оценки рисков и узких мест при тестировании. Карлос Аргуэльес, Марко Иванкович и Адам Бендер делятся передовыми методами покрытия кода:

  • Покрытие кода может помочь уменьшить количество ошибок и сбоев. Опыт QA-инженеров из Google показал, что увеличение покрытия кода приводит к изменению подходов и отношения к тестированию. Команды, основной целью которых является покрытие кода, стремятся повысить тестируемость своих продуктов. Они пишут более эффективный код для тестирования, чтобы легче и быстрее достигать целей тестирования.
  • Используйте тестирование мутаций, чтобы обеспечить высокий охват тестированием. Полное покрытие кода может быть расточительным и не гарантирует качественного покрытия тестами. Высокий процент покрытия кода не означает, что все функции были протестированы правильно. Это означает, что код был полностью протестирован. Чтобы обеспечить высокое качество тестового покрытия, специалисты Google рекомендуют использовать мутационное тестирование. Этот метод включает в себя внесение небольших изменений в код и проверку того, как наборы тестов идентифицируют их.
  • Процент покрытия кода зависит от многих факторов. Мы не должны стремиться к высокому покрытию кода, но низкое покрытие также приводит к большому количеству сбоев. И вопрос в том, каково конкретное покрытие кода для конкретной системы? Чтобы ответить на этот вопрос, мы должны рассмотреть такие вещи, как критичность, сложность и частота изменения кода. Покрытие кода - это бизнес-решение, и владельцы продукта должны его определить.
  • Проанализируйте, что охватить. Мы не можем получить 100% покрытие кода, поэтому QA-инженеры должны это учитывать охватываются наиболее ценные части кода. Команда разработчиков должна обсуждать и думать не о том, сколько строк кода покрыто, а о том, что именно покрыто.
Spotify: надежная стратегия

Spotify - быстрорастущая компания. Он был основан в 2008 году со 150 сотрудниками. В 2019 году количество сотрудников выросло до 4 405. Сегодня Spotify обслуживает около 300 миллионов пользователей по всему миру, что делает его самым популярным потоковым сервисом в мире.

Мы можем извлечь уроки о том, как Spotify масштабирует свое тестирование и процессы разработки.

  • Ставить цели для QA-команды. В Spotify работают многофункциональные команды. У каждой команды есть цели и набор определенных навыков для достижения этих целей. Состав команды зависит от целей. Следовательно, некоторые команды состоят только из разработчиков, а некоторые - разработчиков и тестировщиков. Таким образом, тестировщики тесно сотрудничают с командой разработчиков и сосредотачиваются на основных целях продукта. Такой подход позволяет Spotify эффективно масштабировать процесс разработки.
  • Автоматизация тестирования - это инструмент, но не панацея. Менеджер по тестированию и развитию в Spotify Кристиан Карл утверждает, что тестировщиков программного обеспечения нельзя заменить автоматизацией. Тестирование требует человеческого опыта и знаний. Автоматическое тестирование - надежный инструмент для ускорения процесса, но люди принимают решения и анализируют автоматизированные отчеты. Spotify использует автоматизацию как один из инструментов масштабирования. Это позволяет тестировщикам отказаться от рутины алгоритмов и сосредоточиться на целях продукта.
SpaceX: непрерывные испытания необходимы

SpaceX - инновационная компания, известная коммерческими космическими перевозками, многоразовыми системами запуска и высокая эффективность.

Николас Чайллан, директор по программному обеспечению ВВС, сказал, что система отдела разработки SpaceX в пять раз эффективнее, чем у компаний с классическим рабочим процессом. Как SpaceX справляется с процессом тестирования с такой производительностью?

DevOps и Agile подходы позволяют QA-инженерам SpaceX проводить массовое автоматическое тестирование. На протяжении всего цикла разработки тестировщики обеспечивают непрерывное тестирование, чтобы получить мгновенную обратную связь и устранить существующие риски. Таким образом, они работают проактивно, часто и заблаговременно тестируя.

Компания разработала стратегию внедрения непрерывного тестирования в процесс разработки.

  • Расставить приоритеты в отношении ценности. Как и Google, SpaceX рекомендует использовать показатели покрытия кода, чтобы понять, что следует автоматизировать, а что нет. Это помогает оптимизировать непрерывное тестирование и улучшить уже предпринятые действия.
  • Главное - автоматическое сквозное тестирование. Сделайте анализ воздействия частью непрерывной интеграции. Он позволяет компаниям анализировать, как добавление новых функций или изменение кода может повлиять на систему в целом или на некоторые ее части.
  • У команды должна быть стабильная и легко воспроизводимая тестовая среда. Такой инструмент, как Virtual Machine Snapshot, может помочь сохранить состояние данных, вернуться к тестированию или возобновить работу.
  • Используйте искусственный интеллект и машинное обучение для анализа отчетов о тестировании. AI инструменты на основе ускоряют развертывание и оптимизируют процесс тестирования.
  • Создайте надежную архитектуру непрерывной интеграции. Основное преимущество системы CI - короткие периоды между сборкой и тестированием кода . Непрерывное тестирование должно быть вовлечено в процесс разработки и включать необходимые типы тестирования.
  • Подведение итогов

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


    YouTube видео: Тестируйте как Google: передовой опыт отраслевых гигантов

    04, 2024