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

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

Термін · 15:45

GraphQL resolver

Server-side function для schema field, яка отримує value з application code, database або downstream service. GraphQL не виконує service discovery самостійно.

Вступ до API-автоматизації →

Практика · 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 потрібен.

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

Джерело · 32:00

Repository-wide smoke contract для навчальних прикладів

Pinned tests перевіряють однакову структуру тем і запуск усіх scripts. Це корисний contract/smoke приклад до system-review теми, але не system test продукту: browser, API, database і deployed environment відсутні. Код не скопійовано через відсутність LICENSE.

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

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

Вибрати правильний test seam для persistence

Для одного business flow перелічіть validation, events, audit і data transformations між API та database.
Визначте, які properties доводить unit, integration та end-to-end test.
Якщо direct DB setup залишається, задайте connection ownership, transaction boundary і cleanup для parallel workers.
Test matrix без дублювання framework behavior і з явним direct-DB ceiling.

Автомтизація баз даних та що з тим робити та що знати →

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

Коли прямий DB access справді прискорює тести

Створення або читання сутності через API проходить routing, application logic, database access і serialization, тому сотні setup-запитів накопичують час. Прямий запит до database інколи виконується за кілька мілісекунд і може бути корисним для підготовки або пошуку test data. У Java типовим низькорівневим контрактом є JDBC; у Python — драйвер конкретної СУБД, який зазвичай підтримує Python DB-API. Для підключення потрібні host/URL, database/schema, credentials і driver. Секрети не мають бути в коді, а тестовий користувач БД повинен мати мінімальні права. Прямий insert не завжди еквівалентний product operation: він може обійти validation, events, audit, caches та синхронізацію. Тому DB setup доречний лише для сутностей, де команда явно приймає такий контракт.

Автомтизація баз даних та що з тим робити та що знати →

Java · Сесії: AMA та PMP · 33:00–39:10

Структура automation-проєкту росте ітеративно

Початкова структура може бути простою: спільний config, `web` із pages/components, `api` із clients/controllers та DTO, а за потреби — робота з database. Не треба заздалегідь будувати повну enterprise-ієрархію. Коли database-код розростається, його можна винести на окремий рівень і розділити на entities та repositories/DAO. Це наступна ітерація після появи кількох tables і повторюваних CRUD operations, а не стартова вимога для першого test suite.

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

Java · Сесії: AMA та PMP · 2:40–7:25

Шари від таблиці до API response

На спрощеній схемі є database table із полями користувача, entity для роботи з нею, service із бізнес-логікою та mapping, controller з endpoints і DTO, яке повертається клієнту. Response не обов’язково є прямою копією одного рядка: service може звертатися до іншої таблиці або зовнішньої системи, наприклад по `taxId` чи додаткові атрибути. Поля на кшталт `createdAt`, `updatedAt` і `deletedAt` можуть зберігатися в базі, але не віддаватися назовні безпосередньо. DTO формує публічний контракт, а service відповідає за перетворення внутрішніх даних у цей контракт.

Міграція бази даних і тестування даних →

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

Що перевіряти замість повторного тестування СУБД

Якщо застосунок використовує зрілий framework і ORM, automation suite не має доводити, що framework у принципі вміє зберігати рядок. Цінність дають перевірки власної конфігурації: migrations, column types, precision, foreign keys, transaction boundaries, custom queries і mapping між database та API. Часто API або UI test уже опосередковано проходить database integration. Окремий DB assertion потрібен, коли зовнішня відповідь не доводить важливу властивість persistence — наприклад audit record, точність money value або асинхронний статус. Для dashboards, statistics і Big Data ключовою є не сама таблиця, а правильність агрегації: joins, filters, rounding, time zones і перетворення backend. Тут доцільно порівнювати результат із контрольованим dataset або незалежно обчисленим oracle, а не дублювати той самий SQL у тесті.

Автомтизація баз даних та що з тим робити та що знати →

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

OpenAPI, JSON types і шлях даних

Автор розбирає Swagger/OpenAPI descriptions і JSON як мову обміну між clients та backend. Тип, format, required fields, arrays і dates важливі не менше за business value. Окрема тема — перетворення дат і numbers між database, backend і frontend. Якісний test design залежить від розуміння цих transformations; black-box response assertion може не показати, на якому рівні виник defect.

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

Java · Сесії: AMA та PMP · 13:00–15:05

Доступ до нижчих рівнів визначає якість автоматизації

Навіть сильний кандидат може не мати досвіду з CI або database, якщо попередній проєкт не давав доступу. Це треба відрізняти від нездатності мислити системно. На співбесіді варто зʼясувати, чи команда дозволяє тестувати API та backend logic: десятки складних UI-тестів із patterns не компенсують відсутність покриття на рівні, де живе більшість логіки.

Методики проведення співбесід →

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

Швидка перевірка реального масштабу досвіду

Якщо кандидат описує CI pipeline, parallelization, sharding, self-hosted runners і підготовку database state перед deployment, окреме базове опитування синтаксису може не додати сигналу. Натомість interviewer просить пояснити, як саме було реалізовано рішення, які trade-offs виникли й що кандидат робив особисто.

Методики проведення співбесід →

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

Gateway, Spring services і message brokers

Запит від browser, mobile або IoT device може пройти DNS, load balancer/API gateway, потім один або кілька services. Java backend у прикладі будується на Spring/Spring Boot, читає database або публікує asynchronous event. Kafka, RabbitMQ та інші brokers допомагають розв’язати producer і consumer у часі. Для тестів це означає, що request success не завжди доводить completed business outcome: потрібно перевіряти event publication, processing, retries і final state.

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

Java · Основний курс · 11:30–13:02

Hexagonal architecture як структура коду

Гексагональна архітектура пояснює, як декомпозувати сервіс за відповідальністю та способом взаємодії з довкіллям. Окремі adapters працюють з REST, WebSocket, email, SMS, database, message queue і third-party services, не змішуючи все в одному класі. Для тестувальника такий поділ дає карту ports і failure seams: можна окремо перевірити domain behavior, adapter contract і повний ланцюжок інтеграції.

Вступ до API-автоматизації →

Java · Сесії: 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, склад команди та нова роль тестувальника →
Запитати в чаті про «database» →