Геннадий Чурсов | QA++
4.26K subscribers
212 photos
1 video
1 file
156 links
Канал про тестирование и другие активности тестировщиков

В случае вопросов пишите: @topsycreed

Донаты: https://t.me/chursovQA/322
Download Telegram
Как и обещал в прошлом посте выкладываю свое решение задания:
Задание:

🧪 В проекте с автотестами на Rest Assured:

— Прокиньте токен из @BeforeAll во все тесты.
— Сделайте это без статики.
— Сохраните архитектурную чистоту (SOLID, KISS).

🐈 GitHub: https://github.com/topsycreed/rest-assured-token
В решении используется Java, Gradle, JUnit 5, AssertJ, Rest Assured, Jackson, Allure, Lombok и Owner для чтения properties.

Тестировал решил API сценарий добавления товара в корзину для сайта https://www.ae.com/us/en — этот же сайт и его API используем на моем бесплатном курсе по автоматизации на Java в рамках курсового пет проекта.

Что было сделано:
1️⃣ Создан TokenManager - Хранит токены по ролям (GUEST, AUTH) в ThreadLocal<EnumMap<>>
Использует ленивую инициализацию computeIfAbsent Позволяет получить токен через TokenManager.getToken() или .getToken(UserRole)

2️⃣ Создано JUnit-расширение - GuestTokenExtension и заготовка для будущего AuthTokenExtension
В beforeAll() устанавливает роль (TokenManager.setCurrentRole(...)) И иницилизируется токен (TokenManager.getToken())

3️⃣ Контроллер (BagController) не знает о ролях
Просто вызывает TokenManager.getToken() — и получает нужный токен Роль уже была установлена расширением → нет дублирования

4️⃣ Отдельный контроллер для токенов (TokenClient)
Передаем авторизационный хедер из свойств, если нужно можно даже сделать секретными данными, для Guest общедоступная информация.

Почему решение архитектурно чистое:
• KISS - Простой TokenManager, один вызов в контроллере
• Single Responsibility Principle - TokenManager отвечает только за токены, контроллер — за API
• Open/Closed Principle - Добавить новую роль — легко (новое расширение)
• Dependency Inversion Principle - Контроллер не зависит напрямую от способа получения токена
• Без static в тестах - всё управление токеном — через @ExtendWith(...)

Пишите свои идеи как еще можно было бы решить такую задачку.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🔥2🏆2
Новый пет-проект! 🐶🐱

Устроил себе мини-отпуск для перезагрузки — стал няней для четырёх хвостатых.
С пятницы по воскресенье у меня были на передержке две собаки и две кошки.

Для меня это небольшое, но важное достижение: столько пушистиков одновременно у меня ещё не было. Причём все это с релокацией на их территорию. Это был ещё один уровень перезагрузки, я будто пожил в каком-то уютном загородном отеле. Такой мини-отпуск на выходные.

В моменте, конечно, устаёшь: вокруг постоянно кто-то лает, мяукает, просит внимания, вылизывается у тебя под боком. Но сейчас я уже скучаю по этой суете 😅

Вообще, такое хобби для меня — это отличная альтернатива выгореть, уйти в саббатикал и уехать на гусиную ферму.
Советую иногда пробовать себя в новых ролях, менять обстановку, вырываться из рутины. После этого действительно ощущается, что кэш очищен, и ты снова готов возвращаться в рабочий режим и свой QA-день-сурка.
39👍10😍6🔥5
Всех с началом новой недели!

Давайте начнём её с лёгкого теста: выбери картинку какой ты сегодня тестировщик
(спойлер: все варианты — мемы с котиками и собаками в QA-ситуациях)

Что получилось? Насколько тест угадал?)
🔥16😁122🫡2
Если бы не IT, то что? 🤔

Недавно на летней распродаже в Steam прикупил Death Stranding — по сути, симулятор курьера. А на прошлой — брал Euro Truck Simulator 2 и гонял по Европе, как настоящий дальнобойщик.

Во-первых: Поймал себя на мысли: почему в свободное время я... тоже работаю? 😅 Или это всё-таки отдых?

А потом задумался глубже: а если не QA, то кем бы я стал? Курьером? Таксистом? Может нянчил бы хвостатых на передержке в промышленных масштабах? 🐾

Но тут другая проблема: Можно ли превратить хобби в работу — и не начать её при этом ненавидеть? 🤷‍♂️

А вы как думаете — если бы не IT, то что?
Пишите в комменты, очень интересно почитать!
10👎1