Ваше веб-приложение может иметь тысячи ежедневных посещений, и вы не можете знать, куда они будут кликать или как они будут взаимодействовать с вашей домашней страницей или любой другой веб-страницей. Вопрос в том, можете ли вы протестировать свое веб-приложение для таких сценариев? Да, можно. Но как тестировать такие сценарии? Я имею в виду, что вы не можете просто идти вперед и щелкать везде на своем сайте. Мой друг, ответ на этот вопрос – тестирование на обезьянах! Да, вы не ослышались. Это называется тестирование на обезьянах и представляет собой тип тестирования, при котором вы взаимодействуете с вашим веб-приложением на случайной основе. Идея заключается в том, чтобы выполнить автоматизированное тестирование веб-сайта, передавая случайные значения скриптам автоматизированного тестирования, чтобы генерировать случайные взаимодействия без какого-либо определенного шаблона.
Можете ли вы автоматизировать обезьянье тестирование с помощью Selenium, фреймворка автоматизации тестирования с открытым исходным кодом?
Да, это тоже можно сделать. И именно этому посвящена данная статья. В этой статье я собираюсь помочь вам познакомиться с обезьяньим тестированием с помощью Selenium и WebdriverIO.
Эй! Знаете ли вы? input-file-accept – это расширение, которое позволяет определить фильтр для типов файлов, которые пользователь может выбирать из элемента.
- Что такое Monkey-тестирование?
- Тупая или невежественная обезьяна
- Умная обезьяна
- Гениальная обезьяна
- Зачем нужно обезьянье тестирование?
- Преимущества тестирования на обезьянах
- Недостатки обезьяньего тестирования
- Что такое WebDriverIO?
- Зачем нужно обезьянье тестирование с WebDriverIO?
- Пример обезьяньего тестирования со сценарием реального времени
- Демонстрация WebDriverIO JavaScript
- Описание кода для тестирования обезьяны с помощью WebdriverIO
- Выполнение теста на локальной машине
- Операционная система Mac
- Операционная система Windows
- Автоматизация тестирования обезьян с помощью WebdriverIO на онлайн-сетке Selenium
- Приборная панель LamdaTest
- Параллельное тестирование с WebdriverIO на LamdaTest
- Следите за другими учебниками по автоматическому тестированию Selenium
Что такое Monkey-тестирование?
При тестировании с помощью обезьяны мы пытаемся сломать систему, предоставляя ей случайные входные данные. С точки зрения конечного пользователя входные данные могут быть любыми, это может быть клик, прокрутка или фиктивная текстовая строка.
Обезьянье тестирование в целом классифицируется на 3 типа:
-
тестирование тупой обезьяной или тестирование невежественной обезьяной
-
тестирование умной обезьяны
-
тестирование с помощью гениальной обезьяны
Тупая или невежественная обезьяна
Это когда вы проводите тестирование без какого-либо понимания программного обеспечения. Вы не знаете ожидаемых результатов, не знаете входящих и исходящих рабочих процессов, даже не знаете допустимых входных данных для тестового сценария. Быть тупой обезьяной – все равно что ходить в темноте, и вам будет трудно понять, наткнулись вы на ошибку или нет. Однако если вы наткнетесь на ошибку, есть шанс, что она окажется критической и редкой.
Умная обезьяна
Это когда вы и ваша команда хорошо знаете тестируемое веб-приложение. Вы понимаете, куда должны вести гиперссылки, а также другие ожидаемые результаты. Быть умной обезьяной означает, что вы знаете о недопустимых результатах и пытаетесь сломать веб-приложение, чтобы противостоять им.
Гениальная обезьяна
Это когда вы являетесь экспертом в веб-приложении и знаете все требования к тестированию. Быть блестящей обезьяной означает, что вы виртуозно владеете областью, для которой вам необходимо провести тестирование.
Например: Если вы выполняете кросс-браузерное тестирование, то вы знаете матрицу тестирования браузеров и определяете желаемые возможности Selenium относительно этой матрицы.
Вы осведомлены о последних изменениях кода и модулях, которые изменяются или добавляются в продакшен.
Вы готовы выполнять тестирование со списком неподдерживаемых веб-элементов для различных браузеров и версий браузеров, работающих на операционных системах для мобильных и настольных компьютеров.
Вы можете пройти эту сертификацию как подтверждение знаний в области автоматизации тестирования на JavaScript, чтобы расширить свои возможности и сделать карьеру.
Вот краткий обзор сертификации Selenium JavaScript 101 от LambdaTest:
Зачем нужно обезьянье тестирование?
Возможно, вы задаетесь вопросом о целесообразности тестирования на обезьянах. Нужно ли оно вообще? Что ж, давайте рассмотрим пример тепловой карты веб-сайта.
Тепловая карта показывает, где посетители взаимодействовали с вашим сайтом и в каком объеме. Область с красным теплом указывает на большинство взаимодействий пользователей, а область с синим теплом указывает на меньшинство взаимодействий пользователей.
Это случайный сайт, и вы смотрите на область, на которую нажимали пользователи. Часто случается так, что нежелательная ссылка остается незамеченной до момента нажатия на нее. И если ваш клиент найдет эту ссылку раньше вас, то я не думаю, что это будет полезно для вашей организации.
Вот почему вам необходимо автоматизировать тестирование на обезьянах. С учетом сказанного, давайте быстро рассмотрим плюсы и минусы обезьяньего тестирования.
Преимущества тестирования на обезьянах
-
Пользователи могут обнаружить неожиданные ошибки.
-
Не требует специальных навыков.
-
Проверка надежности и стабильности системы.
-
Выполнение нестандартного сценария.
-
Может обрабатывать динамическую генерацию ссылок.
-
Помогает сломать всю систему.
Недостатки обезьяньего тестирования
-
Выявить ошибку очень сложно.
-
Нет фиксированного результата.
-
Случайные входные данные.
-
Длительное время выполнения.
Теперь, когда мы хорошо знакомы с концепцией обезьяньего тестирования. Пришло время перейти к действиям и автоматизировать обезьянье тестирование с помощью WebdriverIO и Selenium.
Что такое WebDriverIO?
WebdriverIO – это фреймворк для тестирования WebDriver нового поколения на Node.js. Это фреймворк для тестирования с открытым исходным кодом, который помогает автоматизировать тестируемый веб-сайт, а также мобильное приложение. Преимущество WebdriverIO в том, что он намного быстрее и использует JavaScript для написания автоматизации. WebdriverIO поддерживает библиотеки selenium и appium для автоматизации браузеров и мобильных приложений. Кроме того, WebdriverIO поддерживает интеграцию со многими облачными инструментами для автоматизации.
Если вы еще не знакомы с WebdriverIO, вы можете взглянуть на наше руководство.
Зачем нужно обезьянье тестирование с WebDriverIO?
Обезьянье тестирование – это проверенный временем способ проверки пределов возможностей ваших приложений путем ввода случайных, даже неожиданных входных данных в надежде, что один из этих входных данных что-то сломает и выявит какой-то неочевидный недостаток. WebdriverIO, с другой стороны, является одним из наиболее используемых JavaScript фреймворков для автоматизации веб-тестирования, который получает около 420 000 загрузок каждую неделю на NPM, имеет около 5300 звезд на GitHub репо и 170 авторов. Что общего у этих двух вещей, спросите вы? Проще говоря, вы можете использовать крутость WebdriverIO вместе с фреймворком selenium для автоматизации обезьяньего тестирования вашего сайта или веб-приложений.
Пример обезьяньего тестирования со сценарием реального времени
Допустим, у вас есть сайт, и вы добавили пару записей в заголовок. Теперь вы хотите проверить, являются ли гиперссылки кликабельными или нет. Вы не планируете проверять, куда ведут гиперссылки, поэтому вы не знаете, на какие целевые страницы они могут перейти. Вы собираетесь нарушить только заголовок сайта. Это представляет вас как невежественную или тупую обезьяну, без каламбура!!!
Сценарий тестирования обезьяны с помощью WebdriverIO:
-
Откройте домашнюю страницу LambdaTest.
-
Соберите ссылки меню заголовка.
-
Нажмите случайным образом на каждую ссылку меню.
Демонстрация WebDriverIO JavaScript
Для реализации этого сценария я представлю вам сценарий автоматизации тестирования Selenium для WebdriverIO. Сценарий автоматизации открывается в браузере Chrome и сохраняет все ссылки меню заголовка в одном массиве javascript. Как только я получил все элементы ссылок в массиве, я сохранил длину этого массива. С этой длиной я выполняю цикл и использую метод javascript math.random() для получения случайных чисел от 0 до длины элементов и выполнения операции нажатия.
const assert = require("assert");
describe("Open Web browser in the chrome", () => {
it("Page should open", () => {
browser.url("https://www.lambdatest.com/");
const title = browser.getTitle();
assert.strictEqual(
title,
"Cross Browser Testing Tools | Free Automated Website Testing | LambdaTest"
);
});
});
describe("Perform Random click", () => {
it("Random click on Header Menu should perform based on random index ", () => {
const headerMenuLinks = $$(".//div[@id='navbarSupportedContent']/ul/li");
const linksCount = headerMenuLinks.length;
for (i = 0; i < linksCount - 1; i++) {
let randomIndex = Math.floor(Math.random() * linksCount);
headerMenuLinks[randomIndex].click();
browser.back();
browser.pause(3000);
}
});
});
Описание кода для тестирования обезьяны с помощью WebdriverIO
Во-первых, мы импортировали библиотеку assert, чтобы использовать утверждения в нашем сценарии автоматизированного тестирования.
const assert = require("assert");
describe() позволяет нам хранить все наши тесты в одной функции. В нашем случае мы определили два метода describe. Один из них – “Открыть веб-браузер в хроме”, а другой – “Выполнить случайный щелчок”.
describe("Open Web browser in the chrome", () => {
// Some code
});
describe("Perform Random click", () => {
// Some code
});
Каждый describe() может иметь несколько it(), которые являются вашими тестовыми примерами. Вы можете написать N количество тестовых примеров в функции describe.
it("Page should open", () => {
// some code
});
Приведенная ниже строка кода открывает заданный URL в браузере Google Chrome. Здесь браузер равен переменной webdriver, с помощью которой вы можете получить все методы, связанные с webdriver.
browser.url("[https://www.lambdatest.com/](https://www.lambdatest.com/)");
Приведенная ниже строка кода позволяет открыть заголовок страницы сайта.
const title = browser.getTitle();
Приведенный ниже код утверждает заголовок страницы с ожидаемым заголовком.
assert.strictEqual(title,"Cross Browser Testing Tools | Free Automated Website Testing | LambdaTest");
Приведенная ниже строка кода находит веб-элементы ссылок заголовка и сохраняет их в массиве javascript. Здесь $$() равнозначен методу findElements() в java.
const headerMenuLinks = $$(".//div[[@id](http://twitter.com/id)='navbarSupportedContent']/ul/li");
Следующая строка кода получает длину массива и сохраняет значение в переменную
const linksCount = headerMenuLinks.length;
Нижеприведенная строка кода зацикливается до подсчета ссылок и генерирует случайные числа, затем случайным образом нажимает на ссылки заголовка.
for (i = 0; i < linksCount - 1; i++) {
let randomIndex = Math.floor(Math.random() * linksCount);
headerMenuLinks[randomIndex].click();
browser.back();
browser.pause(3000);
}
Отлично!!! Вы поняли задачу примера и его преимущества. Теперь, как ее выполнить?
Знаете ли вы? Атрибут input-inputmode, когда он указан, указывает, какой механизм ввода будет наиболее удобен для пользователей, вводящих содержимое в элемент управления формы. Возможными значениями являются: “клавиатура”, “речь” и “нет”.
Выполнение теста на локальной машине
В случае, если вы изменили имя папки с тестовым примером, выполните следующие действия. Перед запуском этого теста вам необходимо:
-
Открыть файл wdio.conf.js.
-
Найдите свойство specs: и измените путь в соответствии с папкой тестового примера.
-
Сохраните файл.
Теперь вы можете выполнить сценарий автоматизированного тестирования Selenium для тестирования обезьян с помощью WebdriverIO. Просто введите эту команду в терминале/ cmd и нажмите enter.
./node_modules/.bin/wdio run wdio.conf.js
Операционная система Mac
Консоль результатов выполнения выглядит так, как показано на скриншоте ниже.
Вы можете видеть, что один файл спецификации прошел, и в этом файле спецификации мы написали два тестовых случая, которые также прошли.
Операционная система Windows
Вся описанная выше настройка выполняется на операционной системе mac. Если вы хотите выполнить весь этот шаг для системы windows, выполните следующие шаги:
-
Откройте файл Specify Test Files, который называется wdio.conf.js в корневой папке проекта.
-
Найдите раздел “capabilities”.
-
Добавьте “platformName: ‘Windows 10′”.
После этого можно приступать к выполнению сценария автоматизированного тестирования Selenium для тестирования обезьян с помощью WebdriverIO.
Похвально! Вы успешно выполнили обезьянье тестирование с помощью WebdriverIO.
А если мой набор тестов больше?
Ваши требования к тестированию могут быть больше. Вам может потребоваться выполнить автоматизированное тестирование браузера для различных комбинаций браузеров + версий браузеров + ОС. Это может занять значительное количество времени, если вы не планируете использовать параллельное тестирование с Selenium Grid.
Однако имейте в виду, что при использовании собственной инфраструктуры вам придется несладко. Почему?
Допустим, вы составили матрицу тестирования браузеров и отфильтровали 50 лучших браузеров + комбинации ОС. Теперь, чтобы протестировать их, вам нужно настроить Selenium Grid для этих 50 комбинаций. Теперь каждый месяц будет выходить новая версия браузера от другого производителя, на рынке будут появляться новые устройства. Расширение Selenium Grid потребует не только дорогостоящих аппаратных ресурсов, но и времени. В конечном итоге, вы будете тратить больше времени и усилий на поддержание собственной Selenium Grid, а не на автоматизацию тестирования с помощью Selenium.
Что вы можете сделать? Начать автоматизированное тестирование Selenium с помощью LambdaTest.
Именно поэтому рекомендуется использовать облачную Selenium Grid, такую как LambdaTest. С помощью LambdaTest вы можете выполнять автоматизированное тестирование Selenium на 3000+ реальных браузерах, работающих на реальных операционных системах для настольных и мобильных компьютеров. Наша Selenium Grid совместима с любым фреймворком автоматизации тестирования и языком программирования, совместимым с Selenium. Мы также помогаем вам ускорить процесс тестирования браузеров, предоставляя сторонние интеграции с инструментами CI/CD, инструментами управления проектами, инструментами обмена мгновенными сообщениями, инструментами автоматизации без кода и т.д.
Автоматизация тестирования обезьян с помощью WebdriverIO на онлайн-сетке Selenium
Перед запуском теста на LamdaTest необходимо установить dev-зависимости. Вы можете установить их, введя следующую команду
npm install [@wdio/selenium-standalone-servi](http://twitter.com/wdio/selenium-standalone-servi)ce --save-dev
Теперь, предположим, вы хотите запустить тот же сценарий, который вы написали для локальной машины, на LamdaTest, вам просто нужно изменить файл Specify Test File, а именно wdio.conf.js.
Приведенная ниже конфигурация работает в Chrome версии 79.0 на операционной системе windows 10.
Примечание: Добавьте фактическое имя пользователя и accessKey с сайта LamdaTest.
Наиболее важным является параметр service. Вы должны установить его как selenium-standalone, иначе скрипт не запустится на LamdaTest.
path: "/wd/hub",
capabilities: [
{
maxInstances: 5,
name: "Random Click Suite", // name of the test,
user: "{add here LamdaTest User Name}",
accessKey: "{Add here access token}",
build: "Monkey Test",
platformName: "Windows 10",
browserName: "Chrome",
browserVersion: "79.0",
video: true,
console: true,
visual: false
}
],
coloredLogs: true,
hostname: "hub.lambdatest.com",
port: 80,
services: ["selenium-standalone"],
baseUrl: "",
Запустив ./node_modules/.bin/wdio wdio.conf.js, перейдите в веб-приложение LamdaTest и проверьте панель автоматизации. Вы увидите, что ваш скрипт запущен.
Результат выполнения в консоли:
Приборная панель LamdaTest
Приборная панель: В представлении Dashboard вы можете проверить сводку, где представлен обзор общего количества запущенных тестов, детали одновременных сессий и другая дополнительная информация.
Журналы автоматизации: В журнале Automation Logs вы можете просмотреть каждое выполнение в деталях, включая
версию браузера, версию операционной системы, дату и время выполнения, видео, скриншоты и шаги выполнения.
Временная шкала (TimeLine): На экране временной шкалы вы можете увидеть версию сборки вашего сценария автоматизации. Вы можете давать имена версий сборки в своих возможностях.
Журналы: Вы можете просмотреть журнал Selenium, а также журнал консоли.
Метаданные: Представление метаданных дает вам информацию о переданных метаданных, конфигурации ввода и конфигурации браузера.
Команда: В представлении команды вы можете увидеть статус каждого элемента шага.
Параллельное тестирование с WebdriverIO на LamdaTest
До сих пор мы изучали последовательную автоматизацию браузера. Мы говорили об использовании параллельного тестирования с Selenium Grid, когда мы выполняли наш сценарий автоматизации Selenium для обезьяньего тестирования с WebdriverIO на локальной установке.
Когда сценарий тестирования вашего проекта разрастается, и на его выполнение и получение результатов требуется гораздо больше времени. Вам необходимо найти решение для получения более быстрых способов генерирования результатов. Кроме того, на рынке появляется множество различных типов браузеров, и нам приходится иметь с этим дело. В такой ситуации параллельное выполнение поможет нам найти правильное решение. Сейчас мы изучим параллельное тестирование с помощью Selenium, используя WebdriverIO через онлайн Selenium Grid.
В WebdriverIO есть свойство maxInstances, которое помогает запускать параллельные браузеры. Измените ваш текущий wdio.conf.js с учетом возможностей нескольких браузеров и запустите тот же сценарий.
Следующие возможности позволят запустить браузер Safari на операционной системе Mac и браузер Chrome на операционной системе Windows.
Вы можете добавить несколько экземпляров в зависимости от мощности процессора целевой операционной системы. Для получения стабильных результатов рекомендуется создавать максимальное количество экземпляров (maxInstances).
capabilities: [
{
maxInstances: 5,
name: "Random Click Test - Safari-Mac", // name of the test,
user: "{Add LamdaTest User Name}",
accessKey: "{Add LamdaTest accessKey}",
build: "Parallel Monkey Test",
platformName: "macOS High Sierra", // macOS High Sierra & Windows 10
browserName: "Safari",
browserVersion: "11.0",
video: true,
console: true,
visual: false
},
{
name: "Random Click Test - Chrome-Window", // name of the test,
user: "{Add LamdaTest User Name}",
accessKey: "{Add LamdaTest accessKey}",
build: "Parallel Monkey Test",
platformName: "Windows 10", // macOS High Sierra & Windows 10
browserName: "Chrome",
browserVersion: "79.0",
video: true,
console: true,
visual: false
}
],
Давайте просмотрим LamdaTest и узнаем подробности выполнения. Видно, что выполняются два теста, подробности показаны ниже Concurrent Sessions.
Знаете ли вы, что делает input-number? Тип поля number позволяет быстро предоставить редактируемое числовое поле.
Следите за другими учебниками по автоматическому тестированию Selenium
Тестирование с помощью обезьян должно быть включено в ваши циклы тестирования, поскольку они могут помочь вам найти специфические ошибки пользовательского интерфейса. Существует 3 типа обезьян – тупые, умные и гениальные. Вы можете решить, как распределить автоматизированное обезьянье тестирование среди вашей команды в зависимости от их опыта в автоматизированном тестировании с помощью Selenium. Мы проводили обезьянье тестирование с помощью WebdriverIO, поскольку это один из самых популярных фреймворков для тестирования JavaScript.
Автоматизированное тестирование с помощью Selenium играет ключевую роль в обеспечении более быстрой доставки продукта за счет ускорения циклов тестирования. Вы можете тестировать свой сайт или веб-приложение в различных браузерах, версиях браузеров и на различных операционных системах. Определив наиболее важные комбинации браузеров и ОС с помощью матрицы тестирования браузеров, вы создаете сценарий тестирования и упоминаете различные комбинации, используя класс Desired Capabilities в Selenium. Таким образом, вы сможете освободить большую пропускную способность, автоматизировав повторяющиеся тестовые случаи для кросс-браузерного тестирования.
Используйте облачные Selenium Grid, такие как LambdaTest. Таким образом, вы сможете забыть о необходимости поддерживать собственную инфраструктуру Selenium и сосредоточиться только на одном – автоматизации тестирования с помощью Selenium!!!
Надеюсь, вам понравился этот урок. 🙂 Не забудьте нажать на значок колокольчика, чтобы вас предупредили в следующем уроке.;)