В БД все правильно, а пользователь видит ерунду
«У меня в Postman все зеленое!» «В базе данные правильные, бэкенд ни при чем!»
Знакомо? 😅
Бывает, проверяешь БД - все идеально. Смотришь API - тоже все хорошо. А пользователь открывает приложение и видит совсем не то.
И начинается перепинывание мяча между фронтом, бэком и аналитикой. Это как испорченный телефон, только в IT. И задача QA - разобраться, на каком этапе данные исказились.
Кейс №1. Перепутанные координаты
Однажды в мобильном приложении обнаружили, что координаты отображаются неправильно. Начала разбираться и пошла по цепочке от пользователя к источнику данных: - БД мобильного приложения - широта и долгота перепутаны местами. - API - то же самое. - Сервер UI - координаты перепутаны. - БД сервера - аналогичная картина. - Смотрю логи - и нахожу источник: именно в таком виде данные приходят от интеграционной системы 🕵️♀️
Причина найдена. Но что делать с релизом?
Интеграционная система исправляла ошибки небыстро, а блокировать наш релиз не хотелось.
Я завела тикет на исправление для интеграционной команды. Параллельно на нашей стороне создала задачу: при получении данных сервер должен был менять широту и долготу местами.
Временное решение, зато позволяло продолжить работу и корректно отображать координаты.
Когда интеграция исправила ошибку у себя, я завела еще одну задачу - убрать наше преобразование. Иначе временное решение могло бы остаться навсегда.
Кейс №2. Часовые пояса
Тоже интересная история.
Пользователь из UTC+3 создает запись. Пользователь из UTC+7 открывает ее и видит неправильное время: часовые пояса фактически складывались.
А система была связана с записью к врачу. Ошибка во времени - уже не просто некрасивое отображение, а вполне реальный риск пропустить прием 😱
В итоге договорились: в БД храним время в UTC+0, а на интерфейсе отображаем его с учетом часового пояса пользователя.
Как я локализую такие проблемы?
Иду от места, где обнаружена ошибка, к источнику данных: UI - что именно видит пользователь? БД - какие данные фактически хранятся? API - что возвращается клиенту? Логи - что система получила, обработала и передала дальше? Источник данных / интеграция - откуда пришли исходные значения?
В ход идут консоль разработчика, логи, БД, Postman или Swagger. Инструменты разные, задача одна - проследить путь данных и найти точку, где возникло расхождение.
И еще один важный момент - как донести результаты расследования.
В баг-репорте описываю не просто «не работает», а что именно проверила и какие данные получила на каждом этапе.
Когда разработчик говорит: «У меня все проходит», предлагаю повторить проверку вместе. И иногда выясняется, что он просто отступил от шагов в баг-репорте 😄
А если фронтенд и бэкенд не могут договориться, кто должен исправлять проблему, подключаю аналитика. Лучше разобраться в требованиях и архитектуре, чем бесконечно выяснять отношения в чате или баге.
Тестирование - это не просто тыканье в экран. Это понимание всей цепочки движения данных: от источника до того, что в итоге видит пользователь.