Обновить
8K+
2

Пользователь

0,2
Рейтинг
Отправить сообщение

Лишнее поле в ответе, которое никто не замечает

Когда сверяешь ответ с документацией, обычно идёшь по списку из доки. Поле на месте, тип подходящий, значение похоже на правду, дальше. Так ловится отсутствие того, что должно быть, но совершенно не ловится появление того, чего быть не должно.

По документации ответ выглядит так:

{
  "traceId": "7c2a8410-56f2-4f59-b921-202607230001",
  "orderId": "ORD-2026-0723-001",
  "status": "CREATED",
  "customerId": "C-1042",
  "pricing": {
    "subtotal": 51960,
    "discount": 5196,
    "total": 46764,
    "currency": "RUB",
    "vatAmount": 0
  }
}

А это то, что реально пришло со стенда:

{
  "traceId": "7c2a8410-56f2-4f59-b921-202607230002",
  "orderId": "ORD-2025-0723-001",
  "stats": "CREATE",
  "customerId": "C-1042",
  "pricing": {
    "subtotal": 51960,
    "discount": 5196,
    "total": 46764,
    "curency": "RU",
    "price": 46764
  }
}

Засеките тридцать секунд и посчитайте расхождения. Девять полей, глазами — ровно так, как это делается в реальной задаче.

Восемь!

  1. traceId заканчивается на 0002, а ждали 0001 — ответ пришёл не на наш запрос.

  2. В orderId стоит 2025 вместо 2026.

  3. Поля status нет: вместо него stats,

  4. значение CREATE вместо CREATED.

  5. Поля currency нет: вместо него curency,

  6. значение RU вместо RUB.

  7. Поле vatAmount пропало совсем.

  8. Появилось поле price, которого в документации нет.

Все три суммы совпали, и глаз расслабляется именно там, где надо смотреть внимательнее.

В блоке pricing по документации пять полей, а в ответе приехало шестое: price. Сверка по списку из документации его не показывает — по определению: ты идёшь по перечню известных полей, а незнакомого в перечне нет. Плюс значение в нём совпадало с total, так что даже случайный взгляд ни за что бы не зацепился. Разошлись они позже, когда логику расчёта поправили, и к тому моменту это поле уже читал клиент.

Штука в том, что лишнее поле редко бывает безобидным. Обычно это либо внутренний флаг, который случайно вылез наружу, либо отладочное значение, либо данные, которых в публичном ответе быть не должно вообще. И глазами такое ловится ровно один раз, на самом первом ответе, пока смотришь внимательно.

Я закрыл это одной проверкой. Перечислил, какие ключи разрешены на каждом уровне вложенности, и потребовал, чтобы других не было. Дальше она работает сама и краснеет, когда в ответе появляется что-то новое. В том числе когда поле честно добавили в документацию, а мне сказать забыли — тоже полезно узнать.

восемь расхождений за один прогон ровно те, что выше вы искали глазами
восемь расхождений за один прогон ровно те, что выше вы искали глазами

Собирал я это без кода, в своём настольном приложении под Windows. Указываешь путь к параметру, оператор, ожидаемое значение из документации, при желании тип данных — и всё. Запускается руками, из CI не работает, так что если у вас уже есть автотесты и человек, который их пишет, вам это неинтересно, у вас задача решена лучше.

Мне сейчас не хватает взгляда со стороны, особенно ручных тестировщиков и аналитиков. Если вы тоже проверяете API руками и автотестов у вас нет, расскажите в комментариях, как вы ловите такие расхождения. А если захочется посмотреть на инструмент вживую, напишите мне, я покажу и дам доступ, он бесплатный.

Теги:
0
Комментарии5

Всем привет! Рад что заинтересовало, в прошлом посту https://habr.com/ru/posts/1067648/ рассмотрели отчет базовой проверки с расчетами бизнес логики.

Составить такую проверку можно всего-то в пару кликов, если не умеете кодить не беда!

Создание проверки с помощью шагов Тест-кейс
Создание проверки с помощью шагов Тест-кейс

Справится даже ручной тестировщик или аналитик, достаточно ввести путь к параметру, выбрать оператор, ввести ожидаемое значение из доки, выбрать проверку на тип данных и если нужно для использования значения для дальнейших проверок то просто сохраняем в переменную.

Json и возможность проверять то я показал на картинке это лишь малая часть возможных проверок в приложении, как и в sql можно создавать множество комбинаций, работа с элементами массивов, проверки на лишние параметры, xml и многое другое.

Сейчас проходит ЗБТ Checkcraft где можете проверить с помощью встроенного Mock сервера и ли доступных API интересующий вас сценарий! https://checkcraft.ru

Теги:
+1
Комментарии9

Всем привет! Хочу представить вам приложение, которое сможет освободить ресурс тестирования - Checkcraft.

На данном этапе ЗБТ, приложение уже показывает невероятные результаты, экономя человекочасы для аналитиков, разработчиков или тестировщиков, что соответственно разгружает команду и дает расслабить глаза.

! Сейчас покажу результат, который изменит процесс в вашей команде:

Проверка с детальным отчетом за секунду
Проверка с детальным отчетом за секунду

Типичная ситуация с проверкой расчетов но это же можно сделать в Postman с помощью JS или же просто в коде написать автотест. (Не нужно)

В данном приложении гораздо быстрее будет создать правила самому, в удобно интерфейсе с использованием проверок типов данных, ожидаемого значения, переменных и конечно же покрывать бизнес логику параметров с помощью сложений, вычитаний и иных необходимых сценариев чтобы ничего важного не пропустить!

Присоединиться к ЗБТ можно по инструкциям на официально сайте приложения - https://checkcraft.ru

В следующих постах покажу ВСЕ! функции приложения, это только начало...

Теги:
0
Комментарии0

Информация

В рейтинге
2 917-й
Зарегистрирован
Активность

Специализация

Инженер по автоматизации тестирования