|
|
DIDACTICIEL VERSION 1.08.6 |
| SOMMAIRE | CHAPITRE 5 - ECRITURE D'UNE PROCEDURE |
|
Création d'une Procédure Générale Gestion de Composants d'IHM Complexes Avant de démarrer votre propre Application
|
5.1 Démarrage avec une Nouvelle Suite 5.3 Ajout d'un NSud de Contrôle 5.6 Réalisation de la Logique de Sélection 5.7 Amélioration de la Procédure
Dans les chapitres 5 et 6, nous commençons à explorer des concepts plus avancés de qftestJUI, et cela en utilisant une approche pratique afin de vous donner une vue d'ensemble. Nous introduirons, entre autres, le concept important et utile des procédures au sein de qftestJUI. D'autres concepts, qui s'avèreront utiles pour développer vos suites de test, seront également présentés. Pour commencer, nous allons créer une procédure simple qui sélectionnera une case à cocher (checkbox) au sein du client SUT. 5.1 Démarrage avec une Nouvelle Suite A ce stade du didacticiel, vous êtes prêt(e) à créer votre propre suite de test en étapes successives. Depuis le menu de qftestJUI, sélectionnez le menu File -> New Suite. Conseil : Comme vous l'avez remarqué dans ce didacticiel, des raccourcis clavier sont disponibles pour la plupart des options du menu. Les raccourcis clavier sont des façons rapides de réaliser des actions utiles avec un simple tapotement du clavier. L'option File -> New Suite, par exemple, peut également être accessible par le raccourci clavier Ctrl+N. Les raccourcis clavier sont indiqués à côté des options des menus dans qftestJUI, mais beaucoup d'autres raccourcis sont disponibles, même s'ils ne sont pas immédiatement évidents dans l'IHM. La liste complète est accessible dans la section Raccourcis Clavier du Manuel Utilisateur. Vous pouvez également trouver un petit assistant à attacher à votre clavier qui montre le rôle des touches clavier de qftestJUI. Une suite de test a naturellement besoin d'un client SUT pour être testée avec. L'application Option Demo, avec laquelle vous vous êtes familiarisé(e) dans les chapitres précédents de ce didacticiel, est une application très simple qui est idéalement adaptée à nos besoins comme au SUT. La prochaine étape consiste à établir cette application en tant que client SUT pour notre nouvelle suite de test. Pour cela, vous devez créer un nSud Setup qui lancera l'application et établira le lien entre l'application et qftestJUI. Pour cette étape, vous pouvez simplement copier la logique depuis Options.qft et l'utiliser dans notre nouvelle suite de test. Pour cela, ouvrez Options.qft (si vous n'êtes pas familiarisé(e) avec cette suite de test alors référez-vous au chapitre 2) et ouvrez le nSud Test: Options. Le premier nSud visible sera le nSud Retournez à votre nouvelle suite de test. Il vous faut ouvrir le nSud Test pour qu'une insertion soit possible, et alors vous pouvez coller le nSud copié avec Edit -> Paste. Un nSud Cleanup est habituellement associé à un nSud Setup et il est utilisé pour rétablir les étapes réalisées avec le Setup. Dans ce cas, nous voulons que le nSud Cleanup arrête l'application SUT. A partir de la suite Options.qft, copiez le nSud Vous devez suivre une dernière étape pour que cette section soit compète : copiez les composants et les fenêtres (Windows and components) depuis Options.qft dans votre nouvelle suite. La raison de cette étape peut ne pas vous sembler évidente à ce niveau, mais nous y reviendrons plus en détail ultérieurement. Les descriptions de composants stockées sous la section Windows and components d'une suite de test permettent à qftestJUI de reconnaître des éléments, tels que des menus et des boutons dans le SUT. Ouvrez le nSud Windows and components de Options.qft, sélectionnez les nSuds que vous voyez, et ensuite utilisez les fonctions Copier et Coller pour les copier dans le même nSud de votre nouvelle suite de test. Si vous vous y perdez, vous pouvez vous référer à la figure :
Figure 5.1 - Squelette pour la Nouvelle Suite de Test A ce stade, vous avez créé un squelette fonctionnel pour votre nouvelle suite de test que nous remplirons ultérieurement avec différentes procédures et tests. Dès maintenant vous pouvez exécuter le SUT en sélectionnant le nSud Setup et en cliquant sur le bouton de rejeu
Figure 5.2 - Case à cocher avec les Options Miscellaneous du SUT Il s'agit de la case à cocher que vous allez manipuler avec votre nouvelle procédure dans les sections qui suivent. Une procédure est une séquence d'instructions constituant un sous-programme. Une procédure est typiquement définie comme une méthode utilisée pour accomplir quelque chose, comme par exemple ouvrir une fenêtre. Dans cette partie du didacticiel, vous allez donc créer une procédure qui sélectionne une case à cocher dans le SUT. En premier, ouvrez le nSud Conseil : qftestJUI vous donne de bons repères visuels comme un nSud qui est ouvert ou fermé. Par exemple, l'icône Procedures change d'aspect de Maintenant cliquez sur le nSud Procedures qui est sélectionné, et sélectionnez le menu Insert -> Procedure nodes -> Procedure. Une nouvelle fenêtre de dialogue apparaît alors, vous permettant d'entrer la description de la nouvelle procédure. Nommez-la selectCheckbox et appuyez sur le bouton OK. Voici à quoi la suite de test doit ressembler après l'ajout de votre première procédure :
Figure 5.3 - Ajout d'une Procédure Conseil : Les propriétés d'un nSud dans qftestJUI (comme le nom de la procédure) peuvent être changées tout simplement en cliquant sur le nSud et en éditant ses propriétés dans la fenêtre de Détails, ou par un clic droit sur le nSud et en sélectionnant Edit. Dans tous les cas, il vous faudra appuyer sur le bouton OK pour confirmer les modifications effectuées. 5.3 Ajout d'un NSud de Contrôle Nous sommes désormais prêts à ajouter de la substance réelle à la procédure. Mais en premier lieu pensez à la manière dont vous allez paramétrer la case à cocher. Une des premières étapes consiste à vérifier l'état de la case à cocher avant de procéder à son paramétrage. Si elle est déjà cochée, alors il n'y a rien à faire si c'est de ne la laisser telle qu'elle. Autrement, si elle n'est pas cochée, nous devons la paramétrer. De tels contrôles sont faits dans qftestJUI avec les nSuds de contrôle (check-nodes), qui vous permettent d'effectuer différents types de requêtes concernant l'état d'éléments dans le SUT. Celui avec lequel nous commencerons s'appelle le nSud de contrôle Check selected state. Comme son nom l'indique, il interroge l'état d'un composant pour voir s'il est sélectionné ou non. Le chapitre précédent du didacticiel nous a permis d'acquérir une première expérience des nSuds de contrôle. Si cela n'est pas le cas, merci de vous référer à la section 3.5 du chapitre 3 dès maintenant. Pour ajouter le nSud Check selected state, vous devez maintenant réaliser des étapes similaires. Ramenez la fenêtre du SUT et sélectionnez le nSud Miscellaneous dans l'arbre Preferences comme montré en figure 5.2. Cela vous permettra d'obtenir facilement le composant correct une fois que vous aurez démarré l'enregistrement. Maintenant retournez dans votre suite de test et cliquez sur le bouton enregistrement d'un contrôle
Figure 5.4 - Enregistrement du NSud Check Selected State Choisissez l'option selected state, retournez dans votre suite de test et arrêtez l'enregistrement en appuyant sur le bouton d'arrêt qftestJUI placera la séquence enregistrée dans le nSud Extras de votre suite de test, qui sera immédiatement visible dès l'arrêt de l'enregistrement. Si vous ouvrez la séquence enregistrée, vous voyez que le nSud Check selected state est bien présent. Ce nSud doit maintenant être transféré de son emplacement actuel vers votre procédure. Vous pouvez transférer soit le nSud, soit la totalité de la séquence enregistrée. Dans la mesure où il n'y a qu'un seul nSud fils dans la séquence, la différence est purement esthétique. Utilisez la fonction Copier ou Couper puis Coller pour la placer dans votre procédure. Veillez à ouvrir le nSud de la procédure selectCheckbox avant de coller le nSud copié, autrement il ne sera pas placé au bon emplacement dans la procédure :
Figure 5.5 - NSud Check Selected State dans la Procédure Conseil : qftestJUI fournit un dispositif vous permettant d'insérer directement une séquence enregistrée à un emplacement donné, évitant ainsi d'avoir recours à la fonction Copier-Coller. Sélectionnez le menu Edit -> Options. Dans la fenêtre d'options, sélectionnez alors l'onglet Record pour afficher les options d'enregistrement. Dans cette fenêtre, sélectionnez la case à cocher Insert recording at current selection. Dès lors que cette option est sélectionnée, qftestJUI insère n'importe quelle séquence enregistrée après le nSud que vous avez sélectionné, et non pas dans le nSud Extras. Faîtes un essai ! Sélectionnez votre procédure et cliquez sur le bouton de rejeu Avant de continuer, voici quelques informations supplémentaires et utiles à connaître sur les contrôles et les composants. Un composant est un élément du SUT, comme un bouton, un menu ou une case à cocher, dans notre cas. Chaque composant doit avoir un ID unique, qui est enregistré dans la suite de test. Aussi qftestJUI peut alors trouver le composant à l'exécution de la suite de test. Si vous cliquez sur le nSud Check selected state que vous avez enregistré dans la section précédente, vous verrez ses propriétés dans la fenêtre Details sur la droite. Parmi ses propriétés il y a un champ appelé Component ID, qui doit être renseigné avec l'identité de la case à cocher identifiée en figure 5.2. Vous verrez que ce composant a pour ID de composant Checkbox-boolean2. Cet ID de composant que vous voyez est seulement un nom, un moyen pratique pour vous et pour qftestJUI de référencer le même composant. Ces ID sont enregistrés dans la section Windows and components de votre suite de test, dès lors que vous enregistrez quelque chose dans le SUT. Si vous ouvrez tous les nSuds dans cette section, comme montré ci-dessous, vous trouverez finalement le composant que nous avons enregistré pour Check selectedstate :
Figure 5.6 - Le Composant Case à cocher dans le Composant Arbre Conseil : Un moyen facile de localiser un composant est d'utiliser la fonctionnalité locate-component de qftestJUI. Affichez le menu contextuel par un clic droit sur le nSud Check selected state et sélectionnez Locate component, ou alors sélectionnez le nSud et appuyez sur les touches de votre clavier Ctrl+W. Cela vous amènera directement au nSud Component pour le contrôle. Appuyer sur Ctrl+barre d'espacement vous ramènera au nSud contrôle. Allez-y et cliquez sur le nSud pour l'ID de composant CheckBox-boolean2. Vous voyez alors comment qftestJUI identifie de façon interne les composants. La reconnaissance de composants au sein de qftestJUI est un sujet complexe, et nous n'approfondirons pas davantage ce sujet dans le présent document. Pour plus de détails sur les composants, merci de bien vouloir vous référer au Manuel Utilisateur. Mais que se passe-t-il si votre case à cocher n'est pas vérifiée ? Décochez votre case maintenant, et rejouez la procédure. Vous devez voir un message comme celui-ci quand la procédure s'achève :
Figure 5.7 - Erreur Check Selected State L'erreur s'est produite parce que votre nSud Check selected state s'attendait à ce que la case soit cochée. Cliquez à nouveau sur le nSud Check selected state pour visualiser ses propriétés dans la fenêtre de détails. Parmi les détails, vous verrez des champs marqués error level of message et une case à cocher Throw exception on failure. En utilisant ces propriétés, vous pouvez modifier la mesure que qftestJUI prendra quand un contrôle échoue. Essayez de changer ces paramètres et observez les résultats après le rejeu de la procédure. Finalement, nous voulons que ce contrôle génère une exception quand il échoue. C'est l'occasion d'introduire le mécanisme du try/catch. Paramétrez la case à cocher Throw exception on failure dans les propriétés comme ci-dessous :
Figure 5.8 - Génération d'une Exception sur un Echec Le mécanisme du Try/Catch est une technique courante utilisée par la plupart des langages de programmation pour gérer les exceptions (c'est-à-dire des conditions inattendues) quand elles se produisent. Le concept est simple : 'try' pour effectuer une certaine action ; si une exception se produit pendant l'action, alors 'catch' la capture et effectue d'autres séquences d'opérations. Si ce mécanisme ne vous est pas familier, ne vous inquiétez pas. Les choses deviendront plus claires une fois mises en Suvre. Insérez un nSud Try directement au début de votre procédure. Pour se faire, cliquez sur le nSud de la procédure (le point d'insertion est toujours après le nSud qui est sélectionné), puis sélectionnez le menu Insert -> Control structures -> Try. Un dialogue vous permettant d'entrer les propriétés du nSud s'affiche alors. Pour ce nSud, vous pouvez ne renseigner aucun des champs, cependant pour des questions de lisibilité, il est parfois utile de saisir un nom. Nous écrirons checkbox selected. Ouvrez le nSud Try, ainsi vous pouvez y insérer des nSuds. Toutes les actions prises dans le bloc Try peuvent potentiellement être capturées par un nSud Catch si une exception surgit (qui sera expliquée peu après). Ainsi, nous voulons maintenant insérer l'action que nous voulons Try - qui est notre nSud contrôle Check selected state. Ce nSud doit être dans notre procédure, mais probablement pas dans le bon emplacement. Utilisez les fonctions Couper et Coller pour insérer ce nSud immédiatement après votre nSud Try. Un nSud Try est inutile sans Catch, c'est donc l'étape suivante. Insérez un nSud Catch après votre nSud de contrôle (mais encore dans le bloc Try) avec le menu Insert -> Control structures -> Catch. Encore une fois, un dialogue apparaît pour vous permettre de renseigner les propriétés du nSud. Pour le nSud Catch, vous devez définir le type d'exception que vous voulez capturer. Le premier champ est exception class, qui contient une liste de toutes les exceptions possibles. Sélectionnez CheckFailedException.
Figure 5.9 - Sélection d'une Exception à Capturer Le mécanisme Try/Catch est destiné à être un bloc d'instructions déterministe. L'exception (ou les exceptions) devant être capturée(s) sont en rapport direct avec les actions entreprises dans le bloc Try. Dans notre cas, le bloc Try contient un nSud de contrôle à Check selected state, aussi l'exception à capturer est CheckFailedException. Bien sûr, cela n'est pas immédiatement évident pour vous lors de l'implémentation de ce mécanisme. Si vous n'êtes pas sûr(e) du type d'exception qui sera lancé et que vous avez besoin de capturer, le run-log peut s'avérer utile. Essayez de rejouer votre procédure. Ne vous inquiétez pas si les nSuds try/catch ne sont pas complets. Ce qui est important c'est que le nSud Check selected state soit encore présent et ait pour propriété Throw exception on failure. Après, ouvrez le menu Run et sélectionnez le run-log le plus récent (le plus récent est toujours en position "1"). Parcourez le run-log et ouvrez les nSuds. Vous devez alors voir l'élément contenant l'erreur générée, comme ci-dessous :
Figure 5.10 - CheckFailedException dans le Run-Log Conseil : Pour plus d'informations sur les exceptions et une liste complète des exceptions possibles, merci de vous référer au Manuel Utilisateur. A ce stade, votre procédure doit ressembler à cela :
Figure 5.11 - Procédure avec Try/Catch Conseil : Laissez qftestJUI vous aider si vous avez des questions sur un nSud donné : faîtes un clic droit sur le nSud pour lequel vous avez besoin d'aide et sélectionnez l'option "What's this?" du menu contextuel - qftestJUI vous amène alors directement à la bonne rubrique du Manuel Utilisateur. 5.6 Réalisation de la Logique de Sélection Vos nSuds try/catch sont en place, la dernière étape consiste à effectuer les actions qui seront mises en place si CheckFailedException est générée et capturée. Rappelez-vous que l'exception sera générée si le contrôle échoue, c'est-à-dire si la case à cocher n'est pas paramétrée. L'action à prendre est de paramétrer la case à cocher si l'exception est capturée. Ici nous enregistrons une autre séquence du SUT. Cliquez le bouton Maintenant retournez à votre suite de test et cliquez sur le bouton Conseil : Vous n'êtes pas obligé(e) de faire des changements dans les propriétés de ce nSud, mais y ajouter un commentaire peut quelquefois s'avérer utile. Les commentaires n'ont aucun effet sur le test, ils permettent seulement une meilleure lisibilité de la suite de test. Comme nous l'avons fait précédemment lors de l'utilisation d'un nSud enregistré, vous devez déplacer ce nSud MPRC depuis Extras dans votre procédure en utilisant les fonctions Copier/Couper et Coller. Ouvrez le nSud Catch dans votre procédure et insérez le nouveau nSud après. Votre procédure doit ressembler à ceci :
Figure 5.12 - Procédure avec un Mécanisme Try/Catch Complet Votre procédure est désormais une unité fonctionnelle complète. Cliquez sur le nSud procédure et essayez de l'exécuter plusieurs fois en utilisant le bouton de rejeu Juste une petite remarque. Une bibliothèque qui contient un ensemble de procédures utiles comme selectCheckbox fait partie de la distribution de qftestJUI (Cf. Chapitre 8). Dans un premier temps, nous allons consacrer un peu de temps à l'amélioration de notre procédure. 5.7 Amélioration de la Procédure Nous allons effectuer une dernière amélioration à notre procédure avant de clore ce chapitre du didacticiel. Le problème avec cette procédure est qu'elle fonctionne uniquement pour une case à cocher spécifique. Et si le SUT avait plus d'une case à cocher à paramétrer ? Devons-nous écrire des procédures séparées pour chaque case à cocher ? La solution consiste à utiliser des variables. Une variable peut être utilisée pour substituer l'ID du composant de la case à cocher, ainsi la procédure peut être utilisée pour n'importe quelle case à cocher du SUT. La syntaxe des variables dans qftestJUI, comme avec tout programme, est spécifique. Une variable est définie simplement avec un nom. Toutefois, lorsqu'on se réfère à une variable la syntaxe requise est : "$(name)" - ce sujet sera développé dans les sections suivantes. Remplaçons les références dans la procédure à la case à cocher spécifique par une variable maintenant. Appelons la variable "$(id)" par exemple. Remarquez qu'il y a deux références au composant case à cocher, un dans le nSud Check selected state, et l'autre dans le nSud MPRC. Pour effectuer ce remplacement, affichez les propriétés du nSud et localiser le champ ID du composant. Supprimez le texte CheckBox-boolean2 et saisissez $(id) - la procédure doit désormais ressembler à :
Figure 5.13 - Variable Remplaçant le Composant Fixe Si vous essayez maintenant de rejouer la procédure, vous obtiendrez une erreur indiquant que The variable 'id' was not bound. C'est une manière pour qftestJUI de vous faire savoir qu'aucune valeur n'a été positionnée pour la variable. Alors comment positionne-t-on une valeur pour la variable ? Pour notre exemple, la façon la plus courante et la plus utile est d'"appeler" la procédure avec une valeur spécifique pour la variable, c'est-à-dire en "passant un argument (ou paramètre)'" à la procédure. Maintenant insérons un appel à la procédure. Nous retournons au nSud Test principal de la suite de test. Fermez le nSud Setup pour insérer un nSud après, et maintenant sélectionnez le menu Insert -> Procedure nodes -> Procedure call. Une fenêtre de dialogue s'affiche alors pour vous permettre de renseigner les propriétés du nSud. Entrez le nom de la procédure dans le premier champ qui est la procédure selectCheckbox. Ensuite nous voulons ajouter la variable qui sera passée comme argument à la procédure. C'est accompli avec la table Variables qui apparaît après le nom de la procédure dans la fenêtre de propriétés. Cliquez sur la première icône
Figure 5.14 - Propriétés d'un Appel de Procédure Conseil : En dehors des icônes qui servent de fonctions pour ajouter, éditer et supprimer des éléments dans la liste de variables pour la procédure, vous remarquerez une autre icône dans l'image ci-dessus : le bouton jaune et rouge Une fois les propriétés pour l'appel à la procédure renseignées, cliquez sur OK. Vous pouvez alors sélectionner le nouveau nSud et appuyer sur le bouton de rejeu Si vous essayez d'exécuter la suite de test complète, un message d'erreur s'affichera (Composants introuvables) indiquant que le composant cible Checkbox-boolean2 ne peut pas être déterminé. Ce point est traité dans le chapitre 7.3 aussi vous pouvez passer cette section, mais vous pouvez aussi vous attaquer dès maintenant au problème pour des questions d'entraînement et de meilleure compréhension. Vous pouvez regarder le run-log, et plus particulièrement la capture d'écran incluse qui est d'une grande utilité. Comme vous pouvez le contaster, le problème provient du fait qu'il n'y a pas un tel composant dans la fenêtre de démarrage de Option demo. Tout d'abord il nous faut enregistrer une séquence qui ouvre l'arborescence de l'item Miscellaneous. Vous devez pouvoir faire cela facilement : ouvrez le SUT, cliquez sur le bouton pour démarrer l'enregistrement, cliquez sur le noeud Miscellaneous, puis enfin sur le bouton pour arrêter l'enregistrement. Maintenant où insérons-nous cette séquence dans notre suite de test ? Vous auriez tendance à l'insérer au-dessus des appels de procédure, mais alors l'exécution du test générerait le même message d'erreur. Un coup d'oeil au run-log vous montre pourquoi - parce que chaque séquence entre Setup: Start the application et Cleanup: Stop the application incluera un nouveau démarrage ET un nouvel arrêt du SUT. Aussi afin de réaliser l'état désiré du SUT pour tous les cas de test, vous devez inclure cette séquence dans le Setup lui-même. Sinon vous pouvez créer une nouvelle séquence pour inclure le clic souris enregistré et l'appel de procédure (seulement si cette procédure est censée démarrer dans l'état donné). |
|
qftestJUI est une marque de Quality First Software GmbH. Kapitec Software SAS est le Distributeur Français de qftestJUI. Ce didacticiciel a été traduit de l'anglais par Kapitec Software SAS (Novembre 2005). Date de mise à jour : 10-Oct-2006 |