Selenium против XmlUnit + HttpClient для тестирования веб-REST API

Мне нужно протестировать функции веб-API в формате REST. В настоящее время используется Selenium RC для функционального тестирования сайта. И используя XmlUnit и HttpClient для функционального тестирования нашего REST API. Но, похоже, жизнь была бы проще, если бы мы действительно могли разделить наш код функционального тестирования на весь селен. В частности, с WebDriver в Selenium 2.0 теперь проще, чем когда-либо, тестировать ответы XML с помощью XPath.

Мои мысли в лагере Pro XmlUnit+HttpClient:

  • позволяет легко тестировать с прямыми вызовами базы данных или Spring beans
  • более легко позволяет тестировать ответы JSON, когда / если мы будем поддерживать это в будущем
  • селен предназначался для веб-интерфейса, а не для тестирования REST API.

Мои мысли в Pro Selenium WebDriver лагере:

  • разделяет функциональное тестирование на стандартные селеновые тесты
  • легко протестировать результаты, используя другие наши тесты пользовательского интерфейса селена, дальнейшее тестирование пользовательского интерфейса
  • позволяет другим, кроме основных разработчиков, просматривать функциональные тесты API
  • Может быть, проще использовать такие сервисы, как BrowserMob, который использует тесты на селен, для загрузки API тестирования?
  • надеюсь, более быстрые функциональные тесты с помощью selenium framework

Мы используем Spring 3 и спящий режим. Что лучше всего подходит для функционального тестирования нашего API?


person at.    schedule 07.12.2010    source источник


Ответы (3)


Другой вариант - использовать REST Assured, Java DSL для тестирования служб REST. Он позволяет писать тесты модульного стиля с небольшим шаблонным кодом как для XML, так и для JSON. Кроме того, он предоставляет более продвинутые функции, такие как аутентификация, проверка XSD / DTD, коды ответов, файлы cookie и т. Д. Дополнительная информация доступна на их страница использования.

Отказ от ответственности: REST Assured - это проект с открытым исходным кодом, инициированный моим коллегой.

person matsev    schedule 04.06.2011

Если вы хотите провести реальное функциональное тестирование остальных API, я могу порекомендовать Fitnesse с этим приспособлением: https://github.com/smartrics/RestFixture

Селен - плохой выбор для такого рода вещей.

Что касается тестирования производительности, вы можете запустить остальные тесты API в Jmeter за считанные минуты, не нужно платить сторонним организациям.

person Bill    schedule 08.12.2010
comment
Я думаю, что ваш ответ может быть полезен, если вы кратко объясните, почему вы считаете, что Selenium - плохой выбор для этого сценария, мне также любопытно, так как я подумываю попробовать его! Спасибо - person GrahamMc; 24.05.2013

Тестирование API не похоже на функциональное тестирование, это больше похоже на модульное тестирование. Поэтому я бы выбрал XmlUnit + HttpClient

person Bozho    schedule 07.12.2010
comment
хммм ... Я думаю, тестирование API находится между модулем и функциональностью ... хороший момент. - person at.; 08.12.2010
comment
Я бы назвал это интеграционным тестированием, а не модульным тестированием. Предполагая, что код, лежащий в основе API, прошел модульное тестирование, этот вид тестов в основном подтвердит правильность предположений модульного тестирования и, таким образом, возможность интеграции различных модулей. - person David Pärsson; 27.09.2012
comment
Функциональный и модульный тесты не исключают друг друга. Наименьшая возможная тестируемая функция, вполне может быть всей функциональностью. Несмотря на то, что веб-сервис предназначен для использования другой системой, он по-прежнему остается веб-сайтом, и тест, охватывающий всю его функциональность, будет функциональным тестом. Тем не менее, использование Selenium для тестирования не-Javascript / статических веб-сайтов, вероятно, является излишним. Как сказал Конфуций, не используйте пушки для уничтожения комаров. - person Manatax; 10.04.2013