Тестирование веб-сервисов REST

Моя организация работает над созданием веб-сервисов RESTful на сервере приложений JBoss. Команда QA привыкла к тестированию веб-сервисов SOAP с помощью SoapUI. У SoapUI появилась новая версия с возможностями REST. Мы рассматриваем возможность использования этого.

  1. Существуют ли в сети бесплатные общедоступные службы RESTful, которые можно было бы протестировать?
  2. Какие инструменты доступны (и используются) для тестирования веб-служб RESTful?

Что касается заголовка «Тестирование веб-сервисов REST» ... Надеюсь, вы имеете в виду «Тест» и не делаете неясной ссылки на Tet Offensive (поговорите об усилении защиты сервера!)

micahwittman 15.10.2008 06:51

Я, конечно, имел ввиду Тестирование. спасибо Micahwittman и Крису за исправление

anjanb 15.10.2008 07:35
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
63
2
57 890
24
Перейти к ответу Данный вопрос помечен как решенный

Ответы 24

CURL На полпути. Другая половина проверяет заголовки, коды ответов и содержимое объекта, чтобы убедиться, что все в порядке. Для этого вы можете использовать различные инструменты (в области сценариев оболочки, передача заголовка и содержимого в файлы и их различие может помочь). Доработать набор инструментов не так уж и сложно, возможно, объединить его с выбранной вами структурой модульного тестирования.

Я создал панель тестирования остальных веб-сервисов с помощью AJAX. На самом деле это было не так уж и сложно. У вас есть некоторые проблемы с безопасностью, которые нужно решить (например, убедитесь, что у вас есть набор тестов на том же сервере или, возможно, подписанный Javascript).

Да, правила CURL для тестирования REST. curl.haxx.se

bortzmeyer 15.10.2008 12:22

Проверить Скрипач

Вы можете использовать веб-сервисы, используя довольно тривиальные части Python. В зависимости от вашей безопасности вы можете просто использовать Python urllib или urllib2 для выполнения запросов REST и изучения ваших ответов.

Кроме того, вы можете использовать Python unittest для управления выполнением Python-тестов ваших REST-сервисов.

class TestSomeREST( unittest.TestCase ):
    def setUp(self):
        REALM = "[email protected]"
        self.client= RESTClient( "localhost", 18000, "tester", "tester", REALM )
    def test_1_get(self):
        response = self.client.get('/this/that/other/2/')
        self.failUnlessEqual(200, response.status_code)
        j1= JSONDecoder().decode(response.content)
        self.assertEquals(2, j1[0]['pk'] )
        entity= j1[0]['fields']
        self.assertEquals('Some Other Group', entity['name'])
        self.assertEquals('E1G2', entity['customer_id'])

Класс RESTClient использует urllib2 для прохождения дайджест-аутентификации для каждого запроса. Это довольно сложно, но я могу поделиться сутью, если будет интересно.

Попробуйте Python httplib. Это очень просто: вы указываете метод, URL-адрес и используете urllib.urlencode для параметров / тела POST.

При желании это можно комбинировать со встроенным модулем unittest для сообщения об ошибках.

Пожалуйста, попробуйте Firefox addon Poster, который прост в использовании и быстро поможет вам в работе.

Собственно, я забираю свой +1. При проверке трафика, который отправляет плакат, он имеет неправильную форму, что вызывает проблемы для моего веб-сервиса. Когда вы добавляете параметры и выполняете POST или PUT, он фактически не отправляет эти параметры и не отправляет тип содержимого, если вы явно не добавите содержимое.

Earlz 25.03.2010 19:44

Я использовал для этого JMeter, особенно для таких вещей, как нагрузочное тестирование. Он похож на SoapUI (который я тоже использовал), но больше ориентирован на тестирование веб-страниц, что также делает его неплохим при тестировании сервисов RESTful.

Я написал программу специально для тестирования веб-служб REST. Это довольно простое приложение, написанное на .NET 2.0 (я тестировал его только в Windows Vista, но должно работать и на XP). Приложение использует HttpWebRequest для выполнения запросов и отображает полученный ответ, а также заголовки для запроса и ответа. Я провел небольшое тестирование, но подумал, что это может помочь вам протестировать ваши веб-службы.

ОТДЫХ Тест

Я еще не тестировал его, но это приложение Java кажется хорошим для тестирования служб REST. Об этом также есть учебник по Javalobby.

Приложение Java: http://code.google.com/p/rest-client/

Туто: http://java.dzone.com/announcements/wiztoolsorg-restclient-21-rele

Ответ принят как подходящий

soapUI тоже выполнит эту работу, проверьте это сообщение в блоге, чтобы начать.

Возможно, soapUI работает, но я не могу сказать, потому что он постоянно дает сбой на моей машине Ubuntu, убивая Eclipse и заставляя меня терять любую несохраненную работу. Я пробовал все обычные обходные пути. Автономная версия хуже.

HDave 13.03.2012 16:41

SOA Cleaner - это тестовый инструмент, который проверяет и мыло, и отдых (также WCF, но, похоже, вам не нужна эта функция). Это очень интуитивно понятно и удобно. Написано на .NET. Также доступна бесплатная версия. можно скачать с http://xyrow.com. Удачи!

В настоящее время я исследую приложение CLI wsclient для этой цели (http://wso2.org/library/3362). Это довольно многообещающе, и его можно использовать для быстрого тестирования из оболочки bash. Конечно, как многие упоминали здесь, многие инструменты, которые поставляются с системой * nix, сделают свою работу с лакомым кусочком кодирования / написания сценариев.

вы можете использовать Simple REST Client - это тоже расширение для Google Chrome https://chrome.google.com/webstore/detail/fhjcajmcbmldlhcimfajhfbgofnpcjmb

Чтобы протестировать службу REST, вы можете попробовать Будьте уверены, что упрощает тестирование служб REST и проверку ответа на Java (с использованием JUnit или TestNG).

Я использую Расширение консоли REST для Google Chrome, и это, безусловно, лучшее, что я пробовал. Он также поддерживает различные механизмы безопасности, такие как OAuth.

(обновление 2: ссылка на исправление)

OnionTest все еще бета, но весьма полезен

Если вам нравится использовать Ruby, для него есть Гем REST-Client

Я считаю, что для тестировщиков ruby ​​- действительно простой язык для изучения, и в нем есть отличные инструменты, такие как Cucumber, для выполнения приемочных тестов в стиле BDD.

Я тестирую службы RESTful с помощью собственной платформы .NET (без проблем с портированием на Java). Основные принципы:

  • построить клиент (для звонков)
  • классы типов сборки (XML и JSON)
  • десериализовать ответ
  • утверждать вещи

Если вам нужна дополнительная информация, я рад поговорить.

Проверьте Почтальон - https://chrome.google.com/webstore/detail/fdmmgilgnpjigdojojpjoooidkmcomcm/. Это инструмент, над которым я работал в течение последних нескольких месяцев, и в последнее время, судя по отзывам, которые я получаю, он стал весьма полезным для больших проектов REST, одновременно помогая в базовом тестировании конечных точек REST.

Код для этого также доступен на Github. https://github.com/a85/POSTMan-Chrome-Extension

Для java также существует RESTFuse, который позволяет разрабатывать модульные тесты, которые могут выглядеть так:

@Rule
public Destination destination = new Destination("http://localhost:8080/rest/");


@HttpTest( method = Method.GET, path = "/status" ,authentications =
   @Authentication(type = AuthenticationType.BASIC, user = "joe", password = "doe")
)
public void testAuthRhqadmin() {
    com.eclipsesource.restfuse.Assert.assertOk(response);
}

Этот тест запускается против http://localhost:8080/rest/status и аутентифицируется как пользователь joe с паролем doe. Затем тело метода проверяет, что вызов GET возвращает код состояния 200.

Самый простой способ протестировать веб-службу REST - использовать curl в терминале.

Есть несколько кодов, которые я использовал для тестирования своего веб-сервиса рельсов. Вы можете изменить их, чтобы они соответствовали вашим услугам.

ПОЛУЧИТЬ

curl http://localhost:3000/courses.json

ПОЧТА

curl -H "Content-Type:application/json"  -d '{"courseCode":"55555","courseName":"SEEEE","courseYr":999}' http://localhost:3000/courses.json

PUT в рейлах: eg1 (со всеми полями):

curl -H "X-Http-Method-Override: put" -H "Content-Type:application/json"  -d '{"courseCode":"123456","courseName":"AAAAAAAA","courseYr":12345}' http://localhost:3000/courses/5.json

eg2 (с полем только для редактирования):

curl -H "X-Http-Method-Override: put" -H "Content-Type:application/json"  -d '{"courseYr":999999999}' http://localhost:3000/courses/3.json

УДАЛИТЬ в рельсах с предоставленным идентификатором

 curl -H "X-Http-Method-Override: delete" -H "Content-Type:application/json"  -d '{"id":4}' http://localhost:3000/courses/5.json

Я пробовал множество клиентов REST, и, безусловно, лучшее, что я использовал, - это приложение Chrome: DHC.

DHC (aka Dev HTTP Client) is designed and developed by a developer for developers to make direct HTTP resource discovery, manipulation and testing more easily. Beside the main function, sending/receiving custom HTTP requests/responses, it allows permanently to save a request to a local repository for later reuse and moreover the request declaration can include variables that are context specific. With the use of contexts you can easily switch between various environments without modifying request declaration. (e.g. from a test environment to production)

Тестирование полноценных веб-сервисов REST - простая задача. Бесплатные объявления доступны в браузерах как клиент REST, откуда вам нужно отправить веб-службу с ожидаемым / требуемым типом метода: GET / POST / PUT / DELETE Если параметры совпадают, то вывод будет сгенерирован в теле браузера.

Даже когда я знаю, как тестировать веб-службы REST и использовал плагины, такие как Postman и RestClient, мне было нелегко понять, что вы пытаетесь сказать. Я уверен, что тот, кто задаст вопрос, не поймет его должным образом. Я прошу вас поработать над письмом более четко.

Saurabh Patil 08.02.2015 09:05

Надеюсь, приставка вам поможет ...!

mohit sarsar 18.02.2015 12:25

Я знаю, что это очень старый вопрос, но он может быть полезен другим. Чтобы ответить на ваш первый вопрос, вы можете проверить здесь, чтобы протестировать некоторые веб-службы REST.

Плагин Fiddler и Poster в Firefox можно использовать для тестирования любых веб-сервисов REST. SoapUI также поддерживает веб-службы RESTful.

Для расширенного тестирования REST вы можете попробовать HttpMaster.
Он поддерживает динамические параметры, удобные средства просмотра для XML / JSON и различные типы проверки данных ответа, которые можно объединить в логические выражения.
Для базовых HTTP-запросов будет достаточно плагина для браузера.

Другие вопросы по теме