JSON API testen

Pagina: 1
Acties:

Vraag


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Wat is *de* manier om een JSON API te testen (als in TDD)? Ik heb een Swagger spec, het zou handig zijn als op basis daarvan automatisch requests kunnen worden gegenereerd. De responses kunnen dan worden opgeslagen zodat veranderingen eenvoudig opgemerkt kunnen worden.
Welke (Python / PHP) pakketten kunnen hierbij helpen?

Het enige echt relevant wat ik vind is https://apigee.com/about/...-templates-test-your-apis maar daar is dan verder weinig over te vinden.

Alle reacties


  • styx1
  • Registratie: November 2003
  • Niet online

styx1

prutser

Je kan SoapUI Pro gebruiken. Het is een java applicatie, dus geen python / php..
Met SoapUI kan je REST requests via swagger-ui opnemen.

Debian -- The Universal Operating System OF "Ubuntu: Linux for human beings"


Acties:
  • +1 Henk 'm!

  • mbenjamins
  • Registratie: December 2012
  • Nu online
Zelf vindt ik Postman (https://www.getpostman.com/) wel fijn.

Acties:
  • +2 Henk 'm!

  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 29-09 15:25
@mbenjamins: Postman is fijn, maar niet voor Test driven development waar de TS het over heeft :)

Wij gebruiken hier Frisby, geen Python/PHP maar node.js werkt ook op alle systemen.

Full-stack webdeveloper in Groningen


Acties:
  • 0 Henk 'm!

  • Mercatres
  • Registratie: September 2009
  • Laatst online: 09-10 10:43
Wij hebben in onze buildserver een tooltje dat a.d.h.v. een swagger-spec een diff draait en zegt als de spec is aangepast. Om er voor te zorgen dat onze APIs backwards compatible blijven. Ik denk dat het dit tooltje is: https://www.npmjs.com/package/swagger-diff

Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Spinal schreef op donderdag 15 december 2016 @ 16:41:
@mbenjamins: Postman is fijn, maar niet voor Test driven development waar de TS het over heeft :)

Wij gebruiken hier Frisby, geen Python/PHP maar node.js werkt ook op alle systemen.
Dan ben je nog steeds handmatig de responses en de requests aan het schrijven toch?

Acties:
  • 0 Henk 'm!

  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 29-09 15:25
Dat klopt inderdaad. Sorry, ik was niet bekend met Swagger.

Full-stack webdeveloper in Groningen


Acties:
  • 0 Henk 'm!

  • Barryke
  • Registratie: Augustus 2003
  • Laatst online: 08-10 11:51

Barryke

blauw

Ik heb vrijwel dezelfde vraag - gericht op PHP of Node.js.
Een optie die ik t.z.t. wil bekijken is https://github.com/dareid/chakram

Mijn idee hierbij is dat we Docker container(s) aanzwengelen waaronder de API server, tests runnen, en alles weer opruimen. Dat zou dan kunnen automatisch als onderdeel van GitLab CI , handmatig via console, of automagisch door IDE.

Ik volg deze thread even.. :)

Error 304: Please hit any user to continue.


Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Postman kan je niet automatisch dingen in laten genereren geloof ik, maar die heeft wel mogelijkheden voor TDD. Bovendien slaan ze geloof ik ook alles op in XML of JSON (weet even niet meer welke). Ik heb geen ervaring met swagger, maar misschien zou je wel een tool kunnen schrijven die je API methods uit swagger opvraagt en dan een bestand genereert om in Postman te importeren?

Hoe je dat met een bestaand TDD systeem integreert weet ik dan helaas ook niet :/

Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Ben ik de enige die aan JSON APIs werkt of doet de rest ook niet aan testing? ;)

Even een subtiele kick.

[ Voor 10% gewijzigd door Olaf van der Spek op 31-03-2017 13:17 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:22

Creepy

Tactical Espionage Splatterer

We doen hier zeker wel aan testing :P Alleen niet met Python/PHP.

We gebruiken Java m.b.v. Jersey/Dropwizard om onze API's mee te maken. Met unit tests testen we de direct door Jersey gebruikte Java methodes. Daarnaast maken we gebruik van Rest Assured en Jersey samen in een los project dat via de CI server elke nacht tests draait om zo de API calls te testen. Mocht er een test falen dan weten we dat gelijk. De tests schrijven we met de hand waarmee we via Rest Assured testen of de boel inhoudelijk klopt, en we de responses ook nog via Jersey omzetten naar een Java object om zo er zeker van te zijn dat er geen wijzigingen zijn in de teruggegeven objecten. Het nadeel is dan wel is dat we eigenlijk steeds een 1 op 1 kopie hebben van de API model class die de API projecten gebruiken voor de JSON serialisatie en het test project gebruikt voor de de-serialisatie. Je wil niet dat dit dezelfde classes zijn, want anders pik je een wijziging van een model niet zomaar op.

[ Voor 38% gewijzigd door Creepy op 31-03-2017 15:11 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • dakathefox
  • Registratie: Januari 2012
  • Laatst online: 21:45
Ik sluit me aan bij mbenjamins. www.getpostman.com is inderdaad fijn. Ik ken menig PHP programmeur die daarmee werkt. Zelf werk ik er niet mee: ik ben nog lekker traditioneel alles met de hand aan het uitpluizen.

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
mind123 schreef op maandag 3 april 2017 @ 17:28:
Ik sluit me aan bij mbenjamins. www.getpostman.com is inderdaad fijn. Ik ken menig PHP programmeur die daarmee werkt. Zelf werk ik er niet mee: ik ben nog lekker traditioneel alles met de hand aan het uitpluizen.
Dat is geen TDD.

Wij testen onze API's niet, wij unit testen de controllers en mocken de uitgaande calls. Dat lijkt mij toch voldoende?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:22

Creepy

Tactical Espionage Splatterer

Hoe garandeer je dan dat een model (aka je output) niet verandert? Een lullige property naam veranderen (ja, het gebeurt ;) ) kan je API al slopen.

En inderdaad, met postman ben je niet effectief aan het testen. Je kan hoogstens met op het oog controleren of de response lijkt te kloppen, maar that's it.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Creepy schreef op maandag 3 april 2017 @ 19:35:
Hoe garandeer je dan dat een model (aka je output) niet verandert? Een lullige property naam veranderen (ja, het gebeurt ;) ) kan je API al slopen.
Dat doe je met bv Moq in C#. Je checkt of je output model wat genereerd is met bv Swagger overeenkomt met je daadwerkelijke output.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:22

Creepy

Tactical Espionage Splatterer

Als je je model class aanpast, verandert de Swagger doc ook. Dus dan kan je toch niet meer geranderen dat je output hetzelfde is als dat het daarvoor was?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • kutagh
  • Registratie: Augustus 2009
  • Laatst online: 23:20
Creepy schreef op maandag 3 april 2017 @ 19:35:
[...]
En inderdaad, met postman ben je niet effectief aan het testen. Je kan hoogstens met op het oog controleren of de response lijkt te kloppen, maar that's it.
Hoezo met op het oog? https://www.getpostman.com/docs/writing_tests

Acties:
  • 0 Henk 'm!

  • Stukfruit
  • Registratie: Oktober 2007
  • Niet online
Wat kutagh zegt :) En als toevoeging daarop: je kan je Postman collections met tests ook op de commandline draaien mbv Newman.

[ Voor 9% gewijzigd door Stukfruit op 04-04-2017 06:12 ]

Dat zit wel Schnorr.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Creepy schreef op maandag 3 april 2017 @ 20:07:
Als je je model class aanpast, verandert de Swagger doc ook.
Da's afhankelijk van hoe je je controller tests opzet. In onze controller tests testen we daadwerkelijk de responses. Dus we roepen niet gewoon de methode aan.

Zelfde methode gebruiken we in onze integration tests. Dus als je een response verandert vallen er in ieder geval 2 tests om.

https://niels.nu

Pagina: 1