# Задіяла невикористану половину ядра

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

вересень 2026

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

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

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

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

---

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

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