🐴🔎 Дело о null, которого никто не ждал
В API приходит пользователь: { "name": "Сергей", "avatar": null } На первый взгляд всё нормально. Аватарки просто нет. Но для приложения null — это не то же самое, что пустая строка или отсутствие поля. Например: "avatar": null Поле есть, но значения нет. А здесь: "avatar": "" поле тоже есть, но значение — пустая строка. А если backend вообще не отправил avatar, то поле просто отсутствует. Для пользователя результат может быть одинаковым: аватарки нет. А для программы — три разных состояния. И вот здесь легко появляется баг: frontend ожидал строку, а получил null и попытался, например, обратиться к её свойству. В итоге API отработало нормально, а ошибка появилась уже на клиенте. 🐴 Иногда самое интересное в ответе API — не то, что в нём есть, а то, чего там не оказалось. #QA #Тестирование #API #JSON #Frontend #Backend
· 23.09
Ну вообще для этого и существует спецификация, где указан тип данныхъ в свойстве объекта Так что косяк явно либо на стороне проектирования (не описано в документации), либо на стороне бэка - не соответствие типу.
А лечится крошечным фиксом - привести на беке к стрингу и не париться с тестами на разные типы данных.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 24.09
Да, если по спецификации поле должно быть строкой, а backend отдаёт другой тип — это, конечно, уже вопрос соответствия контракту. И если null там вообще не предусмотрен, то логичнее исправить backend, а не заставлять frontend гадать, что с этим делать.
Но смысл моего примера немного в другом: при тестировании мы всё-таки смотрим не только на happy path, а стараемся держать в голове возможные варианты поведения системы. Пользователь ведь не всегда действует так, как мы задумали. Кто-то может отправить запрос напрямую через Postman, подставить null, пустую строку, 0, вообще убрать поле или передать неожидаемое значение.
И вот такие варианты тоже полезно проверять — не потому, что все они обязательно должны быть валидными, а чтобы понять, как система на них реагирует: корректно отклоняет, возвращает понятную ошибку или внезапно ломается.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 24.09
Согласен на все 💯 ! Действительно моя вина - думал в направлении тепличной разработки. Но не подумал о прямых запросах апи. Признаю
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён