top of page

Як писати вимоги до продуктивності так, щоб їх дійсно імплементували (і протестували)


Вступ

Коли продукт стає популярнішим, зростає кількість користувачів, замовлень, запитів до API, а також обсяг даних. У цей момент “раптово” з’являються типові проблеми: сторінки завантажуються довше, пошук гальмує, оформлення замовлення зависає, а інтеграції з партнерами починають повертати помилки.


Дуже часто причина проста: вимоги до продуктивності або відсутні, або написані занадто загально (“має працювати швидко”). У результаті команді складно зрозуміти, що саме вважати успіхом, а тестувальникам - як це перевірити.


Ця стаття показує, як формувати зрозумілі, вимірювані та тестовані вимоги до продуктивності мовою, доступною для бізнес-аналітиків та продакт-оунерів.


Що таке продуктивність системи — простими словами

Продуктивність - це не лише “швидкість”. Це набір характеристик, які описують, наскільки передбачувано та стабільно працює система, коли користувачів і даних багато.

Показники продуктивності системи

Ключові складові продуктивності:

  • Швидкість відповіді (Latency / Response time) - як швидко система реагує на дію.

  • Пропускна здатність (Throughput) - скільки запитів/операцій система здатна обробити.

  • Стабільність (Error rate) - скільки помилок виникає під навантаженням.

  • Масштабованість (Scalability) - як система справляється зі зростанням навантаження.

  • Споживання ресурсів (Resource utilization) - скільки “коштує” робота системи (CPU/RAM тощо).


Чому вимоги до продуктивності важливі

Якісно прописані вимоги до продуктивності допомагають:

  • узгодити очікування бізнесу та команди розробки;

  • підготуватися до пікових навантажень (акції, сезонність, PR-кампанії);

  • уникнути “пожеж” на продакшені;

  • включити продуктивність у критерії прийняття (Acceptance Criteria), а не згадувати в кінці.


Одна з найкорисніших практик: розглядати продуктивність як частину якості сервісу, так само важливу, як і функціональність.


Міні-словничок (UA + EN)

  • Час відповіді (Response time / Latency) - скільки часу проходить від дії користувача до результату.

  • Перцентиль (Percentile: P95/P99) - “у 95 випадках зі 100 буде швидше за X”. Це точніше, ніж середнє.

  • Пропускна здатність (Throughput) - скільки запитів/операцій обробляється за секунду/хвилину.

  • Паралельність (Concurrency) - скільки операцій/користувачів одночасно “в роботі”.

  • Рівень помилок (Error rate) - частка запитів із помилками або тайм-аутами.

  • Доступність (Availability) - який процент часу в роботі система доступна.

  • Деградація (Graceful degradation) - контрольоване спрощення функцій під піком, щоб система не “падала”.

  • Угода про рівень сервісу (SLA / Service Level Agreement) - юридично/формально гарантований рівень сервісу (наприклад, 99.9% доступності).

  • Ціль рівня сервісу (SLO / Service Level Objective) - внутрішня ціль (наприклад, P95 latency ≤ 500мс), часто “строгіша” за SLA.

  • Індикатор рівня сервісу (SLI / Service Level Indicator) - конкретна метрика, яку міряємо (latency P95, error rate, availability).

Рівні деталізації вимог

Профіль навантаження: що це і навіщо він потрібен

Навіть правильна вимога типу “P95 ≤ 800 мс” буде неповною, якщо не описати умови, за яких вона має виконуватися.


Профіль навантаження (Load profile) - опис того, як система використовується в реальному житті:

  • які дії виконуються найчастіше (пошук, перегляд, checkout);

  • у яких пропорціях;

  • як змінюється активність у часі (ріст → пік → спад);

  • які типові дані (наприклад, розмір корзини або “важкі” запити).

Профіль навантаження системи

Приклад профілю навантаження для e-commerce

У пікову годину користувачі можуть робити різні дії з різною частотою:

• 35% - перегляд каталогу

• 25% - пошук

• 20% - перегляд товару

• 10% - додавання в корзину

• 10% - оформлення замовлення


Також важливо описати, як поводиться навантаження протягом часу:

• Розігрів: поступове зростання, наприклад 15 хвилин

• Пік: стабільно високий трафік, наприклад 60 хвилин

• Спад: повернення до норми, наприклад 15 хвилин


Це допомагає сформувати вимоги не “в вакуумі”, а в реалістичному сценарії.

Сценарій та вимоги до продуктивності

Як формулювати вимоги до продуктивності: проста логіка

Хороша вимога зазвичай відповідає на 4 питання:

1) Що вимірюємо? (сценарій)

2) Яку метрику? (швидкість, пропускна здатність, помилки…)

3) За яких умов? (пік, тривалість, типові дані)

4) Як вимірюється? (логи клієнта, сервера, СУБД/E2E)


Приклад “погано / добре”:

Погано: “Система має працювати швидко.”

Добре: “Для ‘Оформлення замовлення’ час відповіді P95 ≤ 800 мс і P99 ≤ 1500 мс під час пікового навантаження протягом 60 хвилин; рівень помилок ≤ 0.3%.”

Розподіл запитів та часу відповіді

Саме тому важливо вимірювати Р95 / Р99, а не серднє.


Шаблон для Confluence/Jira

Сценарій (Scenario): [Опис функції / сценарію]

Чому це важливо (Business importance): [Бізнес-цінність, вплив на користувача або процес]

Опис дії користувача (User journey): [Коротко: що робить користувач та який результат очікує]


Очікуване навантаження (Load profile):

- Пікове навантаження (Peak):

- Частка серед усіх дій (%):

- Типові дані (Data characteristics):


Вимоги до швидкості (Response time):

- P95 ≤ …

- P99 ≤ …


Стабільність (Error rate): - ≤ … %


Пропускна здатність (Throughput): - … запитів/сек або … операцій/хв


Умови вимірювання (Conditions):

- Тривалість піку:

- Тип даних:

- Середовище (Environment):


Деградація (Graceful degradation): [Що дозволено спрощувати, а що має залишатися стабільним]


Метрика / моніторинг (Measurement): [логи, E2E, зовнішні моніторингові системи]


Заповнений приклад шаблону

Сценарій (Scenario): Оформлення замовлення (Checkout)

Чому це важливо (Business importance): Критичний етап продажу. Затримки впливають на конверсію та довіру користувачів.


Опис дії користувача (User journey): Користувач натискає “Оформити” → отримує підтвердження замовлення.


Очікуване навантаження (Load profile):

- Пікове навантаження: 3000 запитів/сек

- Частка серед усіх дій: близько 10%

- Типові дані: корзина 3–5 товарів (P95 - до 20 товарів)


Вимоги до швидкості (Response time):

- P95 ≤ 800 мс

- P99 ≤ 1500 мс


Стабільність (Error rate): ≤ 0.3% під час пікової години


Пропускна здатність (Throughput): Система має обробляти не менше 3000 запитів/сек


Умови вимірювання (Conditions):

- Пік триває 60 хвилин;

- Середовище, подібне до продакшену;

- Реалістичні набори даних (обфусковані продакшен-дані).


Деградація (Graceful degradation): Дозволено спрощувати рекомендації під піком, але оформлення замовлення має залишатися стабільним.


Метрика / моніторинг (Measurement): Е2Е‑моніторинг, серверні логи


Як писати вимоги для систем обробки даних

Для продуктів, де є завантаження та обробка даних, часто важливі не “мілісекунди”, а час до готового результату. Це можна описувати максимально бізнесово.


Три прості категорії вимог:

1) Час до результату: “Нові дані мають бути доступні у звітах/результатах не пізніше ніж через 30 хвилин після завантаження.”

2) Скільки система витримує під піком: “Під час піку система має приймати до 200 завантажень за хвилину без збоїв.”

3) Стабільність: “Під час пікової активності допускається не більше ніж 0.2% помилок.”

Додатково, якщо є “бізнесовий дедлайн”: “Нічна обробка має завершуватися до 07:00, навіть при збільшенні обсягу даних у 2 рази.”

Процес обробки даних

Бонус: якщо продукт працює з “залізом” (embedded / hardware)

У системах, що взаємодіють із пристроями, важливо не просто “швидко”, а “вчасно завжди”. Тут часто зустрічаються вимоги на кшталт:

  • “Задача має виконуватися кожні 10 мс; максимальний час виконання — не більше 7 мс.”

  • “Обробка сигналу має бути стабільною без пропусків TTL.”


Чекліст: чи добре сформульована вимога?

  • Є конкретні метрики (швидкість / пропускна здатність / помилки / час до результату)

  • Є перцентилі P95/P99 (а не тільки середнє)

  • Є чіткий сценарій

  • Є умови (пік, тривалість, типові дані)

  • Вказано, як вимірюється результат

  • Описано, що допускається під піком (деградація)


Висновок

Щоб вимоги до продуктивності працювали, достатньо простого правила: числа + сценарій + умови + спосіб вимірювання.


BA/PO не потрібно занурюватися в технічні деталі. Потрібно лише коректно описати очікувану поведінку продукту в реальному навантаженні - і зробити це частиною критеріїв прийняття. Якщо маєте бажання глибше розібратись в темі нефункціональних вимог, зверніть увагу на курс "Нефункціональні вимоги: вивлення та аналіз"


Новини та статті з бізнес-аналізу: 

 
 
 

1 коментар


Виталий В
Виталий В
15 годин тому

Чудова стаття. Хотів би додати, що найбільша проблема не у відсутності нефункціональних вимог, а в адекватності їх формулювання.

Складно знайти специфікацію, де б не згадувались "швидкість відповіді", "відмовостійкість" тощо. Але для замовника часто немає принципової різниці між 800 мс і 1500 мс, бо на практиці це майже неможливо оцінити на око.

Саме тому отримати дійсно чіткі та вимірювані НФР буває дуже складно. Часто доводиться спиратися на досвід і здоровий глузд🤪

Тож теза про "не занурюватися в деталі" виглядає доволі дискусійною 😉

Вподобати
bottom of page