# Дістала ту половину ядра обміну повідомленнями, якої застосунок ніколи не використовував, — передавання резервної копії, зникомі повідомлення, редагування та повторне надсилання, підтверджені запрошення, проксі та політику шифрування, — ведучи кожен тест проти справжньої бібліотеки без заглушок.

вересень 2026

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

**Завдання.** Недосяжну спроможність треба було задіяти й покрити, і тести мали виконуватися проти справжньої бібліотеки, а не проти заміщувача.

**Дія.** Прийнятим правилом було жодних імітацій для ядра. Імітація C‑інтерфейсу кодує переконання розробника про те, що робить бібліотека, а кожен вартий пошуку дефект тут є місцем, де це переконання хибне, — тож пройдений тест на імітації є свідченням про імітацію. Натомість тести створюють справжні облікові записи в тимчасових каталогах, ганяють справжню бібліотеку і стверджують про те, що вона насправді повертає, і кожен набір прибирає власний стан. Саме це зробило покриття змістовним: задіяти перенесення резервних копій означало обробити машину станів справжнього перенесення та її шляхи відмов, а задіяти перевірені запрошення означало сконструювати справжній формат посилання й дати бібліотеці його розібрати. Підлоги покриття задано на кожен шар окремо, а не одним числом: вісімдесят чотири відсотки для обгортки ядра, сімдесят п'ять для допоміжних функцій і шістдесят п'ять для моделей, з тим міркуванням, що шар, який торкається сирих вказівників, слід тримати найвище, а модель, яка здебільшого складається зі збережених властивостей, не варто набивати тестами заради середнього.

**Результат.** Раніше недосяжну половину ядра тепер ганяють тести проти справжньої бібліотеки, а обгортка несе найвищу підлогу в проєкті. Ціною є швидкість і передбачуваність: тести проти справжньої бібліотеки повільніші за імітації, і вони можуть падати з причин середовища, а це ціна за їхню здатність падати зі справжніх.

---

- Роль: Інженер застосунків macOS
- Категорії: [Backend‑розробка](https://platform.engineer.company/uk/categories/backend/), [API та інтеграції](https://platform.engineer.company/uk/categories/api/), [Автоматизація та CI/CD](https://platform.engineer.company/uk/categories/automation/), [Надійність і резервне копіювання](https://platform.engineer.company/uk/categories/reliability/), [Безпека](https://platform.engineer.company/uk/categories/security/), [Тестування та QA](https://platform.engineer.company/uk/categories/testing/)
- Послуги: [Backend- та API‑розробка](https://platform.engineer.company/uk/services/backend-development/), [DevOps та автоматизація CI/CD](https://platform.engineer.company/uk/services/devops-cicd/), [Безпека та керування доступом](https://platform.engineer.company/uk/services/security-access/)

<https://platform.engineer.company/uk/portfolio/reached-the-unused-half-of-the-messaging-core-161/>
