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

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

Термін · 11:05

Twilio test credentials

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

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

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 мануфактура · Сесії: AMA та PMP · 0:00–3:10

Базова планка: автоматизувати свою рутину

Перший критерій — уміти прибрати повторювану ручну роботу за прийнятну ціну. Це може бути Playwright, Cypress, Selenium, code generation або невеликий script будь-якою мовою. Важливіше отримати перевірюваний результат і feedback від сильнішого інженера, ніж одразу будувати «ідеальний framework». Глибоке знання мови стає потрібним, коли дефекти виникають на стиках: type conversion, concurrent requests, race conditions, database/file persistence, memory management, asynchronous behavior або lifecycle components. UI steps самі по собі цих причин не пояснюють.

Який рівень програмування потрібен automation engineer →

Python мануфактура · Сесії: AMA та PMP · 2:32–9:04

`isLoaded` і реальний критерій готовності сторінки

Для кожного Page Object або повторно використовуваного компонента потрібна операція, яка доводить готовність до подальших дій. Вона локалізує причину падіння: замість випадкової помилки наступного кроку тест одразу повідомляє, що сторінка не завантажилася або потрібний блок не з’явився. Критерій залежить від rendering strategy. У client-side rendering можуть послідовно з’являтися skeleton, дані й зображення; інша сторінка приховує весь content до завершення кількох requests. Перевіряти треба мінімальний набір елементів, без яких сценарій не може продовжуватися, а не чекати кожної можливої деталі.

Неймінг та структура automation-проєкту →

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 мануфактура · Сесії: AMA та PMP · 10:30–13:30

Домашні завдання через GitHub

[Дивитися з 10:30](https://www.youtube.com/watch?v=viR9Rnmxse4&t=630s). Щотижня очікується один або кілька нових tests. Перша домашня робота публікується як repository link; наступні — в окремих branches і pull requests порівняно з `main`. Це дає reviewer-у точний diff конкретного модуля, а учневі — невеликий, але реальний portfolio artifact. Якщо PR уже merged, треба чітко вказати commit або зміни, які відповідають домашній роботі.

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

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

Де solo/fullstack підхід починає ламатися

[Дивитися з 12:00](https://www.youtube.com/watch?v=jAl2Qf8Zlyg&t=720s). Зі зростанням system з’являються multiple services, authorization for external clients, складні database relations і third-party calls. Generated implementation може непомітно створити N+1 queries, дублювати requests або багато разів викликати зовнішній provider заради одного UI response. Локально feature працює, але її operational cost і latency стають неприйнятними на реальному traffic.

Vibe coding, склад команди та нова роль тестувальника →

Python мануфактура · Сесії: AMA та PMP · 12:45–15:55

Чому scripting залишається обов’язковим

Pentester автоматизує запуск tools, підготовку input, аналіз результатів, відтворення знахідок і створення reports. Для цього потрібні базові programming concepts: variables, data structures, files, network requests, error handling і передача даних між process-ами. Мова залежить від задачі: Shell підходить для orchestration, TypeScript або Python — для швидких API scripts, Go часто зустрічається в infrastructure та security tooling. Low-code може пришвидшити старт, але на співбесіді й у production роботі все одно потрібно розуміти, що саме виконує generated script.

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

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 →

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

Trace Viewer як запис виконання тесту

Для демонстрації навмисно ламається locator, після чого збережений `trace.zip` відкривається командою `playwright show-trace <path>`. Trace Viewer показує послідовність actions, стан сторінки до й після кожної дії, source line, console errors і network requests. Timeline допомагає побачити не лише місце падіння, а й час очікування. Виділивши потрібний інтервал, можна звузити network-події до конкретної дії. Snapshot сторінки також дозволяє перевірити DOM і locator навіть тоді, коли браузер із failed run уже закритий — наприклад, помітити завислий loader або overlay.

1. Налаштування Playwright та Pytest, простий репортінг →

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 →
Запитати в чаті про «requests» →