Инструменты и фреймворки QA, которые (не) нужно знать
Узнали у опытных тестировщиков, какие инструменты и фреймворки QA стоит знать в 2024 году, а какие безнадёжно устарели.
4К открытий13К показов
Узнали у опытных тестировщиков, какие инструменты и фреймворки QA стоит знать в 2024 году, а какие безнадёжно устарели.
Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики.
Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.
Никита Любимов
Head of QA в QTIM
Сложно сказать, какие инструменты и технологии для тестирования устарели. Зачастую устаревшим считается то, что больше не поддерживается. Тут могу отметить только HP loadrunner.
Глобально QA делится на три основных направления: ручное тестирование, автоматическое тестирование, нагрузочное тестирование. И для каждого этого типа есть свой набор инструментов и библиотек к разным языкам.
Для начала обучения на QA сначала стоит определится с направлением в котором хочется работать:
- QA manual (ручное тестирование). Нужно выбрать направление, в котором будете работать, чаще всего это веб. Для веба обучение лучше начать с протоколов и архитектуры приложений. После чего исследовать функции Devtools в разных браузерах, а также postman или аналоги, после чего можно посмотреть расширения для браузеров которые упрощают работу.
- QA automation (автоматизированное тестирование). Если выбрать веб, то изначально стоит изучить selenium, т.к. на этом фреймворке основано много других. Здесь стоит понимать что требуется владения языком программирования. После изучение основ, выбрать фреймворк, который будет изучаться дальше.
- QA performance (нагрузочное тестирование). На начальном этапе нужно изучить jmeter. На это есть две причины: он проще остальных, он всегда работает. После этого можно изучать уже другие инструменты для нагрузки, параллельно исследовать инструменты для мониторинга сервера.
Ручное тестирование
Для ручного тестировщика важно знать, как работает то, что он тестирует. Тестировщику в компании, которая занимается разработкой сайтов, важно знать, как строится архитектура приложения, какая модель разработки используются, какие технологии используются в продукте. Также стоит изучать инструменты, с помощью которых он сможет проверить те или иные части продукта. Однако тут мы уходим еще дальше, потому что нужно понимать тестируется фронт или бэк. Если речь идет о приложении на RESTful api, то в список на тестирование может добавится еще и мобильное приложение.
Frontend
Для тестирования фронтенда тестировщику нужно знать все функции DevTools в браузерах, понимать как работает вкладка Network. Application, Console, Elements. Как сохранить лог XHR запросов, чтобы предоставить разработчику в случае необходимости. Здесь стоит отметить также вкладку Recorder, она появилась не так давно и нацелена больше на автоматизаторов, но благодаря ей тестировщик сможет записать последовательность действий для сложных кейсов. Плюсом для тестировщика фронтенда будет знание таких инструментов, как Figma и Perfect Pixel.
Умение пользоваться Figma тестировщику позволит экспортировать макеты для дальнейшей сверки верстки компонентов сайта на соответствие с макетом с помощью Perfect Pixel.
Backend
Если посмотреть на бэкэнд RESTful api приложения, то здесь набор инструментов для ручного тестировщика будет также не очень широкий: Postman, Insomnia, SoapUi. Postman покрывает 99% потребностей ручного тестировщика за счет того, что поддерживает разные сетевые протоколы: GrapghQL, gRPC, WebSocket/Socket.IO, MQTT. Некоторые приложения использует WebSocket или Socket.IO, поэтому тестировщику желательно знать, как работают такие протоколы.
Базы данных
Следующий этап – базы данных. Тестировщик только смотрит данные, поэтому для этой задачи подойдет любой инструмент. Например, DataGrip от jetbrains, но базовые знания работы в SQL также пригодятся.
Если говорить про ручных тестировщиков, которые тестируют мобильные приложения, то тут для начального уровня достаточно знать ADB (android device bridge) для Android, и Консоль MacOs для iOS. В некоторых случаях пригодится и снифер трафика, такой как Charles или Fiddler.
С повышением квалификации ручной тестировщик будет изучать новые инструменты. Бывает так, что проект надо запустить локально, здесь уже понадобятся базовые знания Git и docker. Например, знание IDE для разработок также понадобятся независимо от того, будет это фронтенд, бекенд, или мобильное приложение.
QA automation
Тестировщик, который хочет занять позицию QA automation, должен знать на порядок больше. Я считаю, что автоматизатор должен не только знать язык программирования, но также понимать и использовать основные паттерны программирования. Автоматическое тестирование похоже на написание скриптов, но все же это программирование, в котором хочется избежать переиспользования кода, описание одного и того элемента на разных страницах, использовать роли и т.д.
Определится с языком программирования и стеком технологий — это первая задача для автоматизатора. Я предпочитаю выбирать тот же язык программирования, что и используется на проекте. Хотя, по данным QA Job, в России чаще всего выбирают Java (35,5%), python(30,7%), JS/TS(6,7%). Для каждого языка есть встроенные ранеры тестов, с помощью которых можно проверить, например, Junit, PyTest, Jest. Чаще с их помощью пишут unit-тесты, но их также можно использовать для автоматизации тестирования API приложений. Но выбор фреймворков здесь зависит от выбора языка программирования.
В базу я бы выделил то, что используется на разных языках программирования:
- Selenium WebDriver – основной фреймворк для написания тестов, использующий браузер.
- Git – для контроля версий тестов.
- Alure – для хранения отчетов в тестах.
- Appium – для автоматизации мобильных приложений.
Дальше все зависит от выбранного языка
- Java
- Maven
- Junit
- Python
- Pytest
- JS/TS
- Node.js
- Jest
Эта база поможет дальше выбрать то направление в автоматизации, которым хочется заниматься тестировщику. Помимо этого, можно использовать фреймворки, которые чаще на слуху такие как playwright, selenoid, Cypress, vitest, webdriverio, nightwatch js, test cafe, Puppeteer.
Дальше автоматизатор вырастает и сталкивается с проблемами прогона тестов при деплое, при пулл-реквестах. Здесь уже автоматизатору понадобятся инструмента для непрерывной интеграции и автоматической сборке проектов, такие как Jenkins, github Action, gitlab CI/CD.
Нагрузочное тестирование
Для тестировщиков, которые занимаются изучением нагрузки на проект или производительности проекта, отлично подойдут инструменты и фреймворки, которые помогают нагрузить проект и посмотреть данные о нем. Для мониторинга сервера самого приложения используются такие инструменты, как Grafana в связки с node exporter. Для каждого фреймворка также доступен свой экспортер. С мониторингом самого приложения поможет Opentelemetry + Jaeger, покажут, куда идут запросы в приложении. Если в приложении посыпались ошибки, то отследить их поможет сентри.
Для нагрузочного тестирования тестирования QA подойдут следующие инструменты:
- Jmeter
- Locust
- k6.io
- Gatling
- artillery.io
Каждый инструмент имеет свои преимущества и сложность использования, а также направление, для которого он будет использоваться. Для сценарного тестирования хорошо подойдет Jmeter, Locust, k6.io, Gatling. Здесь стоит выделить k6.io, так как это один из фреймворков, который позволяет не только составить сценарий тестирования, но и использовать при этом WebSocket.
Artillery.io намного проще при состалении теста, и позволяет работать с WebSocket, но с ним тяжело составлять сценарии, когда каждый последующий запросы используют результаты предыдущего запроса.
Я намеренно не указал ни одну систему для управления тестированием (TestLink, TestRail, qTest), или систему для управления проектами (YouTrack, Trello, Jira), так как считаю что тестировщики даже ручные – это те люди которые должны уметь быстро разобраться в новом для себя продукте, понять как он работает, и как с ним управляться.
Александр Ткачёв
Старший инженер по автоматизированному тестированию ГНИВЦ
Рассмотрим, какие фреймворки и инструменты для тестирования наиболее популярны в настоящее время и за какими технологиями видится будущее. Мы также рассмотрим, какие инструменты начинают устаревать или терять свою популярность в быстро меняющейся среде тестирования.
Языки программирования
По данным сайта QA Job Stat самыми популярными языками программирования являются:
- Java;
- Python;
- Java Script;
- C#.
У каждого языка есть множество популярных инструментов тестирования. Которые мы рассмотрим ниже.
Также стоит обратить внимание на:
- Go;
- Kotlin;
- Scala.
Они подойдут для бэкендовых тестов, ведь скорость тестов на них быстрее чем на Java и Python.
Функциональное тестирование
Для Java и Python, популярными фреймворками являются:
- Pytest;
- Junit;
- TestNG.
Key Driven и BDD
BDD (разработка на основе поведения) - это Agile практика раннего тестирования (test-first), которая обеспечивает встроенное качество, определяя (и потенциально автоматизируя) тесты до или в рамках описания поведения системы. Суть подхода заключается в описании желаемого поведения приложения с помощью спецификации, обычно с помощью конструкций человеческого языка.
- Cucumber;
- Robot_Framework;
- SpecFlow.
Также стоит упомянуть фреймворки, являющиеся частью проекта Cucumber для разных языков программирования:
- Behave;
- Codeception;
- Catch.
Тестирование Web UI
В связи с большим развитием тестирования веб-приложений, здесь особенно много популярных инструментов:
- Selenium;
- Selenide;
- Playwright;
- Selenoid.
Особенно популярен Selenium. Он широко применяется среди тестировщиков и имеет широкое сообщество, в то время как Playwright является новым инструментом, но предлагает передовые возможности. Selenoid - динамическое окружение для выполнения браузерных автотестов, где поднимаются docker-контейнеры с требуемым браузером и требуемой версией, выполняются тесты, контейнер сворачивается.
Тестирование мобильных приложений
- Appium
- Espresso
- XCTest
Appium – флагман в тестировании мобильных приложений. Он поддерживает автоматизацию на популярных платформах, таких как iOS и Android. Appium обеспечивает возможность написания тестов на различных языках программирования и интеграцию с различными тестовыми фреймворками, делая его мощным инструментом для тестирования. Помимо мобильных ОС, у Appium есть поддержка macOS, Windows, Linux.
Тестирование производительности
Самыми популярными являются:
- JMeter;
- LoadRunner;
- Locust;
- Gatling.
Каждый из этих инструментов имеет свои сильные и слабые стороны, и выбор между ними зависит от конкретных потребностей проекта, предпочтений команды и доступных ресурсов.
Средства мониторинга
- Grafana;
- Prometheus;
- ClickHouse;
- Zabbix.
Системы управления тестированием, багтрекеры, вики и т.д.
- Atlassian Jira и Confluence;
- Yandex Tracker;
- Kaiten;
- EvaProject;
- TestRail;
- Allure TestOps;
- TestIt.
Продукты Atlassian включают Jira (для управления проектами и задачами), Confluence (для совместной работы над документацией), Bitbucket (для управления версиями кода и совместной разработки), Bamboo (для непрерывной интеграции).
Системы контроля версий
- Git;
- SVN;
- Mercurial.
Можно однозначно сказать, что есть Git, а есть остальные, настолько популярна система.
Системы CI/CD
Обычно в компании уже развернута какая-то система непрерывной интеграции и скорее всего там будет стоять, что-то из этого:
- GitLab;
- Jenkins;
- TeamCity.
Раньше пользовались большой популярностью, а сейчас начинают сдавать позиции:
- Язык программирования Ruby;
- Багтрекер Redmine;
- Инструмент web-тестирования Selenium IDE;
- Система контроля версий TFS;
- SoapUI для Api-тестирования;
- Фреймворк для автоматизации тестирования Cypress.
Ну а будущее видится в более широком применении AI в тестировании, например с помощью применения LSTM и LLM-нейронных сетей можно ожидать улучшенное обнаружение и прогнозирование дефектов, высокую адаптивность тестов, оптимизацию тестовой среды.
Руслан Мурадов
QA Teams Lead, SberDevices
Устаревшие:
- Некоторые старые фреймворки для тестирования, такие как Selenium WebDriver, могут постепенно терять свою популярность из-за появления более современных и удобных альтернатив.
- Многие устаревшие библиотеки для автоматизации тестирования, которые не поддерживаются сообществом или не предоставляют новых функциональных возможностей, также могут уйти на задний план.
Новые библиотеки QA в 2024 году:
- Каркасы и инструменты для тестирования микросервисов, такие как Karate, Rest Assured, WireMock, пользуются растущей популярностью.
- Инструменты для автоматизации тестирования API, такие как Postman и Swagger, становятся неотъемлемой частью стека инструментов QA.
- Библиотеки и инструменты для тестирования безопасности, такие как OWASP ZAP и Burp Suite, также становятся все более востребованными.
Новые фреймворки QA в 2024 году:
- Фреймворки для тестирования мобильных приложений, такие как Appium и Espresso, остаются актуальными и даже усовершенствуются.
- Инструменты для тестирования контейнеризированных приложений и оркестраторов, такие как Kubernetes, Docker и Helm, также предоставляют свои собственные фреймворки и инструменты для автоматизации тестирования.
Новые инструменты QA в 2024 году:
- Инструменты для тестирования нагрузки и производительности, такие как JMeter, Gatling и Locust, становятся все более важными в условиях растущей сложности архитектуры приложений. Я также рекомендую ознакомиться с Vegeta для http и GHZ для gRpc
- Инструменты для тестирования безопасности API и веб-приложений, такие как OWASP ZAP и Burp Suite, предоставляют новые возможности для обнаружения и устранения уязвимостей.
Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики.
Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.
4К открытий13К показов