![](https://habrastorage.org/getpro/habr/upload_files/dab/ba3/f71/dabba3f71473af2cd8f919752aeaea68.png)
Модель
Пирамида автоматизации тестирования Майка Кона помогла многим командам с начала 2000-х годов.С тех пор мы немного подкорректировали её, чтобы уточнить наши цели, добавили облако сверху, чтобы показать, что не все регрессионные тесты можно автоматизировать. Иногда нам нужны тесты, ориентированные на человека, которые включают в себя исследовательские тесты (ИТ - exploratory tests).Мы рассматриваем их как инструмент размышлений, который поможет командам создать эффективную стратегию автоматизации тестирования.
Эта модель помогает командам понять, что в большинстве случаев стоит автоматизировать тесты на максимально детализированном уровне приложения, чтобы обеспечить адекватную защиту от нестабильности при проверке регрессии. Команды, которые практикуют разработку на основе тестов (TDD), создают прочную базу тестов на уровне юнит и компонентных тестов, которые помогают управлять дизайном кода. В большинстве случаев команды хотят иметь наибольшую долю своих автоматизированных тестов на самом низком уровне пирамиды. Они тестируют функциональность для крошечных участков кода. Тесты удваиваются, так как используются макеты и заглушки для того, чтобы тесты не обращались к внешним компонентам или базам данных. Такие тесты выполняются очень быстро, поэтому они дают команде быструю обратную связь. Как только члены команды научатся писать тесты на этом уровне, их будет легко и быстро писать, и поддерживать.
В большинстве приложений требуется тестирование взаимодействий между различными уровнями архитектуры. Например, бизнес-логика обычно требует взаимодействия с базой данных. Автоматизация этого типа на уровне сервиса, API или сервисов без использования пользовательского интерфейса обычно является наиболее эффективным способом. Примечание: не все тесты на уровне API должны касаться базы данных.
Некоторые ошибки регрессии возникают только при наличии двух или более уровней приложения. Для этого могут потребоваться тестирование приложения через пользовательский интерфейс, которые включают сервер, базу данных и/или внешнюю систему. В большинстве случаев лучше минимизировать количество end-to-end тестов. Эти тесты проводятся медленно, часто являются наиболее хрупкими и обычно требуют наибольшего обслуживания. Облако в верхней части пирамиды включает в себя действия, ориентированные на человека, такие как исследовательское тестирование и другие задачи, которые не могут быть автоматизированы.
Пирамида автоматизации тестирования помогает нам думать о способах «проталкивания тестов ниже», максимизировать регрессионные тесты, которые изолированы от одной части приложения, и минимизировать те, которые включают несколько частей системы. Это не подразумевает каких-либо конкретных чисел или процентов тестов на каждом уровне.
Ключом к успеху в автоматизации является вовлечение всей команды в разработку стратегии удовлетворения различных потребностей в автоматизации и ее реализации. Пирамида автоматизации тестирования — это визуальная модель. Она служит инструментом мышления, чтобы вести разговоры о том, как ваша команда хочет автоматизировать тесты.
Сотрудничайте
Когда ваша команда начнет планировать новую фичу, нарисуйте пирамиду (да, это действительно треугольник) на белой доске, флип-чарте или интерактивной белой доске, такой как доска Miro. Обсудите, какие тесты могут потребоваться, и на каком уровне вы хотите их автоматизировать. Разговор может превратиться в то, кто должен выполнять такие задачи автоматизации.
Мы призываем команды разделить ответственность за тестирование бизнес-правил и более высокие уровни интеграции на уровне API. Тестировщики также должны иметь доступ к модульным и компонентным тестам, написанным разработчиками. Как члену команды, вам важно понимать приложения и внутреннюю работу вашей команды при подготовке вашей стратегии автоматизации.
Поскольку автоматизация тестов через пользовательский интерфейс, как правило, занимает больше времени, возникает соблазн передать это отдельной команде по автоматизации или заставить тестировщиков взять на себя полную ответственность за это. Мы рекомендуем разработчикам, которые хорошо пишут эффективный, поддерживаемый код, работать вместе с тестировщиками, которые хорошо определяют тест-кейсы, чтобы автоматизировать тесты через пользовательский интерфейс, а также все другие слои выше базового уровня пирамиды. Если тестировщики и программисты работают в парах или в группах для автоматизации тестов, это экономит время. Ваша команда будет наслаждаться более продуманными тестами, результатам которых вы можете доверять.
Визуализируйте
Помните, как и все остальные модели, пирамида автоматизации тестирования является ориентиром. Адаптируйте её, если это необходимо, в соответствии с контекстом вашей команды. Команды, которые объединяют участников всех ролей, чтобы задавать вопросы, общаться в чате, рисовать на доске и проводить эксперименты по дизайну, добиваются наибольшего успеха с автоматизацией. Визуальные модели помогают командам рассказать о том, почему они автоматизируют тесты, каковы их самые большие проблемы в автоматизации, чем могут помочь люди с разными навыками и какими должны быть их следующие эксперименты. По нашему опыту, лучше всего работает пошаговый подход.