Test du service Web

Avec le service Web créé et fonctionne, vous pouvez aller de l'avant et commencer à coder le client. Mais ce serait l'approche erronée. Une des choses qui a changé avec les services Web et SOA est que le client et le serveur communiquent grâce à un contrat. Auparavant, les applications client / serveur de communiquer en utilisant un protocole que les développeurs ont décidé. Si les développeurs avaient besoin d'un procédé nouveau ou élément d'information, cette modification ne serait effectuée. Ce n'était pas un gros problème pour faire des changements à la volée. Avec les services Web et SOA, qui n'est plus le cas. Avec l'avènement des services Web et SOA, nous avons la capacité de définir un contrat qui peut être réutilisé et partagé par d'autres parties. S'il est un avantage important de la SOA, c'est sa capacité à partager les données de façon transparente.

  

Mettons-le dans un autre contexte. Imaginez que vous êtes propriétaire d'une pizzeria, avec des mets à emporter les commandes, les commandes en ligne, et attendre le personnel à prendre les commandes des clients sur place. Ainsi, les clients peuvent commander une pizza dans quelques façons différentes, et chaque voie est sans doute un système complètement différent de la commande. En fait, il est douteux que vous avez même pas besoin d'attendre le personnel à prendre une ordonnance de la première place. En cette journée et l'âge, vous pourriez mettre un écran tactile sur chaque table et laisser les clients commandent leur pizza directement. Alors que l'ordre est respecté, quelqu'un qu'elle apporte à la table. Ou comment les clients permettant ainsi à près de commander une pizza en ligne, puis indiquer qu'ils souhaitent pour le manger dans le restaurant à un certain moment? Le système pourrait réserver une table pour les clients, ce qui rend possible pour eux de prendre place à leur table réservée quand ils entrent dans le restaurant et leur repas est servi immédiatement. Mais ne serait que ruine de l'expérience d'aller au restaurant? À mon avis, il ne va pas au restaurant peut être une expérience très intense. Cet exemple illustre la pizzeria architectures client / serveur de jours passés, avec le personnel d'attendre la prise des commandes des clients. SOA, d'autre part, représente une pizza uniforme système de commande indépendamment du périphérique d'entrée utilisé (en personne, en ligne, par téléphone cellulaire, etc.) Après tout, est une pizza commandé auprès du personnel attendre différente d'une pizza commandé en ligne? La réponse est non.

Avoir votre service Web utilisé dans des contextes multiples constitue un défi en ce que le contrat doit être testés en profondeur. Si vous n'avez pas pu tester longuement le service Web, vous pourriez causer des problèmes. Par exemple, imaginez que vous avez créé un blog feed service Web qui avait un bug mineur. Fin développeurs qui utilisent votre flux rencontre le bug et voir que c'est mineur. Pour enregistrer tracas, ils font un peu de solution de contournement rapide. Solutions de contournement sont dangereux car ils supposent des choses qui se passera une certaine façon. Vous donnez à votre flux à d'autres tiers qui ne rencontrent pas les bugs mineurs, pour une raison ou une autre. Comme le temps passe, le client reçoit le flux, et ils rencontrent le bogue. Contrairement à tout le monde, ils envoient un email à propos du bogue et lui demander d'être corrigés. Alors, que faites-vous lorsque vous recevez la notification de bug? Avez-vous corriger le bogue ou pas? La réponse devrait être que vous corriger le bogue, mais la réalité est que si le bogue est mineur, la correction du bug de travail pourraient faire en sorte de code pour arrêter de travailler. C'est pourquoi le service AWeb essais est si critique: en testant, vous réduisez les chances de de futurs problèmes. Le test des services Web doit être exhaustive et approfondie, elle n'est pas entreprise amador. Dans le cas de l'application de blog, un service de tests en ligne peuvent vous rendre la vie plus facile.

Le validateur de flux permet de s'assurer que les flux Atom est correcte, mais le validateur de flux ne valide pas si le contenu de l'aliment sont corrects. C'est un autre niveau de tests et de validation qui serait nécessaire. Le validateur de flux, il est possible de découpler le client du serveur. Ayant le client et serveur découplés rend plus simple d'introduire des changements dans l'architecture d'ensemble parce que vous pouvez faire les changements progressivement. Pour en revenir à l'architecture originale de l'architecture du blog, imaginer changer la structure des entrées de la façon dont blog sont affichés. Parce que le client et le code du serveur sont étroitement liés, le développeur pourrait être tenté de modifier le code serveur. Toutefois, le serveur génère trois formats différents, et on peut se demander si les réglages devront être ajoutés aux deux autres formats. Utilisation d'un flux unique qui est validé, les programmeurs n'ont pas le choix du client mais à peaufiner leur propre code. Programmeurs Client ne peut pas toucher au code du serveur et ne peuvent donc pas introduire des bogues inattendus. J'ai mentionné que le test d'une interface requiert un ensemble exhaustive et approfondie des tests du validateur de flux prévoit exactement cela. Mais pas tous les services Web entrent dans la catégorie d'une demande de blog, et vous devez implémenter votre propre infrastructure de test. Idéalement, vous souhaitez une architecture comme un validateur de flux, parce qu'il fait l'essai d'un jeu d'enfant. Mais un validateur de flux est une grosse application, et vous n'avez probablement pas assez de temps pour écrire un tel morceau de code compliqué.

L'expérience m'a enseigné que le moyen le plus facile d'écrire des tests rapidement et proprement est d'utiliser un langage de programmation qui a un support pour piloté par les tests techniques de développement (par exemple, NUnit ou JUnit). Vous pouvez également utiliser un langage dynamique comme Python ou Ruby. Quelque chose l'expérience m'a appris est de ne pas réinventer la roue. Si un protocole, de la grammaire XML, ou l'application existe déjà, puis l'utiliser. N'essayez pas de trouver des nouvelles façons de faire la même vieille chose que vous ne feront que compliquer votre vie. Il serait peut-être un peu plus complexe initialement adhérer à la norme, mais à la longue, vous aurez moins d'inquiétudes. Par exemple, en collant au flux Atom dans l'architecture du blog, vous pouvez utiliser un outil grand public pour tester l'application. Il ne nécessite pas d'écrire tout le code de test, vous avez juste à écrire un peu de scripts de test pour appeler le Feed Validator site Web.

Mise en œuvre du clientImplémentation d'un client dans un contexte Ajax comporte toujours deux étapes: le chargement du document et l'exécution du document. Dans le cas de l'application de blog, il n'est pas nécessaire pour le client d'intervenir, si le document doit être exécutée une fois qu'il a été chargé. En JavaScript, l'événement body.onload est déclenché dès que le document a été complètement chargé. Il est très important que vous utilisez l'événement body.onload et pas un script qui est exécuté alors que le document est chargé. Même si le document est chargé, il est considéré comme incomplet, autant d'éléments HTML de référencement sur le document pourrait être réussi, mais il n'est pas certain. Lorsque vous utilisez l'événement body.onload, vous pouvez être sûr que le document a été complètement chargé et chaque élément qui a besoin de référencement est disponible.

Lorsque l'événement body.onload est déclenché et le contenu est chargé, le contenu peut être traitée et injectée dans le document HTML. Pour l'utilisateur, ce processus en deux étapes semble être un chargement d'une page unique plutôt qu'à une procédure en deux étapes (si les deux le client et le serveur ont assez de bande passante). Si les deux à chargement par étape ne s'exécute pas assez rapide, vous remarquerez un léger scintillement, indiquant que certains contenus ont été chargés et organisés. Le résultat final est le même, et le client est présenté avec un document unique qui se présente comme une seule application. En un mot, ce processus n'est pas différent de la construction d'un traditionnel client / serveur ou n-tier applications, à l'exception des normes ouvertes et un environnement dynamique des langages de programmation sont utilisés. Avec le client globale architecture côté couverts, nous allons creuser un peu plus en profondeur dans chacune des étapes.

Chargement du documentComme mentionné précédemment, la première étape est le chargement du document. Si l'on compare le chargement du document avec le chargement d'une application traditionnelle, ce qui se passe, c'est que le navigateur est comme un système d'exploitation de la préparation du mémoire, les modules, et la fondation pour le programme à exécuter. Ainsi, par exemple, si nous sommes le chargement du document, le code suivant crée une instance de l'objet XMLHttpRequest:

getTransport: function () (return Try.these (function () (return new ActiveXObject ( 'Msxml2.XMLHTTP')), function () (return new ActiveXObject ( 'Microsoft.XMLHTTP')), function () (return new XMLHttpRequest ())) | | false;),

La source du code n'est pas important parce que de nombreuses bibliothèques Ajax faire la même chose. Essentiellement, lorsque le code est exécuté, il tente de déterminer quel navigateur vous traitant de sorte qu'il peut retourner à l'exécution, la façon correcte d'instancier l'objet XMLHttpRequest. Je soutiens ce n'est pas la bonne approche, et il utilise le chargement exécutable traditionnels et le fonctionnement de mentalité. Quand un système d'exploitation charge un programme traditionnel, les variables, les modules, et ainsi de suite sont initialisés avant l'exécution du programme. Bien qu'un code source navigateur charge, le navigateur a la capacité d'exécuter du code JavaScript. C'est dans cet esprit, vous pouvez écrire le code suivant:

if (window.ActiveXObject) (FactoryXMLHttpRequest = function () (return new ActiveXObject ( "Microsoft.XMLHTTP");)) else if (window.XMLHttpRequest) (FactoryXMLHttpRequest = function () (return new XMLHttpRequest ();))

Dans l'exemple, il n'existe aucune fonction, juste une décision. La décision est si le navigateur de charger le document sur Internet avec Internet Explorer, puis définir la fonction FactoryXMLHttpRequest d'instancier ActiveXObject. Si le navigateur n'est pas Internet Explorer, puis définir la fonction FactoryXMLHttpRequest pour instancier l'objet XMLHttpRequest directement. Le second exemple de code source d'initialisation n'est pas aussi souple au cours de l'exécution parce que la fonction définie par FactoryXMLHttpRequest ne peut instancier l'objet XMLHttpRequest telle qu'elle était définie lorsque le document a été chargé. Même si cela semble être un inconvénient, vous devez vous demander quelles sont les chances sont que le document chargé sera déplacé octet par octet à un autre type de navigateur. La réponse est qu'il n'y a aucune chance cela se produira, car il n'est pas possible.

L'avantage du second exemple de code source est que les fonctionnalités peuvent être réglés sur le navigateur l'exécute sur tout le document est chargé. Dans l'exemple, l'accordage était basé sur le navigateur. Il existe d'autres façons de tune et les raisons de tuning de votre application, telle que figurant sur la langue ou les dimensions du navigateur. Tuning a l'avantage que vous n'avez pas besoin de transporter les bagages exécutable qui est associé aux décisions prises à l'exécution. Ceci est un facteur important de se rappeler, comme vous pouvez réduire l'empreinte d'exécution de votre code en Préconfiguration la demande pendant le chargement des documents. Mais il ya un gros désavantage d'utiliser un chargement du document de configuration généré avoir à faire avec la sérialisation. Les articles précédents a montré comment utiliser la sérialisation JavaScript pour générer des procurations ou mixins. Si un document-chargé de configuration est sérialisé et stockées sur un serveur HTTP, puis il est chargé à un point plus tard dans le temps en utilisant un autre navigateur, une erreur sera générée.

La règle de base est que quand il ya un avantage en termes de performances ou de ressources, d'utiliser le document-chargé de configuration. Utiliser l'approche de l'exécution générale, qui comprend une décision d'exécution de décisions, s'il ya une petite chance que le code sera sérialisé. Et pour les situations où il n'a pas d'importance dans un sens ou l'autre utilisation, qu'ils aient un sens pour vous.

Signe le documentUne fois le document a été chargé, l'événement body.onload est déclenchée et le code associé est exécuté. En termes HTML, le code se présente comme suit. Notez que le code a été écourtée pour la clarté.

 Source: / client / index.html LoadAtomFeed fonction () ( var asynchrone = Asynchronous new (); asynchronous.settings = ( onComplete: function (xmlhttp) ( parseAtom (xmlhttp.responseXML); flexbox.update (); ) ) ( "asynchronous.get / services / blog / entries / current"); )InitializePage fonction () (/ / code d'initialisation supplémentaires relatives à découper LoadAtomFeed ();) onload= "InitializePage ()"> 

Welcome To BloggerJacks

Prenons le code gras. Lorsque le document est chargé, l'événement body.onload est déclenché. Qui appelle la fonction InitializePage, qui appelle à son tour la fonction LoadAtomFeed. Dans la mise en œuvre de LoadAtomFeed, la classe asynchrone est instancié, ce qui instancie l'objet XMLHttpRequest.

un article présenté par Sonja Lande


Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite.
Important: Cet article "Test du service Web" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.


Online: 464 users browsing the articles directory