Source
QA Co-pilot | Це не наш баг, це їхнє API впало!" — чому ця відмазка більше не працює...
35 Views/Reach
2026-02-25 09:17
Message №208
🤝 "Це не наш баг, це їхнє API впало!" — чому ця відмазка більше не працюєПривіт, екіпаж! Екватор тижня! ☕️Уявіть ситуацію. Ми розробляємо фічу: завантаження курсів валют від зовнішнього банку.Я (розробник) написав інтеграцію. Ви (QA) перевірили — курси тягнуться, математика сходиться, UI виглядає красиво. Реліз! 🎉Через тиждень о 2-й ночі падає весь наш продакшен. Юзери не можуть навіть залогінитись.Ми відкриваємо логи і бачимо: сервер банку пішов на технічне обслуговування і перестав відповідати.Розробник, обурено каже: "Моя совість чиста! Це не мій баг, це їхній сервер лежить!".Але справжній Senior QA в цей момент подивиться на нього дуже сумним поглядом і скаже: "Ні, друже. Те, що їхній сервер лежить — це їхня проблема. А те, що через це наш додаток показав юзеру білий екран смерті замість красивої помилки — це НАШ баг".У сучасному світі ми залежимо від десятків чужих API (SMS-шлюзи, ERP-системи, платіжки). І вони будуть падати. Це факт.Завдання крутого QA — перевірити не те, як ми працюємо, коли чуже API живе. Завдання — перевірити, як ми виживаємо, коли воно вмирає.Ось 3 речі, які ви повинні зробити (через Postman, моки або Charles Proxy), коли тестуєте будь-яку інтеграцію:🐢 Тест на "Черепаху" (Timeouts)Що буде, якщо чуже API відповість не за 200 мілісекунд, а за 35 секунд? Наш UI зависне зі спінером на півхвилини? Чи бекенд відвалиться по тайм-ауту і віддасть юзеру коректне повідомлення "Сервіс тимчасово недоступний"?
🗑 Тест на "Сміття" (Malformed Data)Ми чекаємо від них красивий JSON: {"status": "ok", "price": 100}.А що, якщо їхній сервер впаде і замість JSON пришле нам HTML-сторінку з текстом 502 Bad Gateway? Наш парсер зламається з криком Unexpected token < in JSON чи обробить це як помилку?
🛑 Тест на жадібність (Rate Limits)Що буде, якщо чуже API скаже нам 429 Too Many Requests? Ми просто покажемо юзеру помилку, чи наша система покладе цей запит у чергу і спробує автоматично повторити його через хвилину (Retry pattern)?
Висновок:Довіряй, але мокай. Ніколи не вірте документації сторонніх сервісів. Завжди тестуйте сценарій "Вони згоріли". Додаток має вміти елегантно деградувати (вимикати частину функціоналу), а не падати повністю.А як ви тестуєте сторонні API?🔥 — Підміняю відповіді (Mocking) і ламаю все, що можна!👀 — Перевіряю тільки 200 OK, бо мокати довго...🤷♂️ — Якщо впало чуже API — йду пити каву, це не моя зона відповідальності.