Size: a a a

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

2020 July 16

R(

Roman (rpwheeler) in QA — Автоматизация
Сережа Сороко
При параллелизации каждый агент выполняет тесты на своем образе докер контейнер, и они не общаются друг с другом, насколько я знаю) поэтому хотелось бы какого хорошего решения для этого)
А что они могут делать? Дёргать эндпойнт? Поднять сервис который будет отдавать юзеров.
Проверять через систему или тестовый костыль свободен ли текущий юзер? Пусть им система сообщает, берут свободных, лочат, освобождают.
Вычислять текущего юзера в зависимости от параметра контейнера и текущей минуты? (контейнер 6, минута 13, юзер 613)
источник

IT

Ivan Trechyokas in QA — Автоматизация
Ivan Trechyokas
сделал Invilidate cache и теперь даже mvn test не работает =)
в общем, поднял версии с junit до 5.6.2 и platform до 1.6.2 и заработало.
источник

AK

Anton Khayrutdinov in QA — Автоматизация
Сережа Сороко
При параллелизации каждый агент выполняет тесты на своем образе докер контейнер, и они не общаются друг с другом, насколько я знаю) поэтому хотелось бы какого хорошего решения для этого)
Я бы в первую очередь уточнил этот момент. Я конечно далек от js, но по мне это выглядит диковато. Не перенаправлять вызовы в контейнер, а прям все тесты ранить изолированно? Это странно
источник

AK

Anton Khayrutdinov in QA — Автоматизация
Сережа Сороко
Всем привет) ребят, есть вопрос: как сделать, чтобы при прогоне рана с параллелизацией использовался только определенный пул user id для создания аккаунтов? Или для решения этого в каждом тесте должен быть прописан хардом уникальный user id? Просто этот подход не особо мне нравится) cypress+ buildkite
Вообще Роман перечислил адекватные варианты. Если говорить в целом и без костылей, надо искать общее хранилище, куда имеют доступ все тесты, и на нем реализовывать потокобезопасный пул номеров. Хранилища - от глобальных переменных. до какой-нибудь легковесной бд или отдельного сервиса. У меня была такая проблема в java тестах, и красивого готового решения я не нашел.
источник

IT

Ivan Trechyokas in QA — Автоматизация
Сережа Сороко
Всем привет) ребят, есть вопрос: как сделать, чтобы при прогоне рана с параллелизацией использовался только определенный пул user id для создания аккаунтов? Или для решения этого в каждом тесте должен быть прописан хардом уникальный user id? Просто этот подход не особо мне нравится) cypress+ buildkite
не гейзенбаг ребята из VK (Алексей Тюрин) рассказывал о том, как они сделали свой UsetService для тестов на Spring(без деталей), тест запрашивает пользователя, получает его, он помечается занятым, далее не выдаётся остальным, пока его не освободят.
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Ivan Trechyokas
не гейзенбаг ребята из VK (Алексей Тюрин) рассказывал о том, как они сделали свой UsetService для тестов на Spring(без деталей), тест запрашивает пользователя, получает его, он помечается занятым, далее не выдаётся остальным, пока его не освободят.
Да это на Гейзенбаге и Алименков в докладе про паттерны в автоматизации рассказывал.
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Только там, поскольку паттерн, был просто обобщённый пример что вот так можно решать эту проблему.
источник

AK

Anton Khayrutdinov in QA — Автоматизация
Ну, написать свой сервис это прям универсальный пример, как решить любую проблему)
источник

S

Sergei in QA — Автоматизация
Однозначно)
источник

AK

Anton Khayrutdinov in QA — Автоматизация
Но в этом конкретном случае и правда пришлось написать свой сервис.
источник

IT

Ivan Trechyokas in QA — Автоматизация
Anton Khayrutdinov
Ну, написать свой сервис это прям универсальный пример, как решить любую проблему)
так если всё скатывается к этому, то что делать =)

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

AK

Anton Khayrutdinov in QA — Автоматизация
Ivan Trechyokas
так если всё скатывается к этому, то что делать =)

можно в текстах поднять класс, который запросит пользователей через обычный бекенд по какому-то ключу. А потом будет сам своей логикой раздавать тестам:
Тест - дай мне пользователя
библиотека - на
Это если количество пользователей на порядки больше количества тестов, так что мы можем раздавать их по некоторой эвристике с малым количеством коллизий (как предложил Роман с id контейнера и таймстемпом, весьма остроумно кстати). А если нет, то без внешнего хранилища никак. Тем более что тесты могут запускать разные люди, и т.д. и т.п. Короче надо внятно ставить тз, приемлимых решений много.
источник

IT

Ivan Trechyokas in QA — Автоматизация
Anton Khayrutdinov
Это если количество пользователей на порядки больше количества тестов, так что мы можем раздавать их по некоторой эвристике с малым количеством коллизий (как предложил Роман с id контейнера и таймстемпом, весьма остроумно кстати). А если нет, то без внешнего хранилища никак. Тем более что тесты могут запускать разные люди, и т.д. и т.п. Короче надо внятно ставить тз, приемлимых решений много.
ну почему, если пользователей меньше - добавляем наш любимый sleep и ждём освобождения пользователя. Либо добавляем ещё пользователей в систему.
источник

AK

Anton Khayrutdinov in QA — Автоматизация
Ivan Trechyokas
ну почему, если пользователей меньше - добавляем наш любимый sleep и ждём освобождения пользователя. Либо добавляем ещё пользователей в систему.
Это значит, мы знаем, что пользователи заняты другим тестом => нужно хранилище локов.
источник

IT

Ivan Trechyokas in QA — Автоматизация
Anton Khayrutdinov
Это значит, мы знаем, что пользователи заняты другим тестом => нужно хранилище локов.
так сама либа и решает это на уровне приложения тестов. А не отдельный сервис у себя не бекенде
источник

AK

Anton Khayrutdinov in QA — Автоматизация
Ivan Trechyokas
так сама либа и решает это на уровне приложения тестов. А не отдельный сервис у себя не бекенде
А как она решит, если в исходной задаче тесты запускаются изолированно без общего адресного пространства?
источник

AK

Anton Khayrutdinov in QA — Автоматизация
А так да, глобальная переменная может быть таким хранилищем, хоть и в рамках только одного рана.
источник

IT

Ivan Trechyokas in QA — Автоматизация
Anton Khayrutdinov
А как она решит, если в исходной задаче тесты запускаются изолированно без общего адресного пространства?
эт да, я чёт просмотрел про отдельные воркеры и контейнеры
источник

AA

Andrew Antoniuk in QA — Автоматизация
Всем привет можно ли какими то инструментами сделать скриншот елемента в браузере с горизонтальной прокруткой
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Andrew Antoniuk
Всем привет можно ли какими то инструментами сделать скриншот елемента в браузере с горизонтальной прокруткой
Ээээээээээээээээ... а в чём проблема?
источник