Кто как проверяет большое количество линков

Добрый день хотелось бы узнать кто как проверяет линки?

Суть задачки имеется подобласть линков энное количество нужно проверить все ли они работают и правильно ли переходят на нужную страничку:

Решил её через алгоритм довольно таки простой list<webelement> заганяю все эти элементы и беру оттуда текст потом подставляю этот текст в xpath и открываю данный элемент в новом окне потом сравниваем title новой страницы с текстом названия линка если таковой совпадают значит link работает если нет значит не работает закрывает новое окно и подсвечиваем линк делаем скриншот и в репорт и так пока не закончатся линки .

Вопрос хотелось бы услышать мнения кто как такое делает и какой самый быстрый способ используется webdriver +junit+thucydides

Вообще достаточно сомнительные мероприятие проверки тайтла в зависимости от текста линК. Плюс тайтл можно проверить только после загрузки этой внешней страницы, что достаточно долго и сильно отражается на времени прохождения тестов. Еще один момент, зачем проверять тайтл внешней страницы? Получается что вы проверяете не свое приложение, а стороннее. у себя делаю это в упрощенной форме, т.к. простой тест - залог успеха :slight_smile: Сначала считаю сколько элементов линков, затем открываю их всех, считаю сколько открылось табов, закрываю их. Плюсы - простота, тестирование нужных сервисов, тестирование что что-то открывается и загружается, не надо ждать загрузку страницы, нет привязки к внешним сервисам.

Вам еще учиться и учиться, если так делаете.
404 Not Found

Ну так расскажите как и почему и главное зачем вы тестируете внешние линки? Критиковать могут все. Аргументировать единицы.

Где-то указано, что они внешние? Нет - значит внутренние.
Пусть мануальщики проверяют линки, верстку, шары, соответствие контента и т.д.
Автоматизируется регресс, функциональность отвечающая за бизнесс-логику. Но если так надо - можно проверить элементарным HEAD, с кодом ответа. Либо GET с вхождением необходимой фразы в боди страницы (не UI тест, но все же)

А вообще: использование Selenium для таких вещей - говорит о “качестве” специалиста. Для разнообразных задач - нужен соответствующий инструмент.

2 лайка

Підтримую.
Якщо питання стоїть: чи робочі лінки, то достатньо перевірити на 404, як на мене (пишу на Python, а він має чудову лібу requests, яка доволі швидко з цим справиться).

якщо у вас сайт, на якому варто перевірити чи всі посилання “живі”, то використайте павука (scrapy).

1 лайк

Т.е. если у вас в сайдбаре есть линки на сторонний левый сайт и у них вдруг упадет сервер или что-то сломается, то ваш тест должен упасть?

:))))
не поспішайте з висновками.

в любому випадку на python-і є “startswith” метод, яким можна перевірити початковий хост.
для scrapy можна вказувати “deny”/“allow” регулярки і тд.

визначте чіткіше завдання і тоді спробуємо підібрати метод, який би найкраще підійшов для його вирішення.

Странно почему тест должен падать ? если мы проверяем неизвестное количество линков ?
Тест не должен падать но должен помечать не работающий линк , это легко делается через verifyThat.
По поводу мануальщиков, как вы думаете на каком количестве линков мануальщик устанет плюнет и скажет что все работает ? 100, 200 ? а повторный прогон ? а вдруг кто то что то поменял ? и почем это должно быть дольше ? по моему лучше потратить 2-3 часа на написание грамотного одного теста чтобы применим был к 80 % таким же тестам и без копипаста.

По поводу проверки почему только на 404 ? а если линк рабочий но переходить не туда а таких линков у меня например 5 из 200, при затрате времени и качества лучше все таки автомат чем каждый раз бедный мануальщик клацать будет ? вам не кажется ? А если линки добавятся например еще 100 ? что делать будем ?

По поводу использования Selenium как по мне так он как раз и используется для большого количества однотипных тестов.

По поводу качества специалиста мне вот интересно у меня есть 2 теста где проверяет гуи и функционал где то порядка 10000 товаров из 10000 товаров ошибок всего порядка 3%
что вы мануальщику скажете иди дорогой у тебя есть куча методологий :slight_smile: :slight_smile: :slight_smile: ???

Я бы сказал сразу что такой специалист не специалист.

По поводу скорости никто вам не мешает настроить профиль или например распараллелить ваши тесты , или мешают ? Да скорость не та конечно как например хотелось бы но все же намного быстрей чем ручками.
Но самое главное это то что просто хотелось услышать варианты решения, так как задачка решена и забыта правда иногда включает серое вещество :smile: Спасибо за паука попробую это то что нужно или нет.

1 лайк

Разделю на классы эквивалентности, и проверю по границам. Если функциональность работает - она работает для всех товаров, в таком случае. Иначе - проблема не в функциональности, и это можно разглядеть при проверке ручками (ну или автоматом, как Вы).

Поле принимает [0-10] символов, которыми могут быть только числа в диапазоне 0-9. Вы будете проверять все от 0 до 9999999999?

1 лайк

Проверять через UI 10000 товаров? Я бы тоже подумал над тем, что же там на самом деле проверяется, какова цель тестов? Скорее всего можно через UI сделать некоторые типичные проверки (по классам эквивалентности), а остальное, например, через БД или API. При этом будет достигнута скорость тестирования, которую через UI просто не получить, сколько ни распараллеливай. При одинаковых результатах

А что плохого? Пусть падает. Тесты для того и нужны, чтобы сигнализировать о поломках.

Ведь это означает, что пользователь тоже будет получать ошибку при переходе по линку. А так вы сможете предпринять необходимые действия или хотя бы будете в курсе ситуации.

Только проблема в том, что вас не интересует, упал ли сайт у вашей партнерской компании или у вашего спонсора отвалилась ссылка. Самая большая проблема автоматизированного тестирования в бОльшинстве случаев - его избыточность.

… или партнер сменил урл/api/etc, а кто-то забыл комитнуть в репозиторий…
Спустя некоторое время партнеры/спонсоры, решив кликнуть на свои логотипы в вашем приложении, попадают на порно-хаб… Вы долго объясняете менеджеру про “избыточность”, но спонсоры уже прекращают с вами сотрудничество… Проекту не хватает финансирования… Все идут в сад на бенч…
Вывод: либо тестировать качественно, либо не тестировать вообще.

Так подождите, а как у вас устроен флоу, что вы не знаете что партнер сменил линк? Вы должны сами нагуглить это, партнер вам не должен сообщить, тикет не должен быть поставлен и сделан? Или все делается по флоу “абы как”?)

1 лайк

Какая разница как “устроен” флоу - я просто смоделировал ситуацию (так же спонтанно, как вы приплели “внешние линки” к данной теме), дабы донести до вас то, что пытаются сказать другие участники ветки.

Т.о. вы тестируете требование: нажатие на любую ссылку из блока А открывает новое окно браузера.
Несет ли это требование смысловую или функциональную нагрузку? Мне видится что нет.
Что дает тест, который покрывает это требование? Ровным счетом то, что и требование - ничего.

Если перефразировать кратко: если вам не важен результат, зачем это тестировать?

Я бы использовал браузеры без UI, например phantomjs или htmlUnit, чтобы попасть на страницу и получить линки, а затем проверял бы статус код: How to get HTTP response code for a URL in Java? - Stack Overflow

Не могу сказать за питон, но с точки зрения тестирования глупо(имхо) считать количество открывшихся табов. А если ссыль тянет за собой js action? У Вас откроется N “about:Blank” табов и все счастливы? Неправильно это… :slight_smile:

Я для проверки линок сделала специальный скрипт, который шлет http запросы и проверяет ответы. Просто выдираю линки из источников и прогоняю через скрипт, чтобы облегчить работу всей тест-команде. Но это мало отношения имеет именно к UI автоматизации.