Текстовый курс по DevOps
Зачем вашей организации DevOps автоматизация тестирования?
Если в вашем подразделении поставки ПО до сих пор нет надёжной автоматизации тестирования, разработка и тестирование явно работают в отрыве друг от друга. Разработчики узнают о качестве своей работы слишком поздно, когда уже заняты другими задачами. Они часто не видят связи между дефектами и кодом, который написали или не написали. Чтобы вернуться к обстоятельствам, в которых возник дефект, приходится переключаться между задачами, а это снижает производительность. Когда обратная связь запаздывает, связь между системами и дефектами становится сложной и неясной. Рассчитывать на качественное исправление без обходных решений тогда трудно.
Без автоматизации тестирования вашей организации DevOps потребуется больше времени и денег на поставку качественных продуктов и услуг. Для технологической организации XXI века такая бизнес-модель не масштабируется независимо от сферы деятельности.
Тесты можно автоматизировать,
а создавать качество по-прежнему должны люди
Команде DevOps следует автоматизировать как можно больше тестов. Тестирование можно автоматизировать, но способность команды мыслить и создавать качественные решения — нельзя. Не расходуйте время специалистов на повторяющуюся и воспроизводимую работу, которую может выполнить ПО.
Принципы эффективной автоматизации тестирования в DevOps
- Автоматизация тестирования должна обеспечивать быструю и своевременную обратную связь о качестве вашей работы.
- Тесты должны давать согласованные, детерминированные и воспроизводимые результаты, если условия разных запусков одинаковы.
- Тесты не должны давать ложноположительные результаты.
- Небольшое число надёжных автоматизированных тестов лучше большого числа ненадёжных ручных тестов, которые при одинаковых условиях разных запусков могут давать разные результаты.
- Сначала автоматизируйте проверку ключевых функций и возможностей, которые системы предоставляют внутренним и внешним клиентам. Даже этот уровень автоматизации намного лучше её полного отсутствия.
- Затем автоматизируйте как можно больше тестов, чтобы как можно эффективнее использовать время и знания участников команд DevOps.
- При автоматизации тестирования избегайте медленной и периодической обратной связи. Вам нужна быстрая обратная связь при каждой попытке вашей или другого разработчика внести код в основную ветку.
- Если автоматизированные тесты работают недостаточно быстро, найдите способ ускорить тесты или само ПО. Это важно и для надёжности платформы непрерывной поставки и конвейера развёртывания, и для высокого качества обслуживания клиентов. Чтобы ещё больше ускорить тесты, выполняйте их параллельно.
- Рассмотрите разработку через тестирование. Сначала напишите автоматизированные тесты, затем создавайте ПО.
Автоматизация тестирования — основа непрерывной поставки и конвейера развёртывания
Как мы уже обсуждали, DevOps позволяет разработчикам развёртывать свой код в рабочих системах. Однако наблюдения за первыми командами DevOps в организациях показали, что разработчики быстро вносят код в основную ветку и закрывают задачи и обращения, но неохотно нажимают кнопку выпуска в рабочую среду. Они боятся нарушить её работу и оказаться виноватыми.
Разработчики смогли преодолеть этот страх только после того, как команды DevOps обеспечили всестороннее и надёжное покрытие автоматизированными тестами.
Например, когда разработчик Google вносит код в основную ветку, после первоначальных проверок, таких как статический анализ кода, поиск дублирования и анализ покрытия, изменения проходят почти миллион автоматизированных тестов. Если все проверки и тесты пройдены, сборку создают из основной ветки, развёртывают в рабочей среде и копируют на остальные рабочие серверы. Примерно так 5,000 небольших независимых команд Google сохраняют продуктивность и выполняют десятки тысяч развёртываний каждый день. Без автоматизации тестирования это было бы невозможно.
Быстрая и надёжная обратная связь — единственный способ обеспечить безопасность и целостность конвейера развёртывания. Когда конвейер останавливается из-за сбоя автоматизированных тестов, команда DevOps исправляет ошибочный код и конфигурацию до внесения любой другой работы в основную ветку. Если в конвейере обнаруживается ошибка, которую можно было заранее выявить и предотвратить автоматизированным тестом, создайте такой тест и добавьте его в репозиторий автоматизированных тестов.
Какие виды тестирования можно автоматизировать
- Модульные тесты Проверяют отдельные функции, классы или модули приложений.
- Приёмочные тесты Проверяют функции и возможности, которые приложения предоставляют клиентам.
- Интеграционные тесты (тесты сервисов) Проверяют взаимодействие приложений и работу всей цепочки сервисов.
- Тестирование производительности и стресс-тестирование Проверяет, как сервисы масштабируются или не масштабируются при ожидаемой и непредвиденной нагрузке клиентов. Это особенно важно для самых востребованных сервисов.
- Нефункциональные тесты Проверяют безопасность, доступность, ёмкость и масштабируемость.
Если команде трудно автоматизировать модульные и приёмочные тесты и приходится в основном полагаться на автоматизированные интеграционные тесты, вероятно, ваша архитектура тесно связана. Найдите способы ослабить связи между её элементами.
ВЫВОДЫ
В этой главе мы рассмотрели, почему автоматизация тестирования важна в DevOps. Она помогает поставлять ПО быстро и безопасно.
Независимо от того, внедряет ваша организация DevOps или нет, без автоматизации тестирования невозможно создать успешное, продуктивное и прибыльное ИТ-подразделение мирового уровня, которое хорошо обслуживает внутренних и внешних клиентов.
