Appium - это фреймворк для автоматизации тестирования для мобильных приложений, которая поддерживает платформы Android и iOS.
Appium - это сервер написанный на Node.js (работает в CMD, либо в декстопном варианте).
Работает Appium следующим образом: пишется кода на Java, Python, JS, C# - Appium Server (по протоколу JSON) - действие с приложением на мобилке (UiAutomator, XCUitest).
Инструкция, как установить Appium с помощью Node.js + Appium Desktop Client (запуск сервера на компе, а не в CMD) + Appium-doctor (для диагностики проблем).
Преимущества Appium включают в себя:
Кроссплатформенность: Appium позволяет писать тесты на разных языках программирования (Java, Python, C#, Ruby, и другие) и работает на разных ОС (Windows, macOS, Linux).
Поддержка разных платформ: Appium поддерживает тестирование мобильных приложений как для Android, так и для iOS.
Интеграция с инструментами: Appium интегрируется с такими инструментами тестирования, такими как Selenium, Allure, что упрощает процесс автоматизации.
Поддержка гибридных приложений: Appium поддерживает как нативные, так и гибридные мобилки, что позволяет тестировать приложения, написанные на HTML, CSS, JS и т.д.
В данном случае будет использоваться нативное приложение для тестирования Android Studio. (Для его установки помимо самой AS, понадобится Node.js + добавить папки в переменные среды).
FULL ИНСТРУКЦИЯ для автоматизации на JAVA и работы с UiAutomator2. (фото)
Appium server (Appium Desktop Client):
Инструкция для настройки Appium Desktop, как подключаться к приложению в эмуляторе на Android Studio через Appium Inspector.
Appium Inspector - это что-то вроде DevTools в браузере, оттуда берутся XPath элементов приложения для написания тестов.
В Android Studio можно эмулировать различные возможности, например: эмулировать GPS, эмулировать Network (3g, LTE, 5g), эмулировать силу сигнала (слабый, хороший), статус (из дома, в офисе), эмулировать уровень батареи, подключено к розетке или нет, состояние батареи, звонок на телефон, также можно создавать баг-репорты (скриншоты + логи устройства + запись экрана).
ОСОБЕННОСТИ ТЕСТИРОВАНИЯ МОБ. ПРИЛОЖЕНИЙ:
➤ Проверка на прерывание (входящие/исходящие вызовы, всплывающие окна, прерывание при зарядке, сворачивание/разворачивание приложения).
➤ Тестирование установки (установка, удаление, обновление, переустановка).
➤ Интернет (Wi-Fi, 3g, LTE, 5g, качество соединения, потеря связи, изменение типа соединения).
➤ Работа с функциями телефона (размер экрана, разрешение, ориентация, GPS).
➤ Тестирование производительности (зависимость от заряда телефона, скорость, отзывчивость).
➤ Functional testing, usability testing, Ui testing, performance, security, compatibility, recovery testing.
Jenkins предназначен для Ci CD процесса, для непрерывной интерграции ПО, в этом помогают ему Pipeline(так называемый конвейер). Jenkins одна из лучших тулзов для автоматизации и интегрируется с Docker'ом (там используются ноды, гипервизоры, контейнеры Linux and JailFree).
Также в Jenkins полно плагинов для разных аспектов использования (имеет разные функции).
И также можно планировать тесты по времени (Cron или Jobs), тут используется формат, к примеру 0***, * * * * * и т.д.
Pipeline - мощный инструмент, который помогает определить и управлять Ci CD процессами. Pipeline использует свой DSL - он существует для создания скриптовых конструкций, которые описывают этапы сборки (сборка,тестирование,доставка ПО).
Он служит для Deploy'я. Показывает потом количество фейлов в тестах, если там % маленький, значит Деплой возможен. Смотря как Pipeline настроить.
GitLab - это веб-приложение, предназначено для управления Git-репозиториями. На GitLab'e можно хранить код, то есть проекты, создавать ветки, работать на них.
Для того, чтобы запушить проект из Java в GitLab и запустить Ci, нужно сделать следующие действия:
1.Push'ым Java проект на GitHub.
2.На GitLab'e - New project - import project - авторизируемся через GitHub и импортируем проект туда.
3.В Java в разделе Git - Manage Remotes - добавляем URL проекта с GitLab (добавляем репо в Джаву), checkout в ветку GitLab в самой Джаве и потом можем коммитить и пушить уже на GitLab все изменения.
4.В конрневой папке проекта в Java создаем файл .gitlab-ci.yml.
5.Коммитим из Джавы этот файл и пушим с ветки GitLab на сам сайт GitLab.
6.В разделе "Pipelines" добавиться тест и он начнет ранниться.
Cypress - это инструмент для тестирования веб-приложений, который довольно прост в использовании. Он базируется на JavaScript'е. Также он может создавать видео запусков тестов, генерировать отчеты тестов. Среда выполнения Cypress-тестов - VS Code (вместе с Node.js программой).
В след примере теста можно увидеть: 1.PageObject (убирает весь хардкод), 2.Тест (4 теста=открывает сайт, добавляет задачи, удаляет их, делает ассерты).
1.PageObjectCypress и
2.FullTestCypress
Скачать zip-папку с фул тестом и
Как настроить генерацию отчетов в Cypress(инструкция) и
вот так выглядит html-отчет тестов
Gatling - это библиотека разработанная на языке Scala, предназначена для тестирования производительности (Stress, Load). Интегрируется в Java.
Позволяет создать "user journey" и реализовывать его в тесте, используя любое количество виртуальных юзеров.
Также в этот инструмент имплементированы отчеты и графики тестов.
Далее первый пример теста:
Test on Gatling (фото; 1 пример) , где будут: PageObject, создание логики в скрипте, assertions почти в каждом методе.
Далее второй пример теста:
Test on Gatling (фото; 2 пример) . Можно делать по-разному.
Проект этого теста на GitHub и
вот так выглядит html-отчет.
Apache JMeter — это инструмент для проведения нагрузочного тестирования, которое работает на базе Java. JMeter позволяет определить, пик нагрузки на сервер (стресс Т.) и создавать сценарий юзеров, которые бы заходили на сайт одновременно (нагрузочное Т.).
С помощью нагрузочного тестирования, мы можем создавать негативные сценарии тестов, также смотреть как ведет себя сервер во время нагрузки.
Функции JMeter:
В этой программе много плагинов, которые могут делать разные функции, например:
- задать количество пользователей для проверки
- задать время, за которое эти пользователи должны зайти
- задать количество таких сценариев
- можно увидеть результаты тестов (статус код)
- график нагрузки (listeners - view results tree or table)
Пример теста в JMeter. Этапы теста: 1.Thread Group (задать юзеров, время и круги) 2.HTTP-request (указать URL и тип запроса) 3.View results 4.Run test
Полезные инструменты, например, BlazeMeter в Chrome (делает запись шагов поведения на сайте, можно скачать сценарий и перенести в JMeter; скачивается из chrome market и нужно зарегаться на сайте BlazeMeter)
Полезные
плагины - скачиваешь, в JMeter справа сверху Manager Plugins - Available pluguns - например, Custom JMeter Functions - и в корне тесте, в Thread нажать jp@gc - Stepping Thread Group,
вот так выглядит тест с BlazeMeter и новым плагином.
Docker — это инструмент для разработки, доставки и запуска контейнерных приложений. Он позволяет создавать контейнеры, автоматизировать их запуск и развертывание, управляет жизненным циклом. Контейнеров может быть сколько угодно.
Контейнеры нужны для того, чтобы в тесте определить и настроить его окружение и запустить как локально, так и в "облаке". Это обеспечивает корректность запуска и проведения тестов изолировано друг от друга.
Например, тесты написанные на Javа, можно запускать на докере, используя десктопное приложение.
Этапы запуска теста: 1.Сам докер 2.В Java создать файл Dockerfile, в нем прописать код 3.Собрать Докер образ через командную строку 4.В Джаве забилдить тест и создать .jar файл теста 5.Запустить докер-контейнер в командной строке
OWASP ZAP(Открытый Проект По Обеспечению Безопасности Веб-Приложений) — это сканер для поиска уязвимостей в веб-приложениях. То есть, это тула с помощью которой можно найти слабые места веба. Он основан на методике DAST, эта методика позволяет обнаружить проблемы безопасности в уже работающем веб-приложении при помощи сканирования на известные уязвимости, так называемое "тестирование черного ящика".
В случае критической проблемы: нужно пообщаться с бизнес-аналитиками, узнать насколько это критично и надо ли это фиксить.
Существуют такие уязвимости:
Инъекции (например злоумышленник может ввести скрипт в форму регистрации и если форма не защищена, то его код сработает) (Injections).
Нарушенная аутентификация (Broken Authentication).
Раскрытие критически важных данных (Sensitive Data Exposure).
Внешние объекты XML (XXE) (XML External Entities (XXE)).
Нарушенный контроль доступа (Broken Access control).
Неправильная конфигурация безопасности (Security misconfigurations).
Межсайтовый скриптинг (XSS) (Cross Site Scripting (XSS)).
Небезопасная десериализация (Insecure Deserialization).
Использование компонентов с известными уязвимостями (Using Components with known vulnerabilities).
Недостаточно подробные журналы и слабый мониторинг (Insufficient logging and monitoring).
Принцип работы OWASP ZAP:
Он создает прокси-сервер (это типо как VPN, только без скачивания каких-либо программ, он стоит между клиентом и сервером и может прятать данные клиента (конфиденциальность). Через этот прокси-сервер обрабатываются все запросы на сканирование, которые уже ищут уязвимости.
Процесс работы OWASP ZAP:
1.Нужно выбрать режим АТАКИ (стандартный, безопасный, защищенный и режим АТАКИ)
2.В "Быстром ответе" добавить URl сайта и нажать "Атака"
3.Ниже раздел результатов, где есть "История, Поиск, Оповещения, где присваивается уровень риска уязвимости"
4.Можно создать отчет выбрав любой шаблон, параметры и т.д.
Также можно выбрать "паука", который обнаружит новые URL-адреса на проверяемом сайте.
Пример сканирования и
пример отчёта.
Playwright — это фреймворк для авто-тестов, пишется на VS Code, базируется на JavaScript'e или на TypyScript'e.
Его особенностью является запуск тестов в разных браузерах сразу, генерация отчетов встроенная уже.
Пример теста и
пример отчёта.
SELENIUM - это инструмент для автоматизации веб-приложений, с ее помощью тестировщик может создать сценарий поведения веб-приложения. Он работает так, как со стороны пользователя, только без нашего вмешательства.
Подробнее про Selenium. Далее пример теста для запуска Google(ТестиИнит, Пейджи(паттерны) и сам Тест.
1.TestInit
2.BasePage
3.GoogleHomePage
4.GoogleTest
SELENOID - это инструмент для запуска браузеров в изолированных Докер-контейнерах!
Основная задача - сделать каждый поток изолированным от другого потока, похожий элемент есть еще Selenium Grid, но он более замудренный.
SELENIDE - базируется на основе Selenium'а, созданный для упрощения написания тестов.
Он автоматически выполняет ожидания перед выполнением действия.
Пример проекта с исп. Selenide на GitHub.
Кроме того, Selenide и Selenium могут использовать Selenoid для запуска браузеров в контейнерах вместо локальных установок.
AssertJ — это библиотека для тестов в Java, которая имеет в себе различные, гибкие асерты (проверки условий).
Асерты могут быть: на не пустоту, на часть элемента, на количество символов, проверка на наличие подстроки и т.д.
Нужно просто добавить к себе в проект, в pom.xml.
Пример ассертов в тесте и
Full тест на GitHub
Lombok — это библиотека улучшает и оптимизирует работу самого програмного кода.
Эта библиотека нужна для быстрого доступа к переменными.
Также с помощью Lombok можно использовать такие аннотации, как @SneakyThrows, с помощью чего можно почистить код и не прописывать такие конструкции, как try catch.
Пример проекта на GitHub с исп. Lombok.
Allure Report — это фреймворк для создания отчётов о результатах выполненых тестов. Этот инструмент предназначен для улучшения визуализации результатов тестирования, что облегчает анализ и взаимодействие с отчетами. Он поддерживает различные языки программирования, включая Java.
Для того, чтобы подключить Allure Report к Java, используя Maven, нужно:
➤ Добавить зависимости в файл pom.xml.
➤ Добавить плагины в секцию < build >.
➤ В папке "resources" - создать файл allure.properties + allure.report.directory=target/allure-report.
➤ В папке "target" - создать директорию "allure-results".
➤ Запускать командой mvn test + mvn allure:serve.
Пример Allure на проекте GitHub (+подробная инструкция как подключить его в Readme файле).
Пример Allure-отчёта (фото).
Postman — это инструмент для тестирования API и управления HTTP-запросами. Postman имеет удобный интерфейс для создания, отправки и получения HTTP-запросов, что делает процесс разработки и тестирования API эффективнее.
Основные функции Postman включают:
➤ Создание запросов: Postman позволяет легко создавать HTTP-запросы разных типов (GET, POST, PUT, DELETE и другие). Можно указывать параметры запроса, тело запроса, заголовки и т.д.
➤ Тестирование API: Postman позволяет создавать и запускать автоматизированные тесты для проверки работы API. Можно указать сколько угодно итераций (кол-во тестов), время ожиданий между запросами, таким образом можно запускать тесты на весь день и смотреть как отрабатывает API.
Для создании коллекции, нужно:
➤ "New" - создаем коллекцию, называем её и указываем способ авторизации (фото пример) , смотря как сделают это разработчики и эта авторизация будет работать для всей коллекции.
➤ Далее создаем запросы (GET, POST...), вставляем URL и получаем response.
➤ При создании POST запроса: нужно указывать body + метод POST + ◉raw -> json.
➤ Для рандомных значений юзера (email, lastName, firstName) можно выбирать ◉form-urlencoded. Фото-пример как выглядит рандом для user data.
Enviroment в Postman:
Это среда выполнения, где можно создавать и хранить переменные для дальнешего использования в коллекциях.
Enviroment полезный для коллективной работы: девы, QA, prod могут иметь отдельный Enviroment для управления конфигурациями и параметрами запросов.
B Postman есть Enviroment и есть Global. Первый - относится только к одной коллекции, Global - для всех коллекций.
B Enviroment можно создавать переменные и делаеть тесты (выбираем окружение - в разделе Tests - Snippets: set veriable), можно добавить тесты на проверки там же (в разделе Tests - Snippets: set Code is 200, ещё вариант в разделе Tests - Snippets: response body: Containts string)