Я просто хотел добавить и дать больше контекста о том, почему у нас есть эти уровни тестирования, что они действительно означают с примерами
Майк Кон в своей книге «Успех с Agile» придумал «Пирамиду тестирования» как способ приблизиться к автоматизированным тестам в проектах. Существуют различные интерпретации этой модели. Модель объясняет, какие виды автоматических тестов необходимо создавать, как быстро они могут дать отзыв о тестируемом приложении и кто пишет эти тесты. В принципе, для любого проекта необходимо 3 уровня автоматического тестирования, и они заключаются в следующем.
Модульные тесты
тесты - это тестирование самого маленького компонента вашего программного приложения. Это может быть буквально одна функция в коде, которая вычисляет значение на основе некоторых входных данных. Эта функция является частью ряда других функций аппаратной / программной кодовой базы, составляющей приложение.
Например, давайте возьмем приложение для веб-калькулятора. Наименьшими компонентами этого приложения, которые должны быть проверены модулем, может быть функция, которая выполняет сложение, другая функция, которая выполняет вычитание и так далее. Все эти маленькие функции вместе взятые составляют приложение калькулятора.
Исторически разработчик пишет эти тесты, так как они обычно пишутся на том же языке программирования, что и программное приложение. Для этой цели используются платформы модульного тестирования, такие как JUnit и NUnit (для java), MSTest (для C # и .NET) и Jasmine / Mocha (для JavaScript).
Самым большим преимуществом модульных тестов является то, что они работают очень быстро под пользовательским интерфейсом, и мы можем быстро получить отзыв о приложении. Это должно составлять более 50% ваших автоматических тестов.
API / интеграционные тесты
они тестируют различные компоненты системы программного обеспечения вместе. Компоненты могут включать тестирование баз данных, API (Application Programming Interface), сторонних инструментов и сервисов вместе с приложением.
Например - в нашем примере калькулятора, приведенном выше, веб-приложение может использовать базу данных для хранения значений, использовать API для выполнения некоторых проверок на стороне сервера и может использовать сторонний инструмент / службу для публикации результатов в облаке, чтобы сделать их доступными для разных платформ.
Исторически разработчик или технический QA писал бы эти тесты, используя различные инструменты, такие как Postman, SoapUI, JMeter и другие инструменты, такие как Testim.
Они выполняются намного быстрее, чем тесты пользовательского интерфейса, поскольку они все еще выполняются под капотом, но могут занимать немного больше времени, чем модульные тесты, поскольку он должен проверять связь между различными независимыми компонентами системы и обеспечивать их бесшовную интеграцию. Это должно составлять более 30% автоматизированных тестов.
Тесты пользовательского интерфейса.
Наконец, у нас есть тесты, которые проверяют пользовательский интерфейс приложения. Эти тесты обычно пишутся для тестирования сквозных потоков через приложение.
Например - В приложении калькулятора сквозной поток может быть следующим: открытие браузера-> Ввод URL-адреса приложения калькулятора -> Вход в систему с именем пользователя / паролем -> Открытие приложения калькулятора -> Выполнение некоторых операций над калькулятором -> проверка этих результатов из пользовательского интерфейса -> Выход из приложения. Это может быть сквозной поток, который будет хорошим кандидатом для автоматизации пользовательского интерфейса.
Исторически, технические QA или ручные тестеры пишут тесты пользовательского интерфейса. Они используют платформы с открытым исходным кодом, такие как Selenium или платформы тестирования пользовательского интерфейса, такие как Testim, для создания, выполнения и сопровождения тестов. Эти тесты дают больше визуальной обратной связи, поскольку вы можете видеть, как проходят тесты, разницу между ожидаемыми и фактическими результатами с помощью скриншотов, журналов, отчетов о тестах.
Самое большое ограничение тестов пользовательского интерфейса, они относительно медленны по сравнению с тестами уровня и уровня API. Таким образом, он должен составлять всего 10-20% от всех автоматизированных тестов.
Следующие два типа тестов могут варьироваться в зависимости от вашего проекта, но идея заключается в том,
Тесты дыма
Это может быть комбинацией вышеуказанных 3 уровней тестирования. Идея состоит в том, чтобы запускать его во время каждой регистрации кода и гарантировать, что критические функции системы по-прежнему работают должным образом; после изменения нового кода объединяются. Как правило, они должны работать в течение 5-10 минут, чтобы получить более быструю обратную связь о сбоях
Регрессионные тесты
Они обычно запускаются как минимум раз в день и охватывают различные функции системы. Они гарантируют, что приложение все еще работает как ожидалось. Они более подробны, чем дымовые тесты, и охватывают больше сценариев применения, включая некритические.