Вечірня історія QA
Коли клієнт не готовий, що сервер теж може не бути готовий)
Сьогодні історія про те, як одна система "вмерла", і як треба перевіряти круто щоб це не пішло в реліз, бо як що би ніхто не перевірив - то бобо, як кажуть а хто знав що Microsoft теж може не відповідати 🫠
Що я маю вам сказать)
Звичайне SSO, логін через Microsoft. Працює роками.
Аж поки не відвалиться зовнішній сервіс.
І що от тут фронт намагається отримати токен, отримує 403 Forbidden, а далі тиша. Ніякого graceful degradation, fallback-у чи хоча б діалогу сервіс недоступний. Просто краш. В логах, винятки, в інтерфейсі порожнеча. і ви просто уявіть якщоб таке було у людей які користуються тим чи іншим продуктом
І це класичний сценарій, коли клієнт не готовий до того, що зовнішній сервіс може бути: умовно недоступний (timeout)/ повернути 403/500/ не віддати відповідь взагалі
І таких ситуацій у реальному продакшені більше, ніж здається.
ТО що треба робити при тестувані яких то таких інтеграцій) щоб нічого не бракувало?
- Перевірки доступності зовнішнього сервісу
- Обробки помилки (а не падіння на 403)
- Емуляції ситуацій "а якщо не буде відповіді?" так саме так
Як це тестувати, нормально і локально?
Щоб перевірити, як поводиться система, коли SSO недоступне, треба не чекати аварії, а змоделювати її руками. Один із найпростіших способів, перекрити DNS через hosts.
Блокування Microsoft SSO на macOS - бо я принцепі з мака працюю теж) але і для віндовс низче теж напишу)
Відкриваєте Terminal:
Cmd + Space → Terminal → Enter
Редагуєте файл hosts:
sudo nano /etc/hosts
Додаєте в кінець:
127.0.0.1 auth.yourcompany.com
127.0.0.1 www.auth.yourcompany.com
::1 auth.yourcompany.com
::1 www.auth.yourcompany.com
Зберігаєте зміни:
Ctrl + X → Y → Enter
ну і звісно чищаєш DNS-кеш:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
ну і обовьязково щоб впевнитися перевіряєте:
ping auth.yourcompany.com
Якщо отримуєш 127.0.0.1 або timeout, блокування працює.
Для віндовс принцепі все теж саме але
Відкрий файл hosts:
У Блокноті: Файл → Відкрити
Перейди сюди:
C:\Windows\System32\drivers\etc
ну і в кінці теж пінгуєте і готово)
Мій поінт який
Не завжди проблема в нас, іноді сервер на тому боці просто пішов спати. І нам треба бути до цього готовими
І не забувай: тестуєш інтеграцію, блокуй URL і дивись, що станеться. Бо тестуючи інтеграції, більшість перевіряє тільки "щасливий шлях". Але стабільність системи це не про щастя. Це про готовність до невдач.
Всім гарного вечора, не грузіться і не бежіть провіряти заблокованний хост) відпочівайте
Обняв 🤗🤗🤗