Shift-left і Shift-right тестування: що це означає на практиці
Якщо ви бачили ці терміни в описах вакансій або на конференціях, але так і не зрозуміли що за ними стоїть у реальній роботі — ця стаття для вас.
Shift-left і shift-right — це не нові інструменти і не методології. Це зміна того, коли і де відбувається тестування в процесі розробки.
Традиційний підхід: тестування наприкінці
Класична модель розробки виглядала так:
Вимоги → Дизайн → Розробка → Тестування → Реліз
QA приходили в гру вже після того, як код написаний. Якщо знаходили серйозний баг — доводилось повертатись на кілька кроків назад, переписувати код, заново тестувати. Це дорого і повільно.
Shift-left: тестуємо якомога раніше
"Зсув вліво" означає перемістити активності тестування якомога раніше в SDLC.
[QA тут↓] [раніше тут↓]
Вимоги → Дизайн → Розробка → Тестування → Реліз
Як це виглядає на практиці
QA на етапі вимог. Замість того, щоб отримати готову специфікацію і тестувати по ній, QA інженер бере участь в її написанні.
Питання, які QA задає на цьому етапі:
- "А що повинно статись якщо користувач введе від'ємне число в поле кількості?"
- "Яка поведінка якщо сесія закінчилась під час заповнення форми?"
- "Чи потрібні ролі доступу для цієї функції?"
Ці питання виявляють прогалини в специфікації до того, як розробник написав хоч рядок коду.
BDD (Behaviour-Driven Development). Тест-сценарії пишуться спільно з розробниками і бізнесом ще до розробки:
Feature: Авторизація користувача
Scenario: Успішний вхід
Given користувач на сторінці логіну
When він вводить правильний email і пароль
Then він переходить на dashboard
And бачить своє ім'я в хедері
Scenario: Невірний пароль
Given користувач на сторінці логіну
When він вводить правильний email і НЕПРАВИЛЬНИЙ пароль
Then він бачить повідомлення "Невірний email або пароль"
And залишається на сторінці логінуCode review участь QA. QA може переглядати pull requests з точки зору тестабельності — чи легко буде написати тест для цього коду?
Unit та integration тести. Розробники пишуть тести разом з кодом, а не після.
Чому це важливо
Виправлення бага на етапі вимог коштує умовно $1. На етапі розробки — $10. Після релізу в production — $100-1000.
Shift-left значно знижує вартість якості.
Shift-right: тестуємо в production
"Зсув вправо" — це зворотній рух. Тестування після релізу, в реальному production середовищі з реальними користувачами.
Звучить контрінтуїтивно, але логіка проста: неможливо повністю відтворити production в тестовому середовищі.
Реальні обсяги даних, реальні патерни використання, реальні мережеві умови — це те, чого немає в staging.
Інструменти shift-right
Feature flags (feature toggles). Новий функціонал спочатку видно тільки 1-5% користувачів або внутрішній команді. Якщо проблем немає — поступово розкочується на всіх.
// Приклад з LaunchDarkly
if (featureFlags.isEnabled('new-checkout-flow', user)) {
return <NewCheckout />;
} else {
return <OldCheckout />;
}Canary releases. Новий код деплоїться на малу частку серверів. Якщо метрики гарні — розкочується далі.
A/B тестування. Дві версії фічі тестуються одночасно на різних групах користувачів. Перемагає краща.
Production monitoring. Інструменти як Datadog, Sentry, Dynatrace стежать за помилками, performance і аномаліями в реальному часі.
Real User Monitoring (RUM). Збираємо реальні performance дані від браузерів користувачів — час завантаження, Core Web Vitals, помилки JS.
Chaos Engineering. Навмисно вводимо відмови в production (Netflix Chaos Monkey) щоб переконатись що система стійка. Це вже advanced shift-right.
Як поєднати обидва підходи
Shift-left і shift-right не конкурують — вони доповнюють одне одного:
[Shift-left зона] [Shift-right зона]
↓ ↓
Вимоги → Dev → Build → Test → Stage → Prod → Моніторинг
↑BDD ↑Unit ↑SAST ↑E2E ↑Smoke ↑Canary ↑RUM
Shift-left ловить більшість багів дешево і швидко. Shift-right ловить те, що пропустив staging: production-специфічні проблеми, edge cases реальних користувачів.
Що це змінює для QA інженера
Нові активності
- Участь в refinement та planning сесіях
- Написання acceptance criteria разом з продуктом
- Аналіз production логів і метрик
- Налаштування alerting і dashboards
- Аналіз сесійних записів (Hotjar, FullStory) для пошуку UX проблем
Нові інструменти що варто знати
| Ціль | Інструменти |
|---|---|
| Feature flags | LaunchDarkly, Unleash, Flipt |
| Error monitoring | Sentry, Bugsnag, Rollbar |
| APM | Datadog, Dynatrace, New Relic |
| Log management | ELK Stack, Grafana Loki |
| Session recording | FullStory, Hotjar |
З чого почати якщо ви новачок
Якщо ваша команда ще не практикує shift-left/right — не потрібно міняти все одразу.
Крок 1 (shift-left): Почніть ставити питання на refinement. Просто задавайте питання "а що якщо..." — це вже shift-left.
Крок 2 (shift-left): Домовтесь з командою писати acceptance criteria у форматі Given/When/Then.
Крок 3 (shift-right): Підключіть Sentry або інший error tracker якщо ще немає. Це безкоштовно для початку.
Крок 4 (shift-right): Дивіться на production метрики після кожного релізу — хоча б перші 30 хвилин.
Навіть ці маленькі кроки суттєво покращують якість і знижують кількість production інцидентів.
Підсумок
Shift-left — тестуємо якомога раніше, виявляємо проблеми до написання коду. Shift-right — не зупиняємось на релізі, продовжуємо тестувати і моніторити в production.
Разом вони перетворюють QA з "воротаря наприкінці" на активного учасника всього процесу доставки цінності користувачу. Саме це означає сучасне Quality Engineering.