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

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

Чому перевірки лише status code недостатньо

Тест, який перевіряє тільки `200 OK`, пропустить відсутнє поле, `null`, порожній рядок або неправильний mapping. Навіть перевірка переліку полів не гарантує правильного типу чи змісту. Deserialization і schema validation дають дешевий базовий захист: response приводиться до строгої моделі, тому тест одразу виявляє відсутнє поле або неправильний тип. Для цього згадуються інструменти на кшталт Zod у TypeScript і Pydantic у Python. Окремо треба врахувати serializer settings: backend може зовсім вилучати з JSON поля зі значенням `null`.

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

Design Patterns для автоматизаторів · 32:29–40:00

Proxy-debugging і некоректні backend responses

Proxyman, Charles або Fiddler дозволяють перехопити request, змінити його, затримати відповідь чи підмінити response. Так перевіряються offline mode, повільний інтернет, перемикання Wi-Fi/LTE, timeouts, `4xx`/`5xx` і неочікувані backend payloads. Особливу увагу приділено `null`, відсутнім полям і зміні типів: замість масиву може прийти `null`, число може мати інший тип, а object mapping — завершитися crash. Mobile client має коректно переживати serialization/deserialization помилки й недоступність third-party services.

Мобільне тестування та автоматизація →

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

Міграція моноліту в мікросервіси

Під час декомпозиції логіку, яка раніше жила в одному або кількох класах, переносять у різні services. Треба не лише перенести записи, а й зберегти правила зіставлення полів та джерела кожного значення. Показано типовий регресійний ланцюжок: `fullName` випадково мапиться лише з `lastName`; локальний fix додає `name`, але дані все одно не оновлюються, бо справжнім джерелом був інший service. Так само похідний `status` може формуватися з timestamps лише на одному code path і залишитися `null` під час читання.

Міграція бази даних і тестування даних →
Запитати в чаті про «null» →