4

Ich muss Web-API-Funktionen im REST-Format testen. Derzeit wird Selenium RC zum Testen der Website verwendet. Und mit XmlUnit und HttpClient unsere REST-API funktional zu testen. Aber es scheint, dass das Leben einfacher wäre, wenn wir unseren funktionalen Testcode wirklich in das gesamte Selen aufteilen könnten. Insbesondere mit WebDriver von Selenium 2.0 ist es einfacher denn je, XML-Antworten mit XPath zu testen.Selenium vs XmlUnit + HttpClient für Web-REST-API-Test

Meine Gedanken im Pro XmlUnit+HttpClient Lager:

  • erlaubt direkte Datenbankaufrufe oder Spring-Beans
  • leichter Antworten Tests JSON erlaubt auf einfache Weise zu testen, wenn/falls wir unterstützen, dass in Zukunft
  • Selen wurde für Web-UI gemeint, nicht API-Tests

Meine Gedanken im Pro Selenium WebDriver Lager Ruhe:

  • trennt die Funktionsprüfung aller in Standard-Selen-Tests aus
  • leicht Ergebnisse testen, indem Sie unsere anderen Selen UI-Tests verwendet wird, weiter die Benutzeroberfläche testen
  • ermöglicht andere als Kernentwickler funktionelle API Tests
  • vielleicht Meinung leichter zu bedienende Dienste wie BrowserMob, die Selen-Tests verwendet, um Test-API zu laden?
  • hoffentlich schnellen Funktionstests mit Selen Rahmen

Wir verwenden Frühling 3 und überwintert. Was ist das Beste, um unsere API funktional zu testen?

Antwort

6

Eine andere Option könnte REST Assured sein, ein Java-DSL zum Testen von REST-Diensten. Es ermöglicht Ihnen, Unit-Style-Tests mit wenig Standardcode für XML und JSON zu schreiben. Darüber hinaus bietet es erweiterte Funktionen wie Authentifizierung, XSD/DTD-Validierung, Antwortcodes, Cookies usw. Weitere Informationen finden Sie unter usage page.

Haftungsausschluss: REST Assured ist ein Open-Source-Projekt, das von einem meiner Kollegen initiiert wurde.

-1

Das Testen einer API hört sich nicht nach Funktionstests an, sondern eher nach Komponententests. Also würde ich gehen für XMLUnit + Httpclient

+0

hmmm ... Ich denke, das Testen einer API ist zwischen Einheit und Funktion ... guter Punkt. –

+1

Ich würde es eher Integrationstests als Unit-Tests nennen. Unter der Annahme, dass der Code hinter der API Unit-getestet ist, würde diese Art von Tests meist sicherstellen, dass die Unit-Test-Annahmen korrekt sind und somit die verschiedenen Einheiten richtig integriert werden können. –

+0

Ein Funktions- und Unit-Test schließen sich nicht gegenseitig aus. Die niedrigste testbare Funktion, die möglich ist, könnte sehr gut die gesamte Funktionalität sein. Auch wenn ein Web-Service so konzipiert ist, dass er von einem anderen System genutzt werden kann, ist es immer noch eine Website, und ein Test, der die gesamte Funktionalität umfasst, wäre ein Funktionstest. Nichtsdestotrotz ist die Verwendung von Selenium zum Testen von nicht-Javascript/statischen Webseiten wahrscheinlich ein Overkill. Wie Konfuzius sagte: "Benutze keine Kanone, um Moskitos zu töten." – Manatax

2

Wenn Sie echte Funktionstests tun wollen auf Rest-API, dann kann ich Fitnesse mit dieser Leuchte empfehlen: https://github.com/smartrics/RestFixture

Selen ist nur eine schlechte Wahl für diese Art der Sache .

Wie für die Leistungsprüfung können Sie Rest API-Tests in Jmeter in wenigen Minuten knock, ohne eine dritte Partei zu zahlen.

+0

Ich denke, deine Antwort könnte von Nutzen sein, wenn du kurz erklärst, warum Selen für dieses Szenario eine schlechte Wahl ist. Ich bin auch neugierig, weil ich darüber nachdenke, es zu versuchen! Vielen Dank – GrahamMc

Verwandte Themen