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 як доказ відсутності ризику.

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

Java · Сесії: 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.

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

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

Version alignment і generator failures

Demo показує real failures: missing generated client, incompatible Spring types, Jackson/Gson annotations, date/time mappings і auxiliary dependencies. Проблема не завжди у spec — generator version, selected library і dependency graph мають суміщатися. Потрібно pin generator version, зберігати config у repository і перевіряти clean generation в CI. Якщо generated code вимагає постійних manual edits, generator не виконує свою роль.

Кодогенерація через OpenAPI Generator →

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

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

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

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

Java · Сесії: AMA та PMP · 5:04–8:38

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

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

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

Java · Основний курс · 5:14–7:38

Підключення RestAssured і структура тестів

До проєкту додається актуальна RestAssured dependency. Практичний сценарій складається з логіну, отримання проєкту і створення test suite, який пізніше можна використати як API precondition для UI-тесу. Якщо UI- та API-теси живуть в одному проєкті, їх варто рознести за packages `web` і `api`. Перший API-тест створюється як окремий Java class і спочатку збирає весь flow в одному місці.

Rest Assured: базове використання →

Java · Основний курс · 5:20–11:53

`BaseController` і порівняння лінійного та controller-based тесту

Спільна RestAssured configuration переноситься в abstract `BaseController`. Бібліотека RestAssured має бути доступною main-коду, тому dependency переводиться з test-only у `implementation`. Controllers успадковують base class і працюють з protected request specification. Логін, пошук проєкту і створення suite розносяться між `AuthController`, `ProjectController` і `SuiteController`; controllers та DTO розкладаються в окремі packages. Для порівняння в тому самому class залишається початковий «брудний» сценарій і додається окремий MVC-варіант. Перенесення operations в окремі classes дає змогу розширювати кожен resource без розростання одного test class.

API-автоматизація: MVC і Jackson →

Java · Сесії: 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 та принципи ООП →

Java · Сесії: AMA та PMP · 7:59–9:21

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

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

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

Java · Сесії: AMA та PMP · 9:03–11:34

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

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

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

Java · Сесії: AMA та PMP · 9:21–10:37

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

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

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