Тестирование API Урок 5
POST с телом в формате JSON
Документация для пятого урока
Base URL: 'http://www.answerit.ru' … 5. Resource: /flaskapi/api/multiply_two/ Method: POST Body: { "factor_1" : float, "factor_2" : float } Responses: 200 OK application/json { "Success":"Product of %factor_1% and %factor_2% is %product%" } where %product% = %factor_1% * %factor_2%
Что нового в документации:
Method POST который мы ещё не применяли.
Менять метод Вы уже умеете, так что
здесь никаких сложностей.
Появилось Body. Это значит, что в запросе будет не только Endpoint но
и какие-то данные внутри.
Создаём новый Resource с методом POST и обращаем внимание на то, что когда Вы меняете метод с GET на POST в нижней части окна слева появляется новое поле.
Заполним это поле данными в формате JSON по спецификации.
Body: { "factor_1" : float, "factor_2" : float }
Нужно записать данные в формате JSON
Например, попробуем отправить для начала целые числа 10 и 2. Ожидаем получить в ответ JSON
с информацией о том чему равно их произведение.
Если всё прошло успешно, мы узнаем что 10 умножить на 2 это 20
Попробуйте передать другие целые числа и проверьте результат.
Следующий шаг - попробуем передать числа типа float то есть с
так называемой плавующеё точкой.
Самый простой спосом - просто приписать .0 к уже существующим числам.
Как видите, в этом примере ничего существенно не изменилось, просто добавился .0
Так как мы учимся тестировать, не будем останавливаться и
пошлём другие числа. В этот раз после . пусть будут не нули.
Например, передадим 10.1 и 2.2
Результат не совсем такой как ожидалось: 10.1 умножить на 2.2 это
ровно 22.22 и никаких 0000000000002 быть не должно.
Видимо, разработчик понадеялся на умножение внутри языка программирования
и не подумал о таком результате.
Напишем ему вежливый email, или сообщение в баг-трекинговой системе, примерно следующего содержания:
«Уважаемый разработчик, В результате тестирования API сайта answerit.ru, а именно запроса 5. POST /flaskapi/api/multiply_two/ с телом { "factor_1" : 10.1, "factor_2" : 2.2 } получен следующий результат: HTTP ответ 200 OK. Тело ответа: "Success":"Product of 10.1 and 2.2 is 22.220000000000002"} Значение 22.220000000000002 вызывает сомнения, так как ожидаемое значение 22.22. Просьба внести исправления. С уважением, Тестировщик»
В ответ, скорее всего, придёт что-то про Representation Error, разработчик
не при чём и надо учить матчасть.
Но это тоже часть работы тестировщика.
Оформление отчётов о найденных багах это отедельная история для следующих уроков. Чем менее забюрократизирована компания
тем неформальнее может быть отчёт. Главное - предоставить всю информацию, необходимую для идентификации проблемы.
Если в компании много бюрократии, например в регулируемых областях, таких как медицина, то каждое слово может
быть очень важным в виду принятых соглашений.
Итоги
В этом уроке Вы могли научиться отправлять запрос POST с телом в формате
JSON.
До этого знакомство с JSON ограничивалось получением данных с сервера,
а теперь Вы уже можете написать простой JSON по спецификации самостоятельно.
Вы нашли кандидата на баг - поздравляю! И написали небольшой отчёт.
Большая просьба - не посылайте слишком много запросов. Я не уверен какую нагрузку выдержит сайт на моём тарифе.