banner

Блог

May 31, 2023

Эффективные подходы к автоматизации тестирования для современных конвейеров CI/CD

Домашняя страница InfoQ Статьи Эффективные подходы к автоматизации тестирования для современных конвейеров CI/CD

Этот товар на японском языке

31 мая 2023 г., чтение на 20 минут

к

Крейг Ризи

рассмотрено

Мэтт Кэмпбелл

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

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

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

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

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

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

ДЕЛИТЬСЯ