Пирамида тестирования: для чего нужна и как использовать
Пирамида тестирования: для чего нужна и как использовать
Разбираемся в уровнях классической пирамиды тестирования: юнит-, интеграционных и функциональных тестах. А также рассказываем, как внедрить пирамиду в работу над продуктом.
Пирамида тестирования — это классическая концепция проведения тестов продукта перед запуском. С её помощью можно обеспечить баланс между различными видами тестов и оптимизировать процесс тестирования. Пирамида помогает определить приоритеты проверок, распределить ресурсы и усилия на разных уровнях и обеспечить высокое качество программного продукта.
Самой распространённой считается пирамида из трёх уровней тестирования. На нижнем уровне находятся юнит-тесты, следом идут интеграционные, на вершине находятся функциональные. Некоторые команды используют более подробную пирамиду, которая разделяет сервисное тестирование на интеграционные и системные тесты. В классической пирамиде они объединены во второй интеграционный уровень.
Суть классической пирамиды тестирования: чем выше уровень, тем меньше тестов проводится. В то же время тесты на верхнем уровне сложнее выполнять и поддерживать
Разобраться, для чего нужна пирамида на конкретном проекте, поможет курс «Инженер по тестированию: от новичка до автоматизатора». Занятия позволят освоить регрессионные тесты, тестирование API, веб‑ и мобильных приложений, а также написание автоматических тестов на Java или Python.
Рассмотрим подробнее каждый уровень пирамиды, особенности такого тестирования и примеры тестов.
В основании пирамиды тестирования находятся юнит-тесты, которые пишут разработчики во время написания кода. Они оперируют такими маленькими сущностями, как метод, класс и функция. Это позволяет сразу найти элементарные ошибки.
Возьмём для примера простой калькулятор. Чтобы проверить, что при сложении 2 + 2 в метод передаётся ответ 4, разработчик проводит юнит-тест. Код может быть таким:
Такой тест позволяет обнаружить ошибки в коде: например, что в метод отправляется только одна двойка, а вторая теряется. В этом случае разработчик тестирует, что какой ответ даёт программа.
Разберёмся в плюсах и минусах нижнего уровня пирамиды тестирования.
На втором уровне пирамиды тестирования находятся интеграционные тесты. Они проверяют взаимодействие между несколькими методами. При этом их также пишут разработчики. К примеру, с помощью интеграционных тестов они проверяют, как работают запросы между фронтендом и бэкендом.
Обычно на этом уровне пирамиды тестирования проводится меньше проверок, они исчисляются сотнями. Как правило, для них требуются дополнительные сущности в виде тестового окружения, например базы данных или методы API.
Возьмём для примера простой API, который принимает GET-запрос по адресу http://example.com/api/users и возвращает список пользователей в формате JSON.
Пример интеграционного теста с помощью Postman
У второго уровня пирамиды тестирования есть свои преимущества и недостатки.
Этот уровень пирамиды тестирования включает функциональные, или end-to-end, тесты. В зависимости от сложности продукта таких тестов могут быть десятки или больше сотни. Они имитируют действия пользователя, то есть пошагово проходят его путь и анализируют ответы системы. Как правило, такие тесты автоматические и пишутся тестировщиками.
Возьмём для примера тестирование авторизации на сайте. Автотест открывает браузер, затем сайт находит форму авторизации, вводит валидный логин и пароль, нажимает «Войти» и проверяет, что пользователь попадает, например, на страницу личного кабинета или на главную страницу сайта.
Пример проверки авторизации на верхнем уровне пирамиды тестирования с использованием языка Python и фреймворка Selenium
Функциональные тесты — обязательный этап любого тестирования, но у них есть свои особенности.
Изначально некоторые команды работают без пирамиды тестирования — например, тесты проводятся на уже готовых программах. Это усложняет процесс разработки, в результате чего при обнаружении багов приходится возвращаться к истокам и исправлять элементарные ошибки в коде.
Для того чтобы избежать таких сложностей, нужна пирамида тестирования. В этом процессе могут быть задействованы разные специалисты в зависимости от ролей. Как правило, этим занимается тимлиды разработчиков и тестировщиков.
Процесс проходит в три этапа начиная с основания пирамиды:
Распределение зон ответственности. Этот этап касается второго уровня пирамиды тестирования. Исходя из компетенций и нагрузки необходимо определить, кто будет заниматься написанием интеграционных тестов — это могут быть как разработчики, так и автотестеры. Или различные варианты тестов подразделения могут поделить между собой. При этом важно следить, чтобы проверки второго уровня пирамиды не дублировали юнит-тесты.
Определение критериев тестирования. Финальным этапом занимается исключительно тестировщик. Он изучает бизнес-сценарии и кейсы программы, выставляя им приоритеты. Следом специалист составляет чек-лист регресса — бэклог для задач на покрытие функционала тестами. В зависимости от состояния проекта это могут быть как ручные, так и автоматические тесты.
Построение пирамиды, как и само тестирование, не разовый, а итеративный процесс. По мере развития продукта важно не забывать писать тесты на всех уровнях, авторизировать их и удалять ненужные. То есть необходимо поддерживать пирамиду после её внедрения.
Совет эксперта
Читать также: