Автор оригинала: Aleksandar Bursac.
Вступление
Тестирование приложения означает больше, чем просто нажатие вокруг, пока что-то не сломается или не пробует разные входы, пока что-то не работает правильно.
Хотя это хороший способ найти все, что может сломать на стороне пользовательской стороне приложения, из-за неправильного использования – то, что пренебрегают, это тот факт, что API, которые обрабатывают ваши запросы, не адекватно тестируют таким образом.
Что такое API?
Прежде всего, чтобы узнать, как проверить API, вы должны знать, что такое API. В Очень Широкие термины, он позволяет двумя частям программного обеспечения взаимодействовать друг с другом, чтобы получить доступ к данным или части функциональности других программ.
Это позволяет отправлять HTTP-запрос Для того, чтобы получить HTTP ответ , в более технических терминах. Это практически основание в Интернете и как мы взаимодействуем с приложениями/как приложения взаимодействуют друг с другом.
Более конкретный пример будет – ваше приложение имеет графический интерфейс, где вы можете ввести название фильма, и он возвращает результаты (ответ), основываясь на том, что вы написали (запрос). Вы можете сделать это, используя API, которые просто «выбирают» эти данные с сервера.
Другой пример будет – вы хотите сделать платеж кому-либо (запрос), а данные приемников отправляются на сервер на основе вашего ввода, снова через API. Это время вокруг, ответ будет то, что вы успешно (или безуспешно) завершили платеж.
Зачем использовать почтальон?
Пока есть другие доступные инструменты ( Soapui , Katalon , Tricentis ), Почтальон Выделяется как один из более одного из более дружественных инструментов для начинающих, вы можете использовать, чтобы начать тестирование вашего API.
Одним из самых больших рассуждений для этого является – вам не нужно выучить новый язык и только понадобится только JavaScript, независимо от языка, в котором написано API. Это позволяет вам очень быстро отправлять запросы на API вы повторное тестирование.
Некоторые из других причин:
- Вы можете сделать автоматические испытательные коллекции относительно легко и быстро и быстро
- Вы также можете сделать многоразовые тесты без необходимости запустить их автоматически или интегрировать их с чем угодно
- Тестовые коллекции могут быть экспортированы и запущены через командную строку со своим пакетом Node.js, Ньюман , который в свою очередь может быть интегрирован с системой CI/CD
- Может работать на Mac, Windows, Chrome Apps и Linux
- Очень легко поделиться своими тестовыми коллекциями, даже когда они являются рабочими процессами
- Интерфейс позволяет импортировать конечные точки от Чугерс или Рамль Файлы, в качестве отправной точки для тестов, которые сокращают количество времени, необходимую для получения запроса
- Разработчики могут использовать его как быстрый способ проверить конечную точку, в то время как его все еще работающий в прогрессе, особенно в сочетании с предыдущей пулевой точкой
- Позволяет хранить переменные от ответов для будущего использования
- Позволяет использовать разные наборы переменных для проверки различных установок и динамических ответов
- Позволяет использовать файлы для Тестирование на основе данных
- Есть консоль, основанная на одной Google Chrome имеет, позволяя вам легко отладки при выполнении тестов
- Бесплатно (с премиальными функциями)
- Сохраняет данные (на счет) через устройства
Минусы почтальона
Хотя вы можете использовать файлы для тестирования на основе данных, вы должны пойти на лишнюю милю для разработки ваших испытаний на работу без использования одного. Почтальон вернет ошибки, когда он не может прочитать файл, который вы не можете сделать, когда вручную запустите запрос – который в основном вы будете делать при реализации теста.
Кроме того, в то время как это является Pro, что оно бесплатно, это Premium Flations Monitoring Monitoring и автоматические вызовы без каких-либо внешних программ позади платы. Это можно противостоять внутренней системе или трубопроводу, как упоминалось с Ньюман Отказ
Используя почтальон
Установка почтальона
Установка почтальона так же просто, как идет на их Сайт Загрузите его и запустите .exe
файл. Убедитесь, что вы загружаете правильную версию, но обычно это уже выбирает один на основе вашей системы:
Начиная почтальон
После того, как вы установили его, просто запустите Postman, и вы будете выполнены следующим интерфейсом:
Здесь вы можете создать учетную запись. Не обязательно, но он рекомендуется сделать один, поскольку учетная запись позволяет вам сохранить ваши данные по устройствам, просто работая в приложении.
Если вы когда-нибудь сделаете счет, шансы вы будете удалять все, что вы работали до этой точки. Если вы просто хотите попасть в мясо его как можно быстрее, нажмите Пропустите вход и отвезти меня прямо в приложение Отказ
После изготовления аккаунта (или нет), вы будете приветствовать главной страницы:
Отправка запросов
Первые вещи сначала вы должны сделать решающее решение – темный режим или режим света? Я предпочитаю темный режим, что я буду использовать для оставшейся части этой статьи:
Как только вы решили, выбирая либо а) или б) Создать новую вкладку:
Теперь, как вы взаимодействуете с API, вызывая его URL, или в других условиях, Призывая конечную точку Отказ Это означает, что вы будете связаться с чем-то, что является публично, либо то, что вы начали локально.
Чтобы удержать это просто, мы будем использовать что-то общедоступное. Этот сайт Позволяет фильтровать аниме на основе вашего поиска:
Это делает это по Призывая конечную точку (Отправка вашего запроса) и возвращая веб-страницы с результатами (показывающая ответ).
Примечание: В зависимости от сайтов поиска алгоритма используются, они могут вернуть условия, которые смутно соответствуют поискому запросу. Это может повлиять на ваши результаты позже в статье.
Вы можете использовать свой собственный поисковый термин или просто копировать, созданный в примере изображения: https://api.jikan.moe/v3/search/anime?q=aggretsuko&limit=16.
Навигация обратно в почтальон, мы можем войти в URL в назначенное поле:
Пармы Раздел автоматически заполняется параметрами, найденными в предоставленном URL. Это означает, что URL построен с двумя Значения это повлияет на то, что вы получаете в результате отправки этого Запрос Отказ
Теперь давайте отправим запрос:
ответ в JSON Формат, который довольно стандартный для большинства API в наши дни. Если вы оглядываетесь на сайт, вы получили список Предметы Это соответствовало вашему поисковому запросу, и это на самом деле тот же список, с тем же Предметы Отказ
Вы можете увидеть, что есть несколько Ключи которые имеют одинаковое имя, и каждый ключ имеет ценность , что отличается (но не должно быть), чем предыдущий товар.
Давайте посмотрим на эту часть JSON :
{ "mal_id": 12391, "url": "https://myanimelist.net/anime/12391/Mouretsu_Atarou_1990", "image_url": "https://cdn.myanimelist.net/images/anime/12/34815.jpg?s=18636fcc6bfe9368cbd3e021d6aca915", "title": "Mouretsu Atarou (1990)", "airing": false, "synopsis": "Batsugoro was the owner of a grocery store, Yaobatsu. When he tried to take a balloon hanged caught on the branch for a little child, he fell on to the ground to die. His son, Ataro, succeeded to the...", "type": "TV", "episodes": 34, "score": 0, "start_date": "1990-04-21T00:00:00+00:00", "end_date": "1990-12-22T00:00:00+00:00", "members": 231, "rated": "G" }, { "mal_id": 34016, "url": "https://myanimelist.net/anime/34016/Hatsukoi_Monster__Mou_Chotto_dake_Tsuzukunja", "image_url": "https://cdn.myanimelist.net/images/anime/2/81905.jpg?s=b2c7e247db555c7477f319ace2d927c8", "title": "Hatsukoi Monster: Mou Chotto dake Tsuzukunja", "airing": false, "synopsis": "Unaired episode bundled with the eight manga volume.", "type": "OVA", "episodes": 1, "score": 6.27, "start_date": "2017-02-07T00:00:00+00:00", "end_date": "2017-02-07T00:00:00+00:00", "members": 5594, "rated": "PG-13" }
Вся информация, возвращаемая API, присутствует здесь, включая ссылки на используемые изображения.
Теперь вы можете спросить себя:
Зачем беспокоить это, когда вы можете просто … Перейти на сайт и выполнить поиск там?
Что ж, в процессе разработки, иногда у вас будет команда разработчиков, где одна часть команды разрабатывает задний конец (API), пока не будет видно, чтобы увидеть фронт (GUI). На этом этапе очень удобно проверить API, как только он будет разработан, прежде чем он даже будет интегрирован в что-либо еще, и вернуть обратную связь в случае, если это не до документации, или есть какая-то ошибка.
Еще одна вещь, которую вы можете заметить, есть много данных, которые не используются на сайте. Разумия здесь – разработчик этого сайта, вероятно, не нуждался в этой информации, но API он использует его, предлагает это – потому что для разработчика этого API требуется. Иногда есть даже данные, которые просто требуются в другом месте, и/или это не нужно видеть на UI вообще.
Вы можете сохранить это Запрос Если вы хотите использовать его позже, и то, как вы делаете это просто нажатие Ctrl + S
на вашей клавиатуре или нажав на Сохранить кнопка рядом с Отправить кнопка:
Выберите « » + Создать коллекцию Кнопка, потому что вам нужно, чтобы сохранить Запрос в:
И сохранить запрос:
Вы можете получить доступ к вашему Коллекции и Запросы через Коллекции Вкладка:
Нажав на Запрос Откроется в новой вкладке.
Создание утверждений
Под вкладкой «Тесты» вам приветствуются редактором для вашего кода:
Теперь давайте введем действительно простой тест, который утверждает, что мы получим код состояния 200
:
pm.test("Status code is 200", function() { pm.response.to.have.status(200); });
Как вы можете видеть справа, есть некоторые фрагменты , который может быть довольно полезным, пока вы знакомитесь с ними. Они могут быть использованы в качестве макросов, чтобы избежать написания некоторого действительно общего кода все время.
Нажав Отправить Опять же, у вас будет тест, прикрепленный к вашему запросу. Этот, в частности, утверждает, что код состояния будет 200 ОК
Отказ
Это используется для проверки, если вы успешно выполнили запрошенное действие (в этом случае, получение некоторых данных). Если что-то пошло не так, вы получите один из кодов ошибок, таких как 404 не найден
, 400 плохой запрос
, так далее.
Отправка запроса, мы встречаются пропущенным тестовым случаем:
Теперь давайте попробуем проверку, если оба названия содержат слово «семь» в них:
// Get the response let responseBody = pm.response.json(); // Get the title of the first few elements let firstTitle = responseBody.results[].title; let secondTitle = responseBody.results[].title; pm.test("Title of the first item in response contains 'seven'", function() { pm.expect(firstTitle.toLowerCase()).to.include("seven"); }); pm.test("Title of the second item in response contains 'seven'", function() { pm.expect(secondTitle.toLowerCase()).to.include("seven"); });
С .to.include ()
чувствителен к регистру, мы используем .tolowercase ()
Функция в цепочке, в противном случае тест, скорее всего, будет нельзя провалиться.
Запуск этого куска кода вернется нам:
Теперь представьте, что имейте список более 10 предметов, которые вы хотели проверить … Это было бы безумно скопировать вставить код 10 раз, а иногда вы можете реально получить более сотен результатов, поэтому давайте представим простой для каждого
петля.
Во-первых, давайте изменим Q
PARA PARAL для чего-то более основного подобного Наруто
и Ограничить
paral to 10
:
pm.test("Status code is 200", function() { pm.response.to.have.status(200); }); let responseBody = pm.response.json(); let results = responseBody.results; results.forEach(function(result, i) { pm.test(`Title of item number ${i + 1} in response contains 'naruto'`, function() { pm.expect(result.title.toLowerCase()).to.include("naruto"); }); });
В Функция (результат, я)
Каждый из элементов автоматически назначается Результат
на каждом проходе и Я
Является последним параметром, поэтому JavaScript автоматически назначает его в качестве внутреннего счетчика. Вот почему мы используем $ {i + 1}
рассчитать какой предмет мы тестируем. Если мы не добавили счетчик к самому названию теста, Postman сделает его одним тестом. Попробуйте удалить его, чтобы увидеть сами.
Как видите, гораздо меньше кода и гораздо больше тестов!
Как упражнение, попробуйте добавить другой параметр, называемый такой как Тип
и установить его значение на Телевизор
Затем утверждать, что у каждого элемента есть его ключ
установить Телевизор
Отказ Помните, что это может вернуть срок, который смутно соответствует термину, если вы видите неудачу теста.
Представляя переменные
Для дальнейшей способности почтальона давайте введем переменные в микс. Я не пойду в Глобальные переменные , Переменные среды более полезны для начала:
Давайте добавим переменную среды, такие как Наруто-10
с Q
и Ограничить
установить Наруто
и 10
соответственно:
Измените свой URL так, чтобы параметры не были жестко закодированы, а скорее могут быть установлены на любую переменную, которую мы определяем впоследствии:
https://api.jikan.moe/v3/search/anime?q={{q}}&limit={{limit}}
Как вы можете видеть, мы добавили Q = {{q}} & limit = {{limit}}
вместо фиксированного значения. {{}}
С чем-то между ними – как постман знает, что он ищет переменную. Вы заметите, что это будет красный, и это потому, что мы не выбрали окружающую среду, поэтому почтальон говорит нам, что он не может найти переменную:
И теперь, мы можем изменить наш код, чтобы использовать переменные среды, вызывая окружающая среда
объект:
let responseBody = pm.response.json(); let results = responseBody.results; results.forEach(function(result, i) { pm.test(`Title of item number ${i + 1} in response contains ${environment.q}`, function() { pm.expect(result.title.toLowerCase()).to.include(environment.q); }); });
Отправка запроса в этом штате также должно вернуть нам несколько пропущенных тестов:
Заключение
Почтальон Выделяется как один из более одного из более дружественных инструментов для начинающих, вы можете начать тестирование ваших API. Одним из самых больших рассуждений для этого является – вам не нужно изучать новый язык, и только когда-либо понадобится JavaScript, независимо от языка, который API написан.
Если вы хотите проверить себя и в настоящее время находятся в проекте, попробуйте узнать, есть ли какие-либо API, которые вы можете получить доступ, и потенциально звонить из почтальона. Если нет, есть много Общественные API похож на тот, который использовался в этой статье.