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

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

Приклад коду · 3:30

User-facing locator у незалежному Playwright test

Playwright Test надає isolated page, а locators виражають user-facing contract через label, role і accessible name.

Test проходить лише проти application, що має наведений login contract.

Що має вміти та знати мідл автоматизатор →

Що змінилося після запису · 15:00

RFC 9557 оновив timestamp contract

У відео timestamp, local date і timezone наведено як приклад неоднозначного API/data contract.

RFC 9557, опублікований 2024 року, оновлює RFC 3339 для additional timezone/context information та семантики unknown local offset. Базова вимога явного offset для Internet timestamp лишається чинною.

2024

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

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

Спроєктувати safe test contract

Відокремити application-flow, provider-integration і production-smoke tests.
Обрати official test key або non-production test mode.
Описати scope, secret storage, allowlist, rotation, logging і expiry.
Додати negative test, який підтверджує, що звичайний traffic не отримує bypass.
Threat-reviewed contract не містить hardcoded production bypass і має окрему перевірку provider integration.

Антибот-захист у контрольованих автотестах →

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

HTTP methods і status codes як частина contract

`GET`, `POST`, `PUT`, `DELETE` мають різні очікувані effects. `200 OK`, `201 Created`, `202 Accepted`, `204 No Content`, client errors `4xx` і server errors `5xx` не слід згортати в одне «працює/не працює». Особлива увага приділяється `PUT`, де behavior для nonexistent resource залежить від contract. Автотест має кодувати домовленість конкретного API, а не універсально вважати один code правильним для всіх APIs.

Теоретичний вступ до вебсервісів →

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

Generated fluent asserts, API-first і contract testing

Generator може створити `assertThat(pet).hasName(...)`, але import conflicts і plugin age можуть звести користь нанівець. Сучасний AssertJ already має rich extracting/recursive/custom assertion APIs, тому generation варта лише для real repeated domain vocabulary. API-first підхід робить specification upstream input для backend і clients. Jackson deserialization вже перевіряє shape/types, але не доводить business semantics. Окрема contract-testing infrastructure потрібна, коли spec/code generation не закривають real producer–consumer risk.

AssertJ: виразні асерти та їх генерація →

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

Що тестувати і де знайти contract

Дані, які бачить користувач, приходять з backend services, тому UI scenario часто можна розкласти на більш швидкі API checks. Спочатку треба з’ясувати API maturity: чи є specification, чи вона актуальна, як frontend реально викликає endpoints. Якщо documentation немає або їй не можна довіряти, browser DevTools/Network дає фактичні URL, method, headers, payload і response. Це джерело для discovery, але не заміна погодженого contract.

API: що тестувати та як написати перший тест →

Java · Сесії: AMA та PMP · 6:30–9:30

Business example не замінює engineering task

Після узгодження behavior загальний scenario треба декомпозувати. Frontend task описує component, validation і UI states; backend task — endpoint, contract і business rule; test task — ризики й потрібне coverage. Для інженера прямий технічний опис часто коротший і точніший за повторення кожної умови через `Given/When/Then`. Проблема починається, коли один формат примусово використовують для всіх ролей. Business не має керувати деталями automation code, а automation engineer не повинен перекладати вже зрозумілий technical contract у довший Gherkin лише для формальної відповідності процесу.

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

Java · Сесії: AMA та PMP · 8:00–12:00

Один product engineer може закрити широкий vertical slice

[Дивитися з 08:00](https://www.youtube.com/watch?v=jAl2Qf8Zlyg&t=480s). Досвідчений engineer із точним plan може реалізувати frontend, backend і частину deployment pipeline, використовуючи готову design system та API contract. Frontend має знати, який resource і endpoint запросити; backend — який response повернути; shared components і design tokens дають повторюваний UI. AI допомагає заповнити реалізацію, але не визначає самостійно правильні boundaries і product behavior.

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

Java · Основний курс · 1:02:20–1:09:00

Custom RestAssured log filter і розбіжності даних

Для сталого логування request і response додається custom filter, який реалізує RestAssured `OrderedFilter`. Він логує request до виклику і response після нього, а також не намагається виводити порожнє body. Filter передається в base API configuration, тому всі controllers мають однакову діагностику. Лог показує розбіжності між create і list responses: наприклад, labels в одному response мають інше значення, а description не повертається так, як очікувалося. Частина помилок належить не DTO, а неідеальному API contract.

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

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

Request DTO і response DTO

Одна model для request і response придатна лише тоді, коли wire shapes справді збігаються. Якщо response має generated id/timestamps або request забороняє server-owned fields, потрібні separate `PetRequest` і `PetResponse`. Невдала deserialization найчастіше означає incorrect DTO shape/type або Jackson configuration. Виправлення — звірити модель з real JSON/OpenAPI contract, а не додавати random annotations, доки exception не зникне.

POJO, Jackson і контролери →

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

Гіпотеза про бізнес-важливі елементи

Учасник пропонує вважати сторінку завантаженою після появи важливих для бізнес-сценарію елементів і контенту, а не лише після формального відкриття. Він порівнює це з метрикою готовності сторінки та одразу ставить питання про межу такого контракту. Основний trade-off — не додати в кожен перехід зайві очікування. Які саме сигнали належать до `isLoaded`, залежить від типу сторінки та наступної дії тесту.

Що має описувати isLoaded →

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

Вебсервіси, SOAP і RESTful

Вебсервіс подається як software component, через який розподілені системи обмінюються даними. SOAP оперує messages і XML contracts, тоді як RESTful services будують інтерфейс навколо resources та HTTP semantics. Автор порівнює XML, JSON, binary payloads і statefulness. Практичний висновок для тестувальника: перед автоматизацією треба визначити реальний protocol, media types і contract, а не припускати REST лише за JSON payload.

Теоретичний вступ до вебсервісів →

Java · Основний курс · 0:00–2:28

Consumer, producer і REST resources

Звична client–server model узагальнюється термінами consumer і producer. Consumer споживає дані або можливість, producer їх надає. Така мова працює не лише для browser і web server, а й для взаємодії між сервісами. Комунікація має protocol і contract. API-документації може не бути, вона може бути написаною вручну і застарілою або code-generated з анотацій у коді. У REST сутності представлені resources, а операції над ними — endpoints з HTTP-методами `GET`, `POST`, `PUT`, `DELETE`.

Вступ до API-автоматизації →
Запитати в чаті про «contract» →