Автоматизация тестирования — это процесс создания и запуска тестов с помощью специальных инструментов для проверки функциональности приложения без необходимости в ручном тестировании. Она позволяет сократить время на тестирование и уменьшить затраты, что особенно эффективно при долгосрочном тестировании стабильного продукта. Несмотря на более высокие затраты на начальном этапе, в будущем автоматизация позволяет значительно снизить расходы и ускорить выпуск новых версий.
Преимущества автоматизации:
Основные типы API тестов:
API (Application Programming Interface) — это интерфейс, который позволяет приложениям взаимодействовать друг с другом и обмениваться данными. API обеспечивает стандарты для запросов и ответов, делая интеграцию различных систем быстрой и надёжной.
REST API — архитектурный стиль, основанный на протоколе HTTP, который использует стандартные методы запросов (GET, POST, PUT, DELETE). Форматы данных обычно представлены в JSON или XML. Для тестирования REST API часто используются Swagger и Postman.
Типы API:
RESTful API: популярный тип API, использующий HTTP-запросы для взаимодействия с ресурсами на сервере. Широко применяется благодаря простоте и эффективности.
SOAP API: протокол обмена сообщениями, который использует XML и строгие стандарты безопасности. Обычно используется для сложных корпоративных решений.
GraphQL API: язык запросов, позволяющий клиенту запрашивать только нужные данные. Полезен для оптимизации производительности и гибкости.
REST-ASSURED - это библиотека, с помощью которой мы можем автоматизировать Rest API. Также используется с JUnit или TestNG, паттерн Builder - с его помощью мы можем задать параметры в запрос, тем самым сделав код читабельней.
3 основных Rest-Assured метода:
Given — позволяет узнать, что было передано в запросе.
When — с каким методом и на какой эндпойнт отправляем запрос.
Then — проверяем assertion (это может быть status-code)
.log() — логирование (можно логировать requests и responses, URI, exceptions и т.д.)
Также методы Rest-Assured:
Методы класса Matchers - используются для проверки assert в API ответах, также с помощью отдельного класса Response, с его помощью мы можем проверять статус код, время ожидания, хедеры также.
Query params - метод для передачи параметров.
Content - метод для передачи запроса.
Header, headers - методы для работы с заголовками (header - для установки 1 заголовка, headers - для нескольких).
Extract - метод, чтоб извлечь параметры с хедера.
Jenkins предназначен для Ci CD процесса, для непрерывной интерграции ПО, в этом помогают ему Pipeline(так называемый конвейер). Jenkins одна из лучших тулзов для автоматизации и интегрируется с Docker'ом (там используются ноды, гипервизоры, контейнеры Linux and JailFree).
Также в Jenkins полно плагинов для разных аспектов использования (имеет разные функции).
И также можно планировать тесты по времени (Cron или Jobs), тут используется формат, к примеру 0*** и т.д.
Pipeline - мощный инструмент, который помогает определить и управлять Ci CD процессами. Pipeline использует свой DSL - он существует для создания скриптовых конструкций, которые описывают этапы сборки (сборка,тестирование,доставка ПО).
Он служит для Deploy'я. Показывает потом количество фейлов в тестах, если там % маленький, значит Деплой возможен. Смотря как Pipeline настроить.
1.GET запрос – используется для просмотра информации с сервера без его изменения. Не самый защищенный запрос, POST будет надежнее. Имеет ограничения на символы URL'ы, POST - нет.
2.POST запрос – создает новую инфу, тут мы передаем параметры, это будет более защищенный запрос. POST обьемно-вместительнее в отличии от GET, поэтому может быть такое, что лучше будет посмотреть инфу POST запросом.
3.PUT запрос – для полного обновления объекта целиком.
4.PATCH запрос – для обновления одного поля объекта.
5.DELETE запрос – удаление объекта. Этот запрос может быть 200-ым статус-кодом, 200-ый код включает в себя все и может иметь любой HTTP-request, также DELETE может быть 204-ым, удалил и ничего не вернулось.
Можно ли ГЕТОМ сделать ПОСТ? Можно ли посмотреть инфу ПОСТОМ?
Да, можно в обеих случаях, как девелопер напишет бекЕнд, так и будет.
1хх коды - информационные
2хх коды – Положительный результат. Например, 200 – ОК(запрос успешно обработан и показаны все данные запроса), 201 – ОК+CREATED, 204 – (OK, но ответ не содержит доп данных) Например, я что-то удалил и ничего не вернулось.
3хх коды – коды, указывают на перенаправление. Например, 301 – Перенаправлен на новый URL, 302 – данные URL временно перемещен, 304 – Ресурс неизменен.
4хх коды – указывают на ошибку со стороны клиента. Например, 400 – синтаксическая ошибка, 401 – клиент должен авторизироваться, 402 - нет оплаты, 403 – клиент авторизирован, но не имеет доступа, 404 – ресурс не найден на сервере.
5хх коды – указывает на ошибку со стороны сервера. Например, 504 – превышено время ожидания.
JSON и XML — это популярные форматы обмена данными между клиентом и сервером. Они используются для передачи структурированных данных, но имеют различия в синтаксисе и применении.
Синтаксис:
JSON (JavaScript Object Notation) представляет данные в виде пар "ключ-значение", что делает его компактным и простым для понимания.
XML (Extensible Markup Language) использует теги для обозначения данных, что придаёт ему гибкость, но усложняет синтаксис.
Читаемость:
JSON легче воспринимается человеком из-за минималистичного формата. Это делает его предпочтительным выбором для веб-приложений.
XML содержит больше метаинформации, что делает его более громоздким, но подходящим для сложных документов.
Размер данных:
JSON более компактный благодаря лаконичному синтаксису, что делает его эффективным для передачи данных по сети.
XML занимает больше места из-за обилия тегов и избыточной информации.
Применение:
JSON широко используется в современных веб-приложениях и API благодаря простоте и скорости обработки.
XML чаще применяется в системах, где важна структура данных и совместимость с различными стандартами.
Куки файлы.
Это какие-то данные, которые отправляются сервером и хранятся на компе. Например, зашел на сайт, зарегался там и в след раз не нужно снова вводить данные, файлы куки хранят инфу. Также куки сохраняют предпочтения, то, чем я интересовался, будет показывать на других сайтах.
Кеш
Он сохраняет ресурсы, сайты, которые видел браузер. Это облегчает нагрузку сервера.
Headers:
Хедеры — это тип запроса! То, как мы хотим, чтоб выглядел запрос.
Позволяют передать доп инфу для уточнения запроса.
Токен:
Это сгенерированный код, например, после авторизации и в дальнейшем передается для следующих запросов.
Parametrs | Body:
Существуют два блока передачи данных в запросах POST,PUT: бади и параметры.
Body - передается формат JSON, передаются те данные которые мы хотим создать или получить (POST, PUT запросы)
Parametrs — передаются в виде ключ-значение в тех же запросах POST, PUT, DELETE