3 votes

Faire d'un service Web fiable un service non fiable, mais de manière contrôlée ?

J'ai un client de service web basé sur Java 6 utilisant l'approche basée sur les annotations Java 6 standard (c'est-à-dire sans Axis ni autre bibliothèque de service web tierce) qui fonctionne très bien. Le service web que j'appelle fonctionne également très bien, ce qui est agréable, mais maintenant j'ai besoin d'écrire du code de gestion des erreurs, et je dois être capable de rendre le service web existant peu fiable de manière contrôlée.

Il existe de nombreux frameworks de simulation, et ils peuvent être utiles, mais je n'ai pas besoin actuellement de pouvoir simuler le service avec des réponses préréglées ou autre chose, juste d'introduire une instabilité provoquant une défaillance de la bibliothèque de service web afin que je puisse gérer la situation de manière élégante. Il s'agirait probablement d'un serveur mandataire fonctionnant en local.

Je travaille avec Eclipse Java EE 3.6, mais Netbeans, IntelliJ et JDeveloper sont également des options.

Quelle serait la meilleure façon de faire cela?

4voto

Kennet Points 3139

Tcpmon, http://ws.apache.org/commons/tcpmon/index.html peut être configuré pour agir en tant que proxy et même simuler des connexions lentes. Cela vous donnerait la possibilité de simuler à la fois "désolé, ce n'est pas là" et "oui, nous sommes ici mais nous expirons".

0voto

Lazarus Points 17526

Toute instabilité introduite est susceptible de conduire à ce que des voies d'instabilité opérationnelles soient manquées. Essayez de couvrir tous les vecteurs d'erreurs potentiels dans votre code plutôt que d'essayer de les atténuer pour des cas spécifiques.

0voto

Marcin Cylke Points 1068

Étant donné que vous n'avez pas divulgué suffisamment de détails sur votre configuration, peut-être qu'en jetant des exceptions ici et là suffirait ?

Sérieusement, pour des tests d'intégration comme celui-ci, je suggérerais d'exécuter un sous-ensemble d'un vrai conteneur de service web.

En fonction de la logique du service, il peut se comporter de manière peu fiable en raison de :

  • le système externe qu'il utilise fonctionne mal - essayez de simuler le système externe et de générer des erreurs - différents types - à partir de celui-ci
  • problème d'accès à la base de données - essayez de simuler la couche DAO et de générer une exception à partir de là
  • problème matériel général - cela dépend :) essayez de tester votre code comme bon vous semble

0voto

matt b Points 73770

Je pense qu'au lieu d'introduire de l'instabilité à une instance en cours d'exécution de l'application de service Web, il vaut mieux simuler des conditions d'erreur dans vos tests unitaires/intégration et vérifier que la couche supérieure du service répond de la manière dont vous le souhaitez.

Par exemple:

  1. Comment le point d'entrée du service répond-il à une demande si la couche de données signale qu'elle ne peut pas communiquer avec l'arrière-plan (si la couche de données lance des exceptions, ou indique de toute autre manière un échec)
  2. Comment le point d'entrée du service se comporte-t-il si d'autres composants requis lancent des exceptions du type "non disponible"?
  3. Avez-vous une logique de temporisation en place, c'est-à-dire que le service renvoie une erreur s'il met plus de X secondes pour traiter la demande? Si tel est le cas, cela peut également être simulé dans un test factice.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X