Python мануфактураJavaDesign Patterns для автоматизаторів

Терміни, нюанси та джерела

Що змінилося після запису · 2:55

storageState охоплює більше, ніж cookies і localStorage

У відео сценарій побудований навколо cookies, storage state та companyId для вибору ролі.

Актуальний API також уміє включати IndexedDB через indexed_db (додано у v1.51) і virtual WebAuthn credentials через credentials (додано у v1.61).

На сторінці може бути різний контент — що робити? →

Термін · 11:05

Twilio test credentials

Окремі credentials для simulated API requests: вони не змінюють production data, не створюють charge і не з'єднуються з реальними телефонами. Це contract-level test, а не доказ carrier delivery.

Прихована складність бекенд-тестування →

Практика · 2:00

Спроєктувати runner для одного UI-suite

Намалювати маршрут від runner до application і залежностей.
Зафіксувати потрібні credentials та мінімальні network rules.
Запустити suite з обраною concurrency й записати peak CPU/RAM.
Обґрунтувати hosted або self-hosted варіант фактичними даними.
Короткий capacity та access worksheet без універсальних припущень про RAM або вартість.

Інфраструктура автотестів та її нюанси →

Java · Сесії: AMA та PMP · 11:30–16:30

Одна схема ключів, CI secrets і `.env.example`

Код має звертатися до стабільних логічних ключів на кшталт `BASE_URL`, не до `DEV_BASE_URL` або `STAGE_BASE_URL` з ручним replace. Цільове середовище вибирає джерело значень, а не інші назви змінних. Завдяки цьому локальний і CI-запуск проходять тим самим шляхом. У CI значення зберігаються як захищені secrets/variables або як секретний файл. Репозиторій містить лише `.env.example` чи аналогічний шаблон зі структурою та без реальних credentials. Якщо використовується config server, CI може зберігати лише мінімальні credentials для доступу до нього.

Юзер менеджмент та костилі з якими ви стикнетесь в житті →

Java · Додаткові матеріали · 35:49–44:07

Credentials і URL у `.env`

Логін, password і внутрішній base URL не слід публікувати в repository. Для Java-проєкту додається Dotenv dependency через Maven Central і Gradle, створюється `.env` у корені, а сам файл додається до `.gitignore`. Значення завантажуються через Dotenv API під час запуску; IDE plugin лише полегшує підказки ключів або маскування значень і може вимагати restart.

Маленький рефакторинг і тестові дані у Java →

Java · Сесії: AMA та PMP · 0:00–2:00

Не хардкодити єдиний набір даних

Credentials, product, company чи іншу сутність не варто фіксувати безпосередньо в тілі всіх тестів: один екземпляр не дає варіативності й приховує проблеми з іншими значеннями. Faker або власний generator має враховувати domain constraints і boundary values, а кожен run — по можливості створювати інший валідний набір. Детермінований seed можна залишити для відтворення падіння.

Тестові дані для автотестів →

Java · Сесії: AMA та PMP · 0:00–3:30

Коли прямий DB access справді прискорює тести

Створення або читання сутності через API проходить routing, application logic, database access і serialization, тому сотні setup-запитів накопичують час. Прямий запит до database інколи виконується за кілька мілісекунд і може бути корисним для підготовки або пошуку test data. У Java типовим низькорівневим контрактом є JDBC; у Python — драйвер конкретної СУБД, який зазвичай підтримує Python DB-API. Для підключення потрібні host/URL, database/schema, credentials і driver. Секрети не мають бути в коді, а тестовий користувач БД повинен мати мінімальні права. Прямий insert не завжди еквівалентний product operation: він може обійти validation, events, audit, caches та синхронізацію. Тому DB setup доречний лише для сутностей, де команда явно приймає такий контракт.

Автомтизація баз даних та що з тим робити та що знати →

Java · Сесії: AMA та PMP · 0:00–4:30

Environment variables і межа простого `.env`

Environment variable передає процесу значення на кшталт base URL, username або password без hardcode у вихідному коді. У Unix-подібній оболонці змінну можна експортувати перед запуском; у Windows вона задається іншим системним механізмом. `.env` є зручним локальним представленням таких пар ключ–значення, яке застосунок читає під час старту. Проблема з'являється, коли один продукт має кілька web/API/admin-сервісів і кожному потрібні окремі URL та credentials. Плоский набір ключів розростається, префікси дублюються, а залежності між значеннями стають неочевидними. Для невеликого проєкту `.env` достатній; переходити на складніший формат варто після реального зростання конфігурації.

Юзер менеджмент та костилі з якими ви стикнетесь в житті →

Java · Сесії: AMA та PMP · 1:30–3:30

Community flow і перші boundary cases

[Дивитися з 01:30](https://www.youtube.com/watch?v=viR9Rnmxse4&t=90s). Початковий end-to-end flow: створити user, створити community, перевірити її сторінку та редагування. Уже тут видно реальні edge cases: auto-generated URL під час створення не обов’язково поводиться так само під час edit, mobile-first layout відрізняється на desktop, а payment merchant потребує окремого test configuration і не має використовувати production credentials.

Практика курсу на YOY, домашні завдання та формат ПМП →

Java · Додаткові матеріали · 16:33–24:00

Аргументи методів і спільні test data

Якщо крок потребує email і password, їх передають у `loginUser` як аргументи типу `String`. IDE показує помилку, коли method signature ще не приймає передані значення; незрозумілий текст помилки можна розібрати окремо, не передаючи секретні дані. Повторювані credentials тимчасово піднімаються в поля класу, а приклад із лапками демонструє, що вміст `String` та екранування треба перевіряти за фактичним значенням.

Маленький рефакторинг і тестові дані у Java →

Java · Advanced: API-автоматизація · 20:00–30:00

User flow і server-to-server flow

User flow емулює дії людини і consent, service flow представляє machine client. Якщо test завжди бере admin/service token, він не перевіряє real user authorization boundaries. Потрібні positive/negative checks для scopes, audience, client type і resource access. Token exchange чи внутрішні service tokens не слід вигадувати за Network tab — їх contract має дати backend/security team.

OAuth 2.0 і конфігурація →

Java · Сесії: AMA та PMP · 21:25–25:13

Де Cucumber усе ж доречний

Невеликий набір Gherkin scenarios може бути корисним як зрозумілий business report: користувач може оформити замовлення, створити event, виконати payment або отримати потрібну analytics. Це має сенс, якщо stakeholders справді читають report і scenarios є спільним контрактом. Для детальної діагностики developers зазвичай потрібні не довгі Gherkin steps, а точні request data, `curl`, response, credentials для test environment, frontend/backend logs і stack trace. Тому практичний висновок відео: використовуйте BDD для спільного уточнення поведінки, а Cucumber — лише там, де його додаткова мова реально має читача й покриває невеликий набір стабільних business flows.

Чому критикують BDD і Cucumber →

Java · Сесії: AMA та PMP · 30:48–34:21

Routing-регресії та роль API tests

Під час міграції можна правильно перенести service, але помилитися в gateway route: не прокинути authorization header, body або інший обов’язковий параметр. Клієнт передасть credentials, gateway прийме request, а внутрішній service поверне `401`, бо потрібний header загубився між ними. API tests швидко виявляють такі дефекти mapping, schema й routing без довгого пошуку причини через UI. Практична стратегія сесії: окремо перевіряти контракт ресурсу, окремо — ключові business flows, а під час database чи infrastructure migration запускати обидва набори як regression coverage.

Міграція бази даних і тестування даних →
Запитати в чаті про «credentials» →