Size: a a a

QA — Автоматизация

2020 December 21

MK

Mem Kekovich in QA — Автоматизация
Алексей
У тредлокала есть один плюс - при виде кода с оным без серьезной причины можно его автора сразу откидывать из рассмотрения. Потому что глобальные переменные в целом - это зло. А глобальные потоковые переменные - особое джавистское зло. Да, когда ты один такой разраб, и пишешь код только для себя, там можно чего угодно наворотить, все равно никто не увидит, а ты более менее еще помнишь, где у тебя разложены волшебные магические штучки. А когда вас 10 человек, 10 проектов и в коде лежат такие мины - рано или поздно они начнут взрываться :) Да же при том, что типовой селен "фреймворк" - достаточно примитивная по своей сути штука.
З.Ы. Не бывает "простого решения сложных проблем". Бывают костыли, проблемы с которыми потом придется решать с еще большим гемором :) Выше - вполне себе пример этому :)
Алексей ты как-то ни два ни полтора :) тредлокал в джаве нужен и будет. То, что кто-то его готовит не верно - проблема этого человека.  А ты пишешь будто если в коде есть тредлокал внутри проекта - ггвп. А потом пишешь, что ну не в спринге можно)
источник

А

Алексей in QA — Автоматизация
Boris Osipov
эммм а зачем шарить один инстанс драйвера на >1 поток? смысл в чем? быстрее работать от этого ничего не станет. а покрешить драйвер оч легко.
если у вас тестики весело жмут на кнопочку и идут на след страничку - то конечно. Если же у вас какие то отчеты, подтягивающиеся из интеграций и тп, с приличными по времени расчетами - зачастую использование нескольких потоков экономит порядочно времени, так как расчеты они проводят параллельно. При этом управление браузером было нужно каждому потоку - фильтры, подгрузки данных и тп. На сотнях тестов прирост производительности был весьма и весьма ощутимым. Причем эти потоки были не порождениями одного теста, а различными тестами, шарящими общий стейт машины (для простоты - изначальные сеттинги отчета) в качестве своего рода прекондишена. Классический подход ввиде полностью независимых тестов в случае селениума зачастую потребляет слишком много времени на тест ран, а в случае "интересных" легаси систем создать стейт через базу и прочие хранилища - проще утопиться
источник

ZE

Zewa 🚽 Expert in QA — Автоматизация
У меня был кейс с сбором всякой фигни фоном, js специфичной, и складывание потом этого в метрики и отчёты
источник

BO

Boris Osipov in QA — Автоматизация
Алексей
если у вас тестики весело жмут на кнопочку и идут на след страничку - то конечно. Если же у вас какие то отчеты, подтягивающиеся из интеграций и тп, с приличными по времени расчетами - зачастую использование нескольких потоков экономит порядочно времени, так как расчеты они проводят параллельно. При этом управление браузером было нужно каждому потоку - фильтры, подгрузки данных и тп. На сотнях тестов прирост производительности был весьма и весьма ощутимым. Причем эти потоки были не порождениями одного теста, а различными тестами, шарящими общий стейт машины (для простоты - изначальные сеттинги отчета) в качестве своего рода прекондишена. Классический подход ввиде полностью независимых тестов в случае селениума зачастую потребляет слишком много времени на тест ран, а в случае "интересных" легаси систем создать стейт через базу и прочие хранилища - проще утопиться
источник

AB

Alexei Barantsev 🗹... in QA — Автоматизация
Алексей
Причем проорал я даже не с этого - ну вынесли и вынесли, время исправлять проблему - перенести драйвер в канкарент хэш мап. Проорал я с того, что они откатывать вынуждены. Из тредлокала перенести не могут
поддержка обратной совместимости — вещь непростая, да... иногда приходится идти на компромиссы с совестью :)
источник

BO

Boris Osipov in QA — Автоматизация
все смешалось кони люди.
источник

KN

Kirill Nekiy in QA — Автоматизация
Ребят, чет не могу найти java+allure 2.6.0, что и чем нужно аннотировать чтобы в отчете аллюры suite и package  отображались не именем java класса, а нормально?
источник

MK

Mem Kekovich in QA — Автоматизация
Kirill Nekiy
Ребят, чет не могу найти java+allure 2.6.0, что и чем нужно аннотировать чтобы в отчете аллюры suite и package  отображались не именем java класса, а нормально?
Фича, стори, эпик
источник

KN

Kirill Nekiy in QA — Автоматизация
Mem Kekovich
Фича, стори, эпик
Не, это другие классификаторы в отчете
источник

KN

Kirill Nekiy in QA — Автоматизация
В старй версии сьют это @title был вроде, а ща хз
источник

MK

Mem Kekovich in QA — Автоматизация
Kirill Nekiy
Не, это другие классификаторы в отчете
Ну есть же дока. Есть описание аннотаций. Попробовать - 1 минута времени
источник

KN

Kirill Nekiy in QA — Автоматизация
Mem Kekovich
Ну есть же дока. Есть описание аннотаций. Попробовать - 1 минута времени
Вроде все прочекал, не нахожу
источник

KN

Kirill Nekiy in QA — Автоматизация
Очевидно я туповат
источник

AV

Alexei Vinogradov in QA — Автоматизация
Kirill Nekiy
Ребят, чет не могу найти java+allure 2.6.0, что и чем нужно аннотировать чтобы в отчете аллюры suite и package  отображались не именем java класса, а нормально?
источник

KV

Ksenia Vorobyeva in QA — Автоматизация
Я полторы минуты думала, что это какой то чатик и пыталась зайти)
источник

KV

Ksenia Vorobyeva in QA — Автоматизация
Потом до меня дошло
источник

AV

Alexei Vinogradov in QA — Автоматизация
Kirill Nekiy
Вроде все прочекал, не нахожу
Это аннотация не из Аллюра, может поэтому и не нашел. Но Аллюр именно её подхватывает
источник

AV

Alexei Vinogradov in QA — Автоматизация
А, ну если это JUnit 5, конечно, а то там иначе есть варианты
источник

AB

Alexei Barantsev 🗹... in QA — Автоматизация
Sergey Korol
Насколько я правильно помню, в Selenide драйвера не в ThreadLocal лежат, а в СoncurrentHashMap. Но связь с потоками есть по ключу, это да. Но в целом, ничего плохого в использовании ThreadLocal я не вижу (даже вне контекста драйвера). Помимо разнообразных нюансов с параллелизацией, у ThreadLocal есть один большой плюс - из него легко можно получить глобальный контейнер, лишенный классических проблем статических переменных. А это большой плюс в дизайне разнообразных оберток. Да, везде есть альтернативы. Но ThreadLocal в большинстве случаев - самый простой вариант решения сложных проблем. Другое дело, как вы уже упомянули выше, - люди частенько этим злоупотребляют. Но тут проблема не в ThreadLocal, как мне кажется. Более того, в своей собственной фабрике вы от него не отказались: https://github.com/barancev/webdriver-factory/blob/master/src/main/java/ru/stqa/selenium/factory/ThreadLocalSingleWebDriverPool.java#L28
суть не в том, какая именно реализация используется, а в том, что обращаться за драйвером в ThreadLocal или в СoncurrentHashMap можно только при условии нахождения в "правильном" потоке. поэтому если какой-то код запускается в другом потоке, то передавать туда драйвер из основного потока надо более явно, тогда никаких проблем не будет
источник

KN

Kirill Nekiy in QA — Автоматизация
Alexei Vinogradov
Это аннотация не из Аллюра, может поэтому и не нашел. Но Аллюр именно её подхватывает
неа, не ее ее чекал
источник