Mon organisation travaille à la création de services Web RESTful sur le serveur d'applications JBoss. L'équipe d'assurance de la qualité est habituée à tester jusqu'à présent les services Web SOAP à l'aide de SoapUI. SoapUI a une nouvelle version qui a REST des capacités. Nous envisageons d'utiliser cela.
soapUI fera le travail également, consultez cet article de blog pour commencer.
S'il vous plaît essayer l'addon Firefox Poster, qui est simple à utiliser et vous permet de démarrer rapidement
Vous pouvez exercer des services Web en utilisant des morceaux de Python assez triviaux. Selon votre sécurité, vous pourrez peut-être simplement utiliser les variables urllib
ou urllib2
de Python pour effectuer vos demandes REST et examiner vos réponses.
De plus, vous pouvez utiliser Python unittest
pour contrôler l'exécution des tests Python de vos services 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'])
La classe RESTClient utilise urllib2 pour transmettre l’authentification Digest pour chaque demande. C'est assez complexe, mais je peux partager l'essentiel si c'est intéressant.
Départ Fiddler
Pour tester un service REST, vous pouvez essayer REST Assured , ce qui simplifie considérablement le test des services REST et la validation de la réponse en Java (à l'aide de JUnit ou TestNG).
CURL vous amène à mi-chemin. L'autre moitié vérifie les en-têtes, les codes de réponse et le contenu de l'entité pour s'assurer de sa qualité. Vous pouvez utiliser divers outils à cet effet (dans Shell scripting land, rediriger l'en-tête et le contenu vers des fichiers et les différencier pourrait faire l'affaire). Il ne serait pas si difficile d’affiner le jeu d’outils, en empilant peut-être avec le framework de tests unitaires de votre choix.
J'ai construit un panneau de test de services Web de repos avec AJAX. Ce n'était pas si difficile du tout en fait. Vous avez des problèmes de sécurité à résoudre (c’est-à-dire s’assurer que vous avez la suite de tests sur le même serveur, ou peut-être un code Javascript signé).
Découvrez Postman - https://chrome.google.com/webstore/detail/fdmmgilgnpjigdojojpjoooidkmcomcm/ . C’est un outil sur lequel j’ai travaillé au cours des derniers mois et dernièrement, grâce au retour d’information que je reçois, il devient très utile pour les grands projets REST tout en aidant aux tests de base des paramètres REST.
Le code correspondant est également disponible sur Github. https://github.com/a85/POSTMan-Chrome-Extension
Le moyen le plus simple de tester le service Web REST consiste à utiliser curl
dans un terminal.
J'ai utilisé certains codes pour tester mon service Web de Rails . Vous pouvez les modifier pour les adapter à vos services.
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 (avec tous les champs):
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 (avec le champ seulement être édité):
curl -H "X-Http-Method-Override: put" -H "Content-Type:application/json" -d '{"courseYr":999999999}' http://localhost:3000/courses/3.json
SUPPRIMER dans les rails avec identifiant fourni
curl -H "X-Http-Method-Override: delete" -H "Content-Type:application/json" -d '{"id":4}' http://localhost:3000/courses/5.json
Je ne l'ai pas encore testée, mais cette application Java semble être agréable pour tester les services REST. Il existe également un tutoriel sur Javalobby à ce sujet.
Application Java: http://code.google.com/p/rest-client/
Tuto: http://Java.dzone.com/announcements/wiztoolsorg-restclient-21-rele
vous pouvez également utiliser le simple REST client, une extension de Google Chrome également https://chrome.google.com/webstore/detail/fhjcajmcbmldlhcimfajhfbgofnpcjmb } _
SOA Cleaner est un outil de test qui teste à la fois le savon et le repos (également WCF, mais il semble que vous n’ayez pas besoin de cette fonctionnalité). C'est très intuitif et utilisable. Écrit en .NET. Une version gratuite est également disponible. peut être téléchargé à partir de http://xyrow.com . Bonne chance!
J'utilise l'extension de la console REST pour Google Chrome et c'est de loin le meilleur que j'ai essayé . Il prend également en charge divers mécanismes de sécurité, tels que OAuth.
(mise à jour 2: lien de réparation)
Pour Java, il existe aussi RESTFuse , ce qui permet de développer des tests unitaires qui peuvent ressembler à ceci:
@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);
}
Ce test est exécuté sur http://localhost:8080/rest/status
et s’authentifie en tant qu’utilisateur joe avec le mot de passe doe. Le corps de la méthode vérifie ensuite que l'appel GET renvoie un code d'état 200.
Je teste des services RESTful avec un framework .NET interne (aucun problème pour le porter en Java). Principes de base:
Si vous voulez plus d'informations, je suis heureux de parler.
Je sais que la question est très ancienne, mais pourrait être utile aux autres. Juste pour répondre à votre première question, vous pouvez vérifier ici pour obtenir des services Web REST à tester.
Les plugs Fiddler et Poster de Firefox peuvent être utilisés pour tester n’importe quel service Web REST. SoapUI est également fourni avec le support des services Web RESTful.
J'enquête actuellement sur l'application CLI de wsclient à cette fin ( http://wso2.org/library/3362 ). Il est assez prometteur et peut être utilisé pour pirater un test rapide d’une bash Shell. Bien sûr, comme beaucoup d’entre eux l’ont mentionné ici, de nombreux outils fournis avec un système * nix s’acquitteront de la tâche avec un minimum de codage/script.
J'ai écrit un programme spécialement pour tester les services Web REST. C'est une application assez simple écrite en .NET 2.0 (je ne l'ai testée que sous Windows Vista, mais devrait également fonctionner sur XP). L'application utilise HttpWebRequest pour effectuer des demandes et affiche la réponse obtenue, ainsi que les en-têtes de la demande et de la réponse. J'ai fait quelques tests, mais je pensais que cela pourrait vous aider à tester vos services Web.
J'utilise JMeter pour cela, notamment pour les tests de charge. Cela ressemble à SoapUI (que j'ai également utilisé), mais il est plus orienté vers le test des pages Web, ce qui le rend assez décent pour le test des services RESTful également.
Essayez la httplib de Python. C'est très simple, vous spécifiez la méthode, l'URL et utilisez urllib.urlencode pour les paramètres/le corps du POST.
Ceci peut être combiné avec le module unittest intégré si vous le souhaitez, pour signaler les erreurs.
Si vous aimez utiliser Ruby, il existe un gem REST-Client for it
Pour les testeurs, je trouve que Ruby est un langage très facile à apprendre et qu'il dispose d'excellents outils comme Cucumber pour effectuer des tests d'acceptation de style BDD.
Il est facile de tester REST des services Web complets.] Des ajouts gratuits sont disponibles dans les navigateurs en tant que client REST à partir duquel vous devez envoyer un service Web avec le type de méthode attendu/requis : GET/POST/PUT/DELETE Si les paramètres correspondent, la sortie est générée dans le corps du navigateur.
J'ai essayé de nombreux REST clients et le meilleur que j'ai utilisé est l'application Chrome: DHC .
DHC (aka Dev HTTP Client) est conçu et développé par un développeur pour les développeurs afin de faciliter la découverte, la manipulation et le test des ressources HTTP directes. Outre la fonction principale, envoi/réception de requêtes/réponses HTTP personnalisées, il permet de sauvegarder en permanence une requête dans un référentiel local pour une utilisation ultérieure. De plus, la déclaration de requête peut inclure des variables spécifiques au contexte. Avec l'utilisation de contextes, vous pouvez facilement basculer entre différents environnements sans modifier la déclaration de demande. (par exemple, d'un environnement de test à la production)
Pour les tests REST avancés, vous pouvez essayer HttpMaster .
Il prend en charge les paramètres dynamiques, les visualiseurs conviviaux pour XML/JSON et divers types de validations de données de réponse pouvant être combinés en expressions logiques.
Pour les requêtes http de base, un plugin de navigateur suffit.