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

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

Практика · 6:05

Triage одного vulnerability finding

Візьміть безпечний training finding і визначте, чи походить він із SAST, DAST або SCA.
Знайдіть authoritative vulnerability record, affected dependency version і remediation path.
Опишіть manual validation та business context до зміни priority.
Короткий triage report без exploit проти production systems.

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

Приклад коду · 0:00

Відтворюваний typed test object

Stdlib-приклад показує typed object, valid range і fixed seed без додаткової dependency.

Друкується відтворюваний UserData, а assertion підтверджує базові constraints.

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

Що змінилося після запису · 9:10

Що змінилося після запису

У відео vulnerability workflow описано як пошук запису в загальній базі та подальший patching dependency.

З 15 квітня 2026 року NVD застосовує risk-prioritized enrichment: усі CVE залишаються listed, але не кожен record одразу отримує повні NVD details.

2026-04-15

Automation не повинна трактувати відсутній NVD score або enrichment як доказ відсутності ризику.

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

Що змінилося після запису · 5:30

Що змінилося після запису

Урок радить узгоджувати версії Allure CLI та Python integration.

allure-pytest package metadata pin-ить ту саму версію allure-python-commons і вимагає pytest>=4.5.0, але не оголошує dependency або version matrix для Allure CLI. Сумісність генератора й adapter треба доводити pipeline run.

Package metadata commit d420cff86a6bb4a9b42cd16164cd5828b84a24ef перевірено 2026-07-31.

4. Allure репорт, основи та інтеграція в CI →

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

CVE, dependencies і patching

Відомі вразливості реєструються в загальнодоступних базах та ідентифікуються, зокрема, через CVE. Scanners зіставляють dependency versions із такими записами й повідомляють, що конкретна library або її transitive dependency потребує оновлення. Patching не завжди дорівнює зміні номера version. Якщо vulnerable API змінено або видалено, команді доводиться оновити dependency і переписати код, який спирався на небезпечну behavior. Security engineer має пояснити не лише «scanner червоний», а шлях експлуатації, реальний impact і безпечний upgrade path.

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

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

Ризик помилкового або шкідливого пакета

IDE може запропонувати встановити невідомий імпорт, але це не є перевіркою надійності пакета. Помилка в назві здатна привести до typo-squatting пакета, а стороння залежність — виконати шкідливий код у середовищі тестів. Отже, назву, власника, джерело, версію та необхідність залежності потрібно перевіряти до встановлення. Тестове середовище також може містити внутрішні дані й доступ до мережі, тому його не слід вважати автоматично безпечним.

Навіщо встановлювати Playwright-браузери, як часто та чому треба оновлювати бібліотеки →

Python мануфактура · Сесії: AMA та PMP · 5:04–8:38

Чим uv відрізняється від pip

pip — базовий і простий інструмент, тоді як uv дає швидше встановлення, сучасніше керування проєктом і зручніші механізми для команд запуску та конфігурації. uv написаний на Rust і особливо помітно скорочує час відновлення залежностей у CI та після клонування репозиторію. Окрема перевага — робота з конфліктами транзитивних залежностей, коли дві бібліотеки очікують різні версії третьої. uv також дає чіткіший контроль за правилами оновлення й фіксації версій. Аналогія з Java: Maven виконує базову задачу, Gradle надає ширші можливості й за коректної конфігурації може швидше збирати проєкт. Але переваги нового інструмента треба пов’язувати з реальною проблемою команди, а не лише з його новизною.

Як працює проєктний білдер, ізоляція залежностей і впровадження нових інструментів →

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

Selenium WebDriver, explicit waits і ширша matrix

Selenium 4 використовує стандартизований W3C WebDriver protocol. Client binding надсилає HTTP-команди WebDriver endpoint, а browser-specific driver виконує їх у Chrome, Firefox, Edge, Safari чи іншому підтримуваному браузері. У старішому Selenium 3 застосовувався JSON Wire Protocol. У класичному Selenium flow перед click або input часто використовується explicit wait: client повторно перевіряє умову на кшталт visibility або clickability, а після її виконання надсилає окрему action command. Це створює більше round trips, особливо коли browser session віддалена. Сильна сторона Selenium — широка екосистема vendor drivers і remote providers. Якщо навіть невелика частка користувачів певного браузера означає сотні тисяч людей або браузер входить у договірну support matrix, таке покриття не можна відкидати лише через повільніший test run. У Python-проєкті технічно можна мати і Playwright, і Selenium tests під pytest: Playwright для основного functional suite, Selenium — для вузької cross-browser перевірки. Це виправдано лише реальною вимогою, бо два automation stacks подвоюють dependency, fixture та maintenance surface.

3. Selenium vs Playwright - яка різниця →

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

Що зберігає Playwright `page`

Playwright `Page` представляє окрему вкладку або сторінку в browser context. Переданий у Page Object екземпляр визначає, з яким саме браузерним контекстом працюватимуть locators, переходи й assertions. Збереження `page` як `self.page` прибирає потребу передавати його в кожен метод. Залежність залишається явною в initializer, а всі дії конкретного Page Object використовують одну й ту саму вкладку.

__init__, self, page та принципи ООП →

Python мануфактура · Сесії: AMA та PMP · 7:59–9:21

Коли оновлювати залежності

Оновлення в день релізу підвищує шанс натрапити на ще не виявлену регресію. Як практичний орієнтир пропонується почекати приблизно тиждень або місяць, а потім оновити версію контрольовано. Важливіша за точний інтервал регулярність: переглядати release notes, знати поточні версії та не накопичувати роки відставання. Security fix може вимагати швидшого оновлення, ніж звичайний feature release.

Навіщо встановлювати Playwright-браузери, як часто та чому треба оновлювати бібліотеки →

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

`python-dotenv` і `load_dotenv()`

Сам файл `.env` не потрапляє в `os.environ` автоматично. Додається пакет `python-dotenv`, викликається `load_dotenv()`, після чого `os.getenv()` бачить локальні значення. Версію залежності фіксують у `requirements.txt`. Після зміни запускаються всі наявні тести. Їх успішне проходження підтверджує, що перенесення конфігурації не змінило поточну поведінку сценаріїв.

2.1. відео, енв файл →

Python мануфактура · Сесії: AMA та PMP · 9:03–11:34

Універсального навчального сценарію немає

Навіть детальний курс не може показати всі ситуації. На іншому проєкті або в іншій частині тієї самої системи повторена дія може дати інший результат через архітектуру, версію бібліотеки чи інтеграційні умови. Типовий приклад — код, переписаний з презентації або офіційної документації, не запускається через застарілий приклад, іншу версію dependency або одну помилку в назві функції. Такі збої неминучі, тому вміння самостійно діагностувати їх є частиною навчання.

Вчитися через власні помилки чи з ментором →

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

Deprecated API і транзитивні залежності

Build warnings про deprecated API — ранній сигнал, що наступна major-версія може видалити використану конструкцію. Попередження може походити не з вашого коду, а з транзитивної залежності, яка ще не адаптувалася. Перед оновленням треба встановити, які API реально використовуються та які пакети залежать один від одного. Інакше оновлення однієї бібліотеки може зламати іншу.

Навіщо встановлювати Playwright-браузери, як часто та чому треба оновлювати бібліотеки →

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