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

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

Нюанс · 30:30

Test hook не повинен послаблювати production authentication

Окремий header, account або form для automation має бути технічно недоступний у production. Production path повинен зберігати потрібні authentication factors, а authentication failures і lockouts — логуватися та моніторитися.

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

Практика · 22:13

Negative tests для даних і доступу

Спроєктуй negative tests для читання чужого row, підміни owner claim, вставки row поза дозволеним scope та запиту на erasure з legal-retention exception. Відокрем authentication evidence, database authorization і data-lifecycle decision.
Набір cases показує, який шар відхиляє кожну дію та який audit evidence потрібен.

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

Термін · 0:00

SSH key pair

GitHub SSH authentication uses a private key kept on the local machine and a corresponding public key added to the GitHub account; a passphrase protects the private key at rest.

2. Git Workflow у PyCharm/IntelliJ →

Python мануфактура · Сесії: AMA та PMP · 6:10–11:05

Ланцюг gateway, сервісів і invite token

[Дивитися з 06:10](https://www.youtube.com/watch?v=GwmAB4IvQUk&t=370s). У реальній архітектурі browser звертається до API gateway, той перевіряє authentication та authorization, передає запит backend-сервісу, а backend отримує шаблон або ініціює відправлення через інший сервіс. Invite token має бути згенерований правильним компонентом, переданий без зміни й мати визначений TTL. Якщо контракт нечіткий, один сервіс може додати зайвий або захардкоджений token, після чого формально валідний request завершується невалідним invite. Перевірка лише зовнішньої специфікації endpoint не знаходить помилку в розподілі відповідальності між сервісами.

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

Python мануфактура · Програма курсу · 50:20–52:50

Підсумкова архітектура precondition

API package містить client і мінімальні response models, fixture повертає авторизований client, а UI-тест використовує тільки потрібний endpoint для setup. Login token не перевипускається перед кожною операцією instance. Практична вправа — реалізувати аналогічний precondition через наявний у проєкті HTTP client (`requests`, `httpx` або Playwright APIRequest), перевірити authentication окремо й лише потім під’єднати результат до UI-сценарію.

3. API preconditions →

Python мануфактура · Програма курсу · 0:00–5:35

Навіщо перевикористовувати авторизацію

Повторний login у кожному тесті витрачає час і збільшує кількість нестабільних UI-кроків. Playwright може зберегти cookies та local storage після однієї авторизації, а нові browser contexts стартуватимуть уже в потрібному стані. Таке спільне використання допустиме лише тоді, коли застосунок дозволяє паралельні сесії одного акаунта, а тести не змінюють взаємно залежний server-side стан. `storage state` прибирає login, але не робить інші дані тестів незалежними.

2. Storage state, cookie manipulation, дебаг зникаючих елементів →

Java: архівні доповнення · 0:00–2:10

GitHub-акаунт і авторизація в JetBrains IDE

Спочатку потрібно створити та підтвердити GitHub-акаунт. У settings JetBrains IDE знаходиться розділ GitHub, де можна увійти через browser authorization. У відео також згадується personal access token як альтернатива. Ця авторизація дає IDE можливість створювати, клонувати та оновлювати repositories.

Публікація Java-проєкту на GitHub →

Python мануфактура · Програма курсу · 3:00–6:00

Генерація ключа, passphrase і 2FA

Показано генерацію ключа командою `ssh-keygen` з email-коментарем, вибір шляху збереження та введення passphrase. Символи passphrase в терміналі не відображаються — це нормальна поведінка. Публічну частину додають у GitHub Settings → SSH and GPG keys. Приватну частину не копіюють у GitHub, чати або репозиторій. Додатково рекомендується ввімкнути двофакторну автентифікацію. Після зміни налаштувань автентифікації IDE може знадобитися перезапуск.

2. Git Workflow у PyCharm/IntelliJ →

Python мануфактура · Сесії: AMA та PMP · 6:05–9:10

SAST, DAST і спеціалізовані scanners

SAST аналізує codebase, configuration та infrastructure definitions без запуску повного user flow. До scope можуть входити source code, dependencies, YAML, Docker та Terraform files. DAST працює проти запущеного застосунку: генерує requests, змінює parameters, headers, authentication data й шукає небезпечну runtime behavior. OpenAPI specification може бути input для API security scanner-а. Окремі tools аналізують network traffic або вразливості, характерні для конкретної мови, cloud platform, protocol чи IoT stack. Тому pentesting швидко розгалужується на спеціалізації, а не зводиться до ручного перебору requests у Postman.

Перехід у пентестинг: що важливо →

Python мануфактура · Програма курсу · 8:20–13:55

Вибір способу авторизації

У Testomat.io API token не обов’язково є готовим bearer token для всіх запитів: його може бути потрібно обміняти на JWT через login endpoint. Урок демонструє, чому тип авторизації треба перевіряти за документацією та реальною відповіддю API. Секрет зберігається в environment variable, а не в коді. Постійне використання email/password додає зайвий запит і ширший секрет; token flow варто обирати лише якщо backend справді його підтримує.

3. API preconditions →

Python мануфактура · Сесії: AMA та PMP · 10:00–12:18

Gateway, load balancer і спільні залежності

Публічніше середовище може бути захищене authentication gateway, rate limits і load balancer замість VPN. Gateway приймає зовнішній трафік і маршрутизує його до потрібного сервісу; load balancer розподіляє запити між копіями. Під час проєктування тестів треба знати, які середовища ділять third-party інстанс і де саме застосовуються мережеві та частотні обмеження.

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

Python мануфактура · Програма курсу · 10:14–13:19

`BaseController`, headers, errors і logging

`BaseController` приймає base URL і JWT, формує спільні headers `Authorization` і `Content-Type: application/json`, виконує HTTP-запит і піднімає exception для неуспішного статусу. Методи `get`, `post` і `put` повторно використовують цю поведінку; `post` і `put` додатково приймають request body. Запити варто логувати, щоб під час падіння було видно method, endpoint і контекст виклику. Для `requests` таке logging додають явно; `HTTPX` має власний logging namespace, тому конкретна реалізація залежить від обраного client.

2. API автоматизація одразу правильно, MVC, pydantic →

Python мануфактура · Програма курсу · 13:55–17:25

Мінімальний API client і pytest fixture

Клієнт містить лише потрібні операції: authentication і `get_projects`. У прикладі використано `httpx`, хоча для синхронного сценарію стандартний для проєкту HTTP-клієнт також достатній; не слід додавати dependency лише через згенерований AI-код. Авторизований client надається через pytest fixture. JWT кешується всередині instance, щоб кілька endpoint calls одного тестового lifecycle не повторювали login. Спочатку окремі API-тести перевіряють успішну авторизацію та непорожній список проєктів.

3. API preconditions →
Запитати в чаті про «authentication» →