Source
QA Co-pilot | ♂️ Повстання мерців: Чому кнопка "Видалити акаунт" генерує найгірші б...
21 Views/Reach
2026-04-02 09:44
Message №250
🧟♂️ Повстання мерців: Чому кнопка "Видалити акаунт" генерує найгірші баги (і як їх знайти)Привіт, екіпаж! Сьогодні поговоримо про фічу, яку є на кожному проєкті, але яку майже завжди тестують неправильно. ☕️Уявіть тест-кейс: ви заходите в налаштування профілю, тиснете "Видалити акаунт", підтверджуєте. Вас викидає на екран логіну. Ви пробуєте зайти зі старим паролем — не пускає.Статус: Pass? Ні, це лише верхівка айсберга.Бізнес ненавидить втрачати дані (особливо для аналітики). Тому розробники майже ніколи не видаляють ваш рядок із бази даних фізично (DELETE FROM users). Вони використовують Soft Delete (М'яке видалення) — просто ставлять у базі невидиму галочку is_deleted = true. Юзер ніби "вмирає" для інтерфейсу, але його тіло залишається в системі.І тут починається справжній зомбі-апокаліпсис, який QA зобов'язаний протестувати:🚫 Пастка нової реєстрації (Унікальний імейл)Ви видалили акаунт [email protected]. Через тиждень ви вирішили повернутися і реєструєтесь наново з цим же імейлом.Що стається на дірявому бекенді? База даних кричить: "Стоп! Такий імейл вже є в таблиці!" (бо працює обмеження UNIQUE, а розробник забув додати умову, що імейли мають бути унікальними тільки серед НЕ видалених юзерів).Бекенд падає з помилкою 500 Internal Server Error. Користувач застряг у лімбі: він не може ні увійти, ні зареєструватися.
🧟♂️ Зомбі-токен (JWT)Ви видалили акаунт, але ваш Access Token все ще "живий" (наприклад, лежить у Postman або в Local Storage браузера). Відправте будь-який запит (наприклад, на створення поста або зміну аватарки) з цим старим токеном.Дуже часто бекенд валідує підпис токена, бачить, що він ще не протермінувався, і пропускає запит! Сервер забуває перевірити ту саму галочку is_deleted у базі. У результаті "мертвий" користувач продовжує публікувати контент.
👻 Привиди в коментарях (Orphaned Data)Юзер видалився. Але до цього він залишив 100 коментарів під статтями або зробив 5 замовлень. Що з ними сталося?Зайдіть на сторінку товару. Якщо замість коментаря фронтенд показує порожній білий екран або взагалі крашиться (бо намагається прочитати user.name, а user тепер повертає null) — це серйозний баг архітектури. Система має вміти граціозно заміняти видалених авторів на "Невідомий користувач".
Висновок: Видалення сутності — це найскладніший процес в архітектурі баз даних. Коли тестуєте видалення, не перевіряйте, чи зникла картинка. Перевіряйте, чи не залишив покійник після себе розруху в інших частинах додатку.А як у вас на проєкті працює видалення? 👇🔥 — Знаю всі наші Soft Deletes, токени "вбиваємо" миттєво!👀 — Здається, ми тестували тільки "щасливий шлях" кнопки...🤯 — Іду пробувати зареєструватися на видалений імейл, відчуваю, буде 500-ка!