Вхід Реєстрація
Реклама
Ваше рекламне місце
Забронюйте цей слот без конкуренції на обраний період.
Купити рекламу →
Логотип телеграм спільноти - QA Co-pilot
Додано 06 гру 2025 🌐 UK

QA Co-pilot

@qa_copilot
Кількість підписників: 92
Фото: 326
Відео: 1
Посилання: 49
Опис:
QA Co-pilot 🚀 Ваш другий пілот у світі тестування. 👨💻 Для кого: Для тестувальників-практиків, які хочуть рости. 🎯 Про що: Делегуємо рутину нейромережам, прискорюємо роботу та звільняємо час на головне. ❌ Чого тут немає: Нудної теорії та води.
Джерело

QA Co-pilot | Як вкрасти подвійний бонус: Що таке Race Condition і чому мишка тут не...

Логотип телеграм спільноти - QA Co-pilot QA Co-pilot @qa_copilot
35 Охват/переглядів 2026-03-30 09:09 Повідомлення №246
🏎 Як вкрасти подвійний бонус: Що таке Race Condition і чому мишка тут не допоможе

Привіт, екіпаж! Сьогодні заліземо в ту частину бекенду, від якої сивіють розробники та власники бізнесу. ☕️

Уявіть класичну ситуацію: ви реєструєтесь у додатку доставки і отримуєте промокод на 500 грн. Ви додаєте в кошик піцу, вводите код і тиснете «Застосувати». Все працює, знижка зарахована. А тепер уявіть, що ви відкрили свій акаунт одночасно на телефоні, планшеті та комп'ютері. Ви підготували кошики і натиснули кнопку «Застосувати промокод» на всіх трьох пристроях в одну й ту саму мілісекунду. Якщо бекенд написаний без урахування паралелізму, станеться магія, яка називається Race Condition (Стан гонитви).Що відбувається "під капотом"?

Сервер отримує три запити одночасно і починає їх обробляти в трьох паралельних потоках:
🔹

Потік 1:
Промокод ще дійсний? Так.🔹

Потік 2:
Промокод ще дійсний? Так (бо Потік 1 ще не встиг позначити його як використаний!).🔹

Потік 3:


Промокод ще дійсний? Так.
Далі всі три потоки нараховують вам по 500 грн знижки, і лише після цього ставлять у базі даних галочку is_used = true. Вітаю, ви щойно отримали 1500 грн знижки з одного промокоду на 500. Такі ж баги дозволяють знімати гроші в мінус з банківських карток, купувати два товари, коли на складі залишився лише один, або накручувати лайки.Як QA має це тестувати? (Краш-тест на паралельність)

Звичайним швидким кліканням мишки ви цей баг не зловите (фронтенд просто заблокує кнопку після першого кліку). Нам потрібна важка артилерія.⚔️ Запускаємо паралельні потоки через Postman

Багато хто знає про Collection Runner у Postman, але за замовчуванням він відправляє запити по черзі (один за одним). Це не створить Race Condition. Щоб вдарити по серверу одночасно, вам потрібен інструмент рівня JMeter або крута фіча в самому Postman, яка з'явилася не так давно — скрипти з асинхронними запитами (pm.sendRequest), які запускаються циклом for без очікування відповіді. Або ще простіше — консольна утиліта cURL + трохи магії терміналу (Bash):Відкриваєте термінал і пишете команду, яка відправляє 10 однакових запитів на використання промокоду, ставлячи знак & в кінці кожного. Вони полетять на бекенд ідеально паралельно.
Висновок: Якщо ваш продукт працює з грошима, знижками, складом або балансами — ви зобов'язані тестувати API на Race Condition. Бо якщо цього не зробите ви, це зроблять дуже хитрі користувачі.А ви коли-небудь ловили баги паралелізму на своєму проєкті?

👇
🔥 — Так, блокуємо таблиці в базі даних (Pessimistic/Optimistic Locks), все надійно!

👀 — Жодного разу так не тестував(ла), сподіваюсь, у нас все ок...

🤯 — Прямо зараз піду мультиплікувати свої бонуси на проді!