Создание пакета и класса
Раскроем структуру проекта. Директория src содержит в себе две директории: «main» и «test». Для тестов используется, соответственно, директория «test». Откроем директорию «test», кликом правой клавиши мыши по директории «java» выберем пункт «New», а затем пункт «Package». В открывшемся диалоговом окне необходимо ввести название пакета. Имя базового пакета должно носить тоже имя, что и Groupid — «org.example».
Следующий шаг — создание класса Java, в котором пишется код автотеста. Кликом правой клавиши мыши по названию пакета выберем пункт «New», а затем пункт «Java Class».
В открывшемся диалоговом окне необходимо ввести имя Java класса, например, LoginTest (название класса в Java всегда должно начинаться с большой буквы). В IDE откроется окно тестового класса:
Test Suite
Описание:
- Пользователь открывает страницу аутентификации;
- Пользователь производит ввод валидных логина и пароля;
- Пользователь удостоверяется в успешной аутентификации — об этом свидетельствует имя пользователя в верхнем правом углу окна;
- Пользователь осуществляет выход из аккаунта путем нажатия на имя пользователя в верхнем правом углу окна с последующим нажатием на кнопку «Выйти…».
Тест считается успешно пройденным в случае, когда пользователю удалось выполнить все вышеперечисленные пункты.
Для примера будет использоваться аккаунт Яндекс (учетная запись заранее создана вручную).
Selenium WebDriver
Объект схож с , однако их основным отличием является контекст его применения. Таким образом, область действия последнего — это сам элемент, а первого — вся страница в целом.
С помощью объекта вы можете осуществлять множество операций, а точнее практически проделывать все действия, что может сделать человек с обычным браузером.
Вот некоторые полезные его полезные возможности:
- Запуск на странице произвольных JavaScript скриптов:
- Сохранять скриншоты страницы:
- Включить режим работы браузера в режиме «headless» (Как работает Headless Chrome). Таким образом браузер экономит время, исключая этап рендеринга страницы:
from selenium.webdriver.chrome.options import Options options = Options() options.headless = True driver = webdriver.Chrome(executable_path=EXE_PATH, chrome_options=options) driver.set_window_size(1440, 900)
Обратите внимание на то, что в методе указывается размер окна браузера, он устанавливается равным
Это важно для предотвращения ситуаций, связанных с присутствием на странице элементов, которые могут не загружаются в «headless» режиме (загрузка которых зависит от текущего размера окна браузера, а точнее размера экрана устройства)
Вы можете изменять разрешение или размер окна браузера на любое другое значение, но вы должны помнить, что в этом случае для текущего экземпляра объекта это значение будет установлено по умолчанию.
Тестирование производительности сайта
Тестирование производительности сайта или веб-приложения должно включать в себя:
- Нагрузочное тестирование.
- Стрессовое тестирование.
Проверьте производительность приложения на различной скорости интернета.
Нагрузочное тестирование сайта (веб-приложения) — это тестирование, при котором большое количество пользователей одновременно выполняют запрос к одной и той же странице. Выдерживает ли система пиковые нагрузки?
Стрессовое тестирование — нагрузка системы, выходящая за пределы установленных лимитов. Стрессовое тестирование выполняется с целью достичь сбоя в работе сайта или веб-приложения путем увеличения нагрузки. А также проверить, как система реагирует на стресс, и как она восстанавливается после сбоев. Стрессовой нагрузке подвергают поля для ввода информации, входа и регистрации.
ab тестирование функциональности также включает в себя проверку на ошибки, связанные с оперативной памяти.
Тест производительности можно применять для проверки масштабируемости сайта или оценки продуктивности при использовании стороннего программного обеспечения.
Нагрузка
- Количество пользователей, одновременно посещающих сайт;
- Проверьте работу системы при пиковых нагрузках;
- Пользователь осуществляет доступ к большому количеству данных.
IntelliJ IDEA Community Edition
https://www.jetbrains.com/idea/downloadПервый запуск IntelliJ IDEA
- Выбираем “Do not import settings”
- Принимаем лицензионное соглашение
- Выбираем тему
- Нажимаем Next
- Нажимаем Start using IntelliJ IDEA
Создаем проект в IntelliJ IDEA
- Выбираем Create New Project
- Указываем путь к Java SDK
- Нажимаем New…
- Указываем путь к ранее загруженному Java SDK C:\Program Files\Java\jdk-12.0.1
- Нажимаем Next
- Устанавливаем галочку на “Create project from template”
- Нажимаем Next
- Указываем имя проекта и локацию для сохранения
- Нажимаем Finish
Настройки созданного проекта
6. Настройка Android устройства
Реальное устройствоВиртуальное устройство
- “Tools” — “AVD Manager” — “+ Create Virtual Device…”
- Выбираете устройство, нажимаете Next
- Выбираете желаемую версию Android, нажимаете Next
- Указываете имя устройства, нажимаете Finish
Как проверить что ваш ПК увидел подключенное устройство?
7. Пишем проект
Добавляем import-ы.
Прописываем сервер и куда он должен будет отправлять запросы
Дополнительные команды
Управляем интерфейсом приложения
Итого ваш проект будет выглядеть таким образом:
- Установит ваше приложение на устройство
- Найдет поле поиска на странице приложения
- Внесет туда значение “Кино”
- Нажмет на кнопку “Поиск”
8. Запускаем проект
- Запустить сервер Appium (п.4)
- С помощью ярлыка запускаете Appium
- Нажимаете “Start server”
- Подключить устройство к ПК или запустить виртуальное устройство (п.6)
- Настроить проект (п.5 и п.7)
- Нажать Run (или на панели инструментов IntelliJ IDEA, или Run — Run ‘Main’)
- Наслаждаться результатом
разработчика
To install Selenium in Linux
1. Install Java
Because the program need Java, first you have to install it. You can use article install java in linux to find how to install this software package into their system. In Ubuntu you can install the version of OpenJDK using:
I specifically wrote in the title, linux is not Ubuntu, or another distribution, because installation in most distributions will be virtually no different. Next you need to install the browser, download the driver for the desired browser and then download the executable file and Selenium all.
2. Installing browser drivers
Support IE in Linux to not work, but we can work with Chrome and Firefox. To install these browsers follow:
Download the latest version of the driver for Chrome from the official page. Please note that the driver version must match the version of your browser. Version of Chrome, you can find out by opening chrome://settings/help
Chrome 76 you should use the same version of the driver.
At the moment, the latest is non-ie web browsers 76.0.3809.68:
Next, unzip the downloaded archive and move the driver into /usr/local/bin:
Now need to install the selenium webdriver for Firefox. It’s called GeckoDriver and you can download it on this page. Similarly, it is necessary to unpack the resulting archive and move the file geckodriver in /usr/local/bin:
Then, you can proceed to install Selenium in Linux.
3. Installing Selenium
The selenium framework is a simple java program that can be downloaded from the official website.
At the time of writing, the latest version of the program 3.141.59:
Then the downloaded program can be run via java machine and you can start the tests:
If you want to run the program on the server that is not running a GUI, you will need the xvfb package, which implements a virtual framebuffer in memory:
If you don’t want to run selenium manually, you can configure the program from starting automatically at system startup. First, we need to move Selenium in some system directory, such as /usr/bin/local:
Create a new user on behalf of which will run Selenium:
Next you need to allow this user to connect to the display server:
And in startup:
Now let’s write this systemd unit:
Now run the following commands to add the service to autostart and run:
4. Configure Selenium and PHP
During the development of the Selenium it was written many libraries for different languages. Next we will consider how to use this program along with PHP. Thanks to the efforts of Facebook possible. Only need to install the package facebook/webdriver using composer:
Then you can use this library in your scripts:
Ready. Now we have to execute the script and if everything was done correctly, you will open the browser.
BlazeMeter
BlazeMeter – компания-производитель одноимённого программного
обеспечения для тестирования, предоставляющая пользователям тестирование
производительности и нагрузочное тестирование как услугу. Служба содержит
инновационную и всеобъемлющую платформу непрерывного тестирования.
Веб-интерфейс приложения эффективен для создания статических нагрузочных тестов
и использования сценариев JMeter для выполнения динамических нагрузочных
тестов.
BlazeMeter известен широчайшим использованием одного из лучших
инструментов нагрузочного тестирования с открытым исходным кодом – Apache
Jmeter. Он предоставляет различные корпоративные функции для бесплатной
платформы. То есть пользователи могут получить доступ ко многим расширенным
функциям, таким как мониторинг производительности приложений (APM), создание
отчетов в режиме реального времени, распределенное тестирование и интеграция с
инструментами разработчика для непрерывной интеграции (CI).
Плюсы
- 100% совместимость с Apache JMeter
- Создание масштабных тестов – до 1 миллиона одновременно
работающих пользователей. - Настройка тестов в течение нескольких минут
- Запуск тестов без сценариев или загрузка списков URL
- Запуск из облака или локально
- Запуск тестов из нескольких географических местоположений
- Имитация мобильного тестирования с реальных устройств
- Облегчает командное сотрудничество с помощью сценариев и
обмена отчетами - Поддержка нескольких инструментов
- Интеграция с ведущими инструментами CI и APM
- Поддержка и профессиональные услуги
- Подробный отчет о результатах нагрузочных испытаний в режиме
реального времени - Установка КПЭ поведения тестируемого приложения
- Мониторинг собранного пользовательского опыта на компьютере
и мобильных устройствах
Минусы
- Отчеты Blazemeter довольно простые и не детализированные
- Blazemeter дорог для нагрузочных тестов больше чем с 1000
пользователей.
Ценообразование (годовые планы)
- Бесплатно (50 одновременных пользователей)
- Базовый: $ 99 / мес (1000 одновременных пользователей)
- Pro: $ 499 / мес (5000 одновременных пользователей)
Кому подходит
BlazeMeter – отличный инструмент для
нагрузочного тестирования для организаций, которые уже используют Apache Jmeter.
Создание проекта
Запустим Intellij IDEA, пройдем первые несколько пунктов, касающихся отправки статистики, импорта проектов, выбора цветовой схемы и т.д. — просто выберем параметры по умолчанию.
В появившемся в конце окне выберем пункт «Create New Project», а в нем тип проекта Maven. Окно будет иметь вид:
- Maven — это инструмент сборки Java проектов;
- Project SDK — версия Java, которая установлена на компьютере;
- Create from archetype — это возможность создавать проект с определенным архетипом (на данном этапе данный чекбокс отмечать не нужно).
Нажмем «Next». Откроется следующее окно:
Groupid и Artifactid — идентификаторы проекта в Maven. Существуют определенные правила заполнения этих пунктов:
- Groupid — название организации или подразделения занимающихся разработкой проекта. В этом пункте действует тоже правило как и в именовании пакетов Java: доменное имя организации записанное задом наперед. Если у Вас нет своего доменного имени, то можно использовать свой э-мейл, например com.email.email;
- Artifactid — название проекта;
- Version — версия проекта.
Нажмем «Finish»: IDE автоматически откроет файл pom.xml:
В нем уже появилась информация о проекте, внесенная на предыдущем шаге: Groupid, Artefiactid, Version. Pom.xml — это файл который описывает проект. Pom-файл хранит список всех библиотек (зависимостей), которые используются в проекте.
Для этого автотеста необходимо добавить две библиотеки: Selenium Java и Junit. Перейдем на центральный репозиторий Maven mvnrepository.com, вобьем в строку поиска Selenium Java и зайдем в раздел библиотеки:
Выберем нужную версию (в примере будет использована версия 3.14.0). Откроется страница:
Копируем содержимое блока «Maven» и вставим в файл pom.xml в блок
Таким образом библиотека будет включена в проект и ее можно будет использовать. Аналогично сделаем с библиотекой Junit (будем использовать версию 4.12).
Итоговый pom-файл:
Тестирование пользовательского интерфейса
Нужно проверить, правильно ли осуществляется связь с сервером. Следует проверить совместимость сервера с используемым программным обеспечением, аппаратными средствами, сетью и базой данных.
Основные интерфейсы:
- Интерфейсы веб-сервера и приложения.
- Интерфейсы сервера базы данных и сервера приложения.
Если база данных или веб-сервер для какого-либо запроса, исходящего от сервера приложения, возвращает сообщение об ошибке, сервер приложения должен фиксировать его и отображать пользователю.
Проверьте, что происходит, когда пользователь прерывает какое-либо действие. А также, что происходит при повторном подключении к серверу в ходе выполнения какой-либо операции.
Мотивация: отслеживаем музыкальные привычки
Предположим, что вы время от времени слушаете музыку на bandcamp.com или soundcloud и вам хочется вспомнить название песни, которую вы услышали несколько месяцев назад.
Конечно, вы можете покопаться в истории вашего браузера и проверить каждую песню, но это весьма болезненная затея… Все, что вы помните, это то, что вы услышали песню несколько месяцев назад и она в жанре электроника.
Сегодня мы создадим простой класс Python под названием BandLeader, который подключается к bandcamp.com, стримит музыку из раздела «Найденное» на главной странице, и отслеживает вашу историю прослушиваний.
История прослушиваний будет сохранена на диске в CSV файле. Далее, вы можете в любой момент просматривать CSV файл в вашей любимой программе для работы с таблицами, или даже в Python.
Если у вас есть опыт в веб-парсинга в Python, то вы знакомы с созданием HTTP запросами и использованием API Python для навигации в DOM. Сегодня мы затронем все эти пункты, за одним исключением.
Сегодня вы используете браузер в режиме без графического интерфейса (режим «командной строки») для выполнения запросов HTTP.
Консольный браузер – это обычный веб браузер, который работает без видимого пользовательского интерфейса. Как вы могли догадаться, он может делать больше, чем выполнять запросы: проводить рендер HTML (правда, вы этого не будете видеть), хранить информацию о сессии, даже проводить асинхронные сетевые связи на коде JavaScript.
Если вы хотите автоматизировать современную сеть, консольные браузеры – неотъемлемая часть.
Бесплатный бонус: Скачайте основу проекта Python+Selenium с полным исходным кодом, который вы можете использовать как основу для вашего веб-парсинга в Python и автоматических приложениях.
Навигация по странице
Доступ к файлам cookie
Возможно, вам понадобится добавить или удалить файлы cookie браузера:
ck = {'some_attr': 'foo', 'some_other_attr': 'bar'} driver.add_cookie(ck)
При этом в браузер добавляется файл cookie, который может быть полезен, например, если вам нужно добавить файлы cookie аутентификации или предпочтения
Важно убедиться, что файл cookie имеет формат dict.. Также очень легко получить файлы cookie из браузера:
Также очень легко получить файлы cookie из браузера:
cookies = driver.get_cookies() for ck in cookies: print(ck)
Приведенный выше код печатает каждый файл cookie в браузере.
Изменение HTML
Иногда вам может понадобиться изменить свойство элемента cerain.
Как упоминалось ранее, вы можете использовать Selenium WebDriver для выполнения JavaScript, и изменение свойств элементов настолько удачно, что это очень легко сделать с помощью JavaScript:
driver.execute_script("arguments.setAttribute('attr','value')", element)
Здесь element – это элемент, который нужно изменить, attr – это атрибут, который нужно изменить, а value – это новое значение.
Загрузка файлов с помощью ссылок для скачивания
Иногда может потребоваться скачать файл с веб-сайта:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_experimental_option("prefs", { "download.default_directory": r"path\to\directory", "download.prompt_for_download": False, "download.directory_upgrade": True, "safebrowsing.enabled": True }) driver = webdriver.Chrome(executable_path=EXE_PATH, chrome_options=options)
Вы можете указать путь к месту сохранения, указав download.default_directory, например path\to\directory.
Нажатие клавиш
import time from selenium.webdriver import ActionChains from selenium.webdriver.common.keys import Keys action = ActionChains(driver) for _ in range(3): action.send_keys(Keys.ARROW_DOWN) time.sleep(.1) action.perform()
Этот код нажимает стрелку вниз (Keys.ARROW_DOWN) 3 раза. После каждого действия action.send_keys (Keys.ARROW_DOWN) программа немного подождет. Это рекомендуется, чтобы убедиться, что все ключи зарегистрированы.
Если мы просто запустим несколько команд, они могут потеряться в процессе и фактически не будут регистрироваться.
Ключи содержат все клавиши на клавиатуре, а это означает, что вы также можете использовать этот метод для табуляции (Keys.TAB) между элементами на странице, что упрощает взаимодействие с ними (также очень важны Keys.RETURN и Keys.SPACE. ).
Нажатие кнопок
Обратите внимание, что вы можете использовать нажатия клавиш для перехода между элементами на странице, например, вы можете использовать табуляции и пробелы для заполнения флажков и использовать клавиши со стрелками для перехода между элементами раскрывающегося меню.
Конечно, более естественным способом установки флажков и раскрывающихся элементов было бы просто извлечь элемент с помощью драйвера и щелкнуть по нему:
checkbox = driver.find_element_by_id('checkbox') checkbox.click()
Формы ввода
Вы также можете имитировать нажатия клавиш внутри самих элементов:
element.send_keys(Keys.CONTROL, 'a') element.send_keys(value)
Таким образом, ключи регистрируются внутри элемента, так что если вы хотите заполнить текстовое поле, вы можете сделать это так.
Кстати, этот код использует сочетание клавиш (CTRL + A) для выделения всего текста внутри элемента. Следующая строка заменяет выделенный текст введенным значением.
Чтобы зарегистрировать сочетания клавиш, передайте все желаемые клавиши в параметрах send_keys.
Прокрутка
Иногда части страницы загружаются только после прокрутки вниз (например, лента Instagram или любая другая страница с бесконечной прокруткой). Это легко сделать, выполнив простой скрипт JavaScript:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
В приведенном выше коде используется команда JavaScript для прокрутки страницы вниз, теперь вы можете снова использовать driver.page_source и получить новый контент.
Реализация взаимодействия с браузером в TestCafe и NightWatch
Фреймворк NightWatch основывается на известной, в некоторой мере уже традиционной, библиотеке Selenium webdriver, преимущества которой включают устоявшееся API, высокую степень документированности и обширное Q&A в интернете, а также универсальный и достаточно низкоуровневый доступ к браузеру… Взаимодействие с браузерами организуется посредством webdriver-ов, по одному на каждый обозреватель.
Основной недостаток — webdriver-ы существуют далеко не для всех браузеров, а также требуют отдельного обновления при смене версии самого браузера, а еще для работы необходимо наличие внешней зависимости от Java. Более подробно о технологии webdriver можно прочесть в http://www.w3.org/TR/webdriver/
Фреймворк TestCafe основан на подходе, в котором взаимодействие с приложением браузера сведено к минимуму — используются только функции открытия окна/вкладки, изменения размера окна, перехода по URL-адресу и некоторые другие.
Взаимодействие с web-страницей производится посредством web-proxy сервера testcafe-hammerhead, осуществляющего загрузку удаленной web-страницы и модификацию исходного JS-кода таким образом, чтобы выполнить шаги функционального теста, посредством интеграции с DOM-моделью, поиска и управления визуальными элементами, выполнение произвольного JS-кода и так далее. (https://github.com/DevExpress/testcafe-hammerhead/)
Метод TestCafe более универсален, поскольку может потенциально работать с любым браузером, поддерживающим HTML5 и ES 5+, в то время как NightWatch требует соответствующий webdriver. Кроме того, это позволяет прогонять тесты не только на локальном браузере, но на любом браузере в сети, включая любые мобильные — без установки какого-либо ПО на телефоне.
Пример тестирования вышерассмотренного web-приложения в браузере на Android показан в следующем видео: https://www.youtube.com/watch?v=2na5jkqvUx0
Однако testcafe-hammerhead имеет и потенциальные недостатки: накладные расходы на анализ и модификацию исходного JS-кода тестируемой страницы, производимые в свою очередь JS-коде ядра Testcafe, а также теоретически некорректная работа тестируемой web-страницы или интеграции теста, если исходный код был проксирован неверно. (К примеру, замещение alert-окна в testcafe можно обойти таким примером http://pastebin.com/p6gLWA75 — и неумешленно или специально “подвесить” его выполнение)
ALM Octane
ALM Octane — это давно обкатанный в боях и достаточно мощный инструмент, который позволяет оптимизировать и наблюдать за своими рабочими процессами, объединить мануальное и автотестирование, управлять и настраивать релизные циклы. Продукт сложный в освоении, однако его функциональность закрывает потребности больших компаний со сложной внутренней структурой разработки. Система масштабируема в рамках компании что позволяет добавлять в базу знаний всё новых и новых пользователей в том числе делиться с ними уже наработанными данными. Также есть возможность вести требования напрямую в продукте.
ALM Octane
Всю систему можно кастомизировать под свои потребности\нужды, гибкий функционал по разработке и ведении тестов позволяет существенно сократить время и силы затрачиваемые на повышение качества выпускаемых продуктов компании.
ALM Octane
Возможности:
-
Давно проверенный на рынке инструмент с большой базой уроков\материалов по изучению и способам работы с продуктом
-
Общий доступ к библиотекам требований и ресурсов
-
Подробные сведения о коде, тестировании, управлении рисками и их оценке, а также о соответствии требованиям
-
Быстрый доступ к показателям, например к данным о не устранённых дефектах
-
Масштабируемая среда разработки и ведения тестовой документации
-
Работа с мануальными и автоматизированными тестами в едином интерфейсе
-
Настраиваемый интерфейс и шаринг базы знаний в рамках компании
-
Создание требований и отслеживание их выполнения на всех этапах жизненного цикла приложения
-
Расширенные данные по аналитике процессов тестирования и трудозатрат
-
Интеграция с 50+ инструментами
Цены: от $28 в месяц
AWS marketplace
Бесплатная пробная версия: 30 дней
Классификация инструментов
Драйвер
Утилиты автотестирования, как и другие программы, могут взаимодействовать с приложением только через программный интерфейс — по-другому они не умеют. Для работы через другие интерфейсы существуют специальные программы — драйверы.Драйвер — программа, которая предоставляет API для одного из интерфейсов приложения.
Для каждого интерфейса, кроме, собственно, API, необходим свой драйвер. Например, когда вы даёте драйверу для GUI команду “Нажать на кнопку Menu”, он воспринимает её через API и отсылает в тестируемое приложение, где эта команда превращается в клик по графической кнопке Menu. Для взаимодействия с API приложения драйверы не нужны или почти не нужны — взаимодействие программное. А вот при работе с остальными интерфейсами без них не обойтись.
Наиболее сложными обычно являются драйверы для GUI, так как этот интерфейс сильно отличается от обычного для программы общения кодом. При этом в автоматизированном тестировании мобильных приложений GUI наиболее актуален, так как в интеграционном тестировании использовать чаще всего приходится именно его. Наиболее популярные драйвера для GUI в мобильном тестировании — и для Android, — для iOS.
Надстройка
Когда функционала драйвера не хватает или он неудобен и сложен, над нимпоявляется ещё один уровень, который я буду называть надстройкой. Надстройка — программа, которая взаимодействует с приложением через один или несколько драйверов, повышая удобство их использования или расширяя их возможности.
У надстройки могут быть следующие функции:
- Модификация поведения (без изменения API).
Например:- дополнительное протоколирование,
- валидация данных,
- ожидание выполнения действия в течение определённого времени.
- Повышение удобства и/ или уровня абстракции API через:
- использование синтаксического сахара — удобных названий функций, более коротких обращений к ним, унифицированного стиля написания тестов;
- неявное управление драйвером, когда, например, он инициализируется автоматически, без необходимости прописывать каждое такое действие вручную;
- упрощение сложных команд вроде выбора события из календаря или работы с прокручивающимися списками;
- реализацию альтернативных стилей программирования, таких как процедурный стиль или fluent.
- Унификация API драйверов.
Здесь надстройка предоставляет единый интерфейс для работы сразу с несколькими драйверами. Это позволяет, например, использовать один и тот же код для тестов на iOS и Android, как в популярной надстройке .
Фреймворк
С другой стороны тестов находится фреймворк запуска. В рамках данной статьи я буду коротко называть его “фреймворк”. Фреймворк — это программа для формирования, запуска и сбора результатов запуска набора тестов.
В задачи фреймворка входят:
- формирование, группировка и упорядочивание набора тестов,
- распараллеливание набора (опционально),
- создание фикстур,
- запуск тестов,
- сбор результатов их выполнения,
- формирование отчётов о выполнении (опционально).
Можно заметить, что эти функции не связаны с тестированием только мобильных приложений — их можно успешно применять и в тестировании десктоп- и веб-приложений. Дело в том, что фреймворк не должен обеспечивать взаимодействие тестов и приложения — он работает только с тестами, и тип приложения не имеет значения.
Если драйверы и надстройки находятся между тестами и приложением, то фреймворк находится над тестами, организуя их запуск
Поэтому важно не путать понятия “драйвер” и “фреймворк”. Конечно, в некоторых фреймворках есть собственные драйверы для работы с приложениями, но это вовсе не обязательное условие
Самые заметные фреймворки в мобильном тестировании — и .
Комбайны
Наконец, ещё одна группа утилит, использующихся для автоматизации тестирования мобильных приложений, — это комбайны, объединяющие в себе и фреймворки, и драйверы (причём не только мобильные), и даже возможности разработки. , , — все они поддерживают автоматизацию тестирования iOS-, Android-, веб-приложений, а два последних — ещё и десктоп-приложений.
Итак, инструменты мы классифицировали. Осталось определить самые популярные в каждой категории и сравнить их.