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

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

  • Доступны ли общедоступные сервисы RESTful в сети бесплатно, чтобы кто-то мог проверить?
  • Какие инструменты доступны (и используются) для тестирования веб-служб RESTful?

Ответ 1

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

Ответ 2

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

Ответ 3

Вы можете осуществлять веб-службы, используя довольно тривиальные биты 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 для прохождения аутентификации дайджеста для каждого запроса. Это довольно сложно, но я могу поделиться сущностью, если это интересно.

Ответ 4

Отъезд Fiddler

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

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

GET

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

POST

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

PUT in Raills: 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

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

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

Ответ 11

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

Ответ 12

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

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

Ответ 13

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

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

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

Ответ 14

Для 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.

Ответ 15

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

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

Ответ 16

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

Ответ 17

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

Тест REST

Ответ 18

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

Ответ 19

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

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

Ответ 20

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

DHC (aka Dev HTTP Client) разработан и разработан разработчиком для разработчиков, чтобы упростить прямое обнаружение, манипулирование и тестирование HTTP-ресурсов. Помимо основной функции, отправки/получения пользовательских HTTP-запросов/ответов, она позволяет навсегда сохранить запрос в локальном репозитории для последующего повторного использования, и, кроме того, объявление запроса может включать переменные, которые являются специфичными для контекста. С помощью контекстов вы можете легко переключаться между различными средами без изменения объявления запроса. (например, от тестовой среды до производства).

Ответ 21

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

Ответ 22

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

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

Ответ 23

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

Ответ 24

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