Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

21.10.2024

Найскладніший інтеграційний тест

Є тут така ситуація… Сервіс під час своєї зупинки робить рукостискання наступнику. Причому наступника знаходить через AWS API. Причому рукостискання передає контекст, в тому числі зібраний зі чужої бібліотеки. От, коли чужа бібліотека після оновлення несподівано змінила порядок дій, поламала весь процес, та помітили це тільки в продакшні, я вирішив — пора зробити інтеграційний тест!

Таку історію й перевірити вручну не так легко, бо це потрібно не тільки розгорнути версію для перевірки, а два рази її розгорнути — щоб новий код зупинки виконався. На це ні в кого немає часу! Тому автоматичний тест піднесе надійність на новий рівень. Але як його реалізувати?

Першим чином прибрав залежність від AWS. В цій частині я впевнений, до того ж перевіряти її мало сенс тільки зі справжнім AWS. Зробив механізм пошуку наступника модульним.

Планував запускати локально дві копії сервісу та перевіряти передачу контексту між ними. Але в тому коді, що його приймає, я теж впевнений — бо його легко перевірити в ізоляції. Тому натомість написав маленький тестовий сервер, який й стане “наступником” в тестовому середовищі. Все, що від нього потрібно — це прийняти запит та зберегти його для перевірки.

А ось роботу з чужими бібліотеками та зупинку точно потрібно робити в інтеграції, бо саме тут виникають помилки, які важко помітити. Тому її залишив без змін. На щастя, зупинити сервіс, запущений в Docker, нескладно.

Завдяки відтинанню зайвого вийшов цілком практичний тест — якщо запускати його останнім, то ще й на зупинці сервісу можна заощадити!