Возможно ли тестирование сайта в автоматическом режиме?
Возможно ли тестирование сайта в автоматическом режиме по такому алгоритму:
В определенный момент запускается скрипт, вероятно с другого сервера, который должен сделать следующее:
- пройти рандомно по разным страницам сайта, положить в корзину товары, заполнить поля оформления заказа, отправить заказ
- заполнить и отправить разные формы на сайте (обратный звонок, предзаказ...)
- полистать фото в галерее
- открыть страницу, определить загрузились ли картинки, не поехала ли верстка...
Иными словами, скрипт должен сделать тоже самое, что обычно делает человек на сайте.
В случае провала теста - отправить письмо админу.
==
Задача вытекает из-за того, что вдруг оказывается не работает форма на сайте, а никто и не знал, или есть глюк, который не позволял из корзины удалить товар и опять же - никто не знал.
Ясно-понятно, что разработчик (тестировщик) и клиент должны проверять как работает то или иное и работает ли вообще, но вот заказчик у меня спрашивает - возможно ли сделать такой "скрипт"?
А у меня вопрос - если возможно, то как такое реализуется, потому что я плохо себе это представляю:
a. Многие глюки могут быть не серверными, т.е. вполне может быть ошибка Javascript в браузере.
б. Даже если такой скрипт возможен, то на мой взгляд, его очень сложно будет "обучить" поведенческому фактору, например заполнение полей в определенном порядке, обход Капчи, ввод промокодов, набор товарного количества.
в. И абсолютно не понимаю - как можно определить - не поехала ли вёрстка?
Если это архисложно или невозможно, то как правильно донести до заказчика, что это нельзя реализовать?
Добавлено:
Большим плюсом решения будет: периодический запуск без участия человека и с уведомлением на почту.
headless browser, например chromium, запускается из командной строки, прописываются различные варианты что он должен делать и какой результат должен получиться.
Скриптуется и запускается автоматом.
Можно использовать что-то посложнее, типа Selenium.
Ну и вообще, QA automation engineer, есть такое.
Не увидел в ответах выше, так что вставлю свои 5 копеек. Посмотрите в сторону Cypress. На удивление крутая и почему-то не сильно известная штука. Это такой комбайн, в которой напиханы лучшие решения для тестирования на js, хорошая документация, поддержка jQuery. У него низкий порог вхождения. Особо и настраивать ничего не надо. Установил и поехали. И один из главных бонусов - тесты запускаются в очень презентабельном виде. Грубо говоря у вас в окошке браузера подсвечиваются выбираемые элементы и параллельно рядом показывается логика исполнения теста. Так что теперь когда начальник спросит "А чем вы вообще, ребята, тут занимаетесь?" ему всегда есть что показать.
Не очень популярен потому, что это в первую очередь debugger а не automation tester. И он не заменяет Selenium. У них разное назначение.
Плюс у него есть ограничения, которые не позволяют его использовать для любых приложений. Например, нельзя переключаться между табами и ограниченное использование с приложениями на React
Евгений, про Selenium у них собственно в первой же строчке написано. На мой взгляд Selenium просто стандарт де-факто и привычный инструмент для тестировщиков. По этой причине его обычно используют не глядя на задачу (собственно, первый ответ к этому вопросу). При этом для целей "протыкать сайт" он явно избыточен. Cypress как раз хорош простотой и понятностью. Даже новичку в js с ним работать комфортно. И показать результат тестов заказчику, программисту, верстальщику очень просто. Можно визуально посмотреть последовательность действий и к чему они привели.
В сухом остатке, если вы пишите супер-проект с high-load, PWA и прочими хайповыми словами, то Cypress - не лучший выбор. Но если вы пишите обычный магазин, сайт-визитку, или ещё что-то такое, что входит в 95% проектов в интернете, то на Cypress по крайней мере стоит посмотреть.
Есть два варианта - как сказали выше, можно написать тесты и гонять их с селениум и всякими тулами на его основе.
Второй вариант (если сайт публичный) - с помощью transaction tests (https://tools.pingdom.com/,https://www.site24x7.com/ и т.п. ) можно записывать и запускать автоматически такие тестовые сценарии без всякого программирования.
Разве у pingdom и site24x7 появился такой функционал??
Запускать тест в браузере?
Они вроде как только на доступность сайта рассчитаны и еще на некоторый функционал, но не на e2e. На сколько я помню.
Если не нужно тестировать кросс- браузерно, а достаточно одного хрома, то лучше puppeteer ничего нет. Это родной проект Гугла, так что по эффективности и простоте работы с хромом ни один selenium или что-то ещё и рядом не стоят. Плюс отлично дружит с typescript, что в наше время немаловажно. В качестве тест - раннера рекомендую jest, там всё есть "из коробки", плюс опять же typescript и отлично прикручивается к puppeteer, есть специальные библиотеки. Дальше Jenkins или что-то другое - значения не имеет, вопрос привычки.
Или можно использовать сервисы где можно использовать среду c уже готовыми интеграциями, например, c почтой, telegram и sms. С запуском по расписанию и оповещением: https://docs.testoid.io/guide/email/
Есть ещё такой сервис как screenster для автоматического UI тестирования веб приложений. Там знание Selenium не нужно, просто записываешь свои действия, а он потом выполняет тесты на основе того, что записал
Ни в коем случае не начинайте использовать селениум! Это сплошные тормоза и глюки. Возьмите лучше упомянутый выше Cypress. Он не глючит и шустрее и тесты для него пишутся на JS с привычным синтаксисом как в Jest/Mocha.
Автоматический запуск с уведомлением на почту у нас реализован через Jenkins.
Это debugger а не полноценный framework для тестирования. Они с Selenium сделаны для разных целей.
Плюс он не умеет работать с табами и с приложениями на React
Евгений, а вы его пробовали использовать? интересно на чём основаны ваши утверждения. у нас все приложения на React и мы всё отлично тестируем с помощью этого фрэймворка, а не дебаггера. С табами не умеет работать - это да. Но это редко когда нужно.