DIDACTICIEL VERSION 1.08.4
SOMMAIRE CHAPITRE 6 - CREATION D'UNE PROCEDURE GENERALE

 

Introduction

Options Demo

Création d'une Suite de Test

Utilisation du Débogueur

Ecriture d'une Procédure

Création d'une Procédure Générale

Modularisation

Bibliothèque Standard

Gestion de Composants d'IHM Complexes

Avant de démarrer votre propre Application

Lecture Avancée

 

 

 

6.1 Création d'un Paquetage

6.2 Déplacement de la Procédure

6.3 Création de la Procédure Deselect

6.4 Appel des Procédures

6.5 Création d'une Procédure Polyvalente

6.6 Paramétrage par Défaut

6.7 Construction If/Else

6.8 Appel de la Procédure Polyvalente

6.9 Documentation de la Procédure

6.10 Sauvegarde de la Suite de Test

 

Dans ce chapitre, nous vous montrerons de quelle manière vous pouvez rendre la procédure que vous avez écrit dans le chapitre précédent encore plus utile. Avec l'introduction des paquetages, vous verrez comment construire votre propre bibliothèque d'utilitaires pour des fonctions d'ordre général.

6.1 Création d'un Paquetage

Alors que vous commencez à écrire davantage de procédures, vous trouverez rapidement que les choses commencent à être fouillies et désordonnées. Comme un dossier de fichiers qui vous aide à organiser vos documents en différentes catégories, un paquetage dans qftestJUI vous aide à grouper ensemble vos procédures. La définition d'un paquetage dans qftestJUI est donc tout simplement un groupe de procédures et/ou d'autres paquetages, mais rarement un mélange des deux.

Dans le dernier chapitre, vous avez écrit une procédure utilitaire case à cocher appelée selectCheckbox, qui vous a permis de vérifier une case à cocher dans le SUT. Nous pourrions cependant imaginer d'autres utilitaires pour une case à cocher. Et si vous voulez désélectionner une case à cocher ou questionner si une case à cocher est grisée/désactivée ? Il y a toute sorte de possibilités, et toutes tombent dans une catégorie générale, c'est-à-dire les utilitaires de case à cocher. Aussi créons un paquetage pour ces procédures.

Cliquez sur le nSud Procedures de votre suite de test et sélectionnez le menu Insert -> Procedure nodes -> Package. Cela affichera la fenêtre de dialogue de propriétés dans laquelle vous devez seulement renseigner un nom pour le paquetage. Appelez-le checkbox.

6.2 Déplacement de la Procédure

Vous avez déjà une procédure qui traite d'une case à cocher et qui peut maintenant être déplacée dans votre nouveau paquetage. Utilisez les fonctions Couper et Coller pour déplacer la procédure selectCheckbox dans le paquetage checkbox.

Vous remarquerez que le nom de votre procédure est quelque peu superflu maintenant qu'il est dans le paquetage checkbox. Changez le nom de la procédure selectCheckbox par select. C'est un petit avantage de l'organisation du paquetage : tout ce qui est à l'intérieur du paquetage checkbox est supposé traiter d'une case à cocher.

Voici à quoi votre suite de test doit maintenant ressembler :

Figure 6.1 - Paquetage Checkbox

6.3 Création de la Procédure Deselect

L'étape suivante consiste à développer le paquetage un petit peu en ajoutant une autre procédure utilitaire. Un choix sensé serait, bien sûr, une procédure deselect qui décoche une case à cocher.

Votre nouvelle procédure deselect fonctionnera essentiellement de la même façon que select avec seulement quelques changements mineurs dans la logique. Commençons par faire une copie de select et la coller dans le paquetage checkbox. Ne vous inquiétez pas si vous avez deux procédures avec le même nom dans le paquetage, ce point sera corrigé ultérieurement.

Vous avez maintenant deux procédures identiques dans le paquetage checkbox. Cliquez sur l'une d'entre elles pour afficher ses propriétés et en changer le nom par deselect.

La dernière étape pour cette section est de changer la logique de manière à ce que deselect recherche désormais l'état désélectionné de la case à cocher avant d'agir. Pour cela, vous avez seulement besoin de faire un changement. Ouvrez les branches de la procédure deselect jusqu'à ce que vous localisiez le nSud Check selected state. Rappelez-vous que c'est le nSud de contrôle qui interroge l'état de la case à cocher. La procédure select est implémentée de sorte qu'une exception soit générée si la case à cocher n'est pas sélectionnée. Nous pouvons inverser cette logique maintenant pour deselect en localisant la case à cocher Selected dans les propriétés du nSud et en la décochant, comme suit :

Figure 6.2 - Vérification pour un Etat Non-sélectionné

Maintenant le nSud contrôle attend un état non sélectionné du composant et génèrera une exception si le composant est sélectionné, ce qui est exactement ce à quoi nous voulons arriver. Vous pouvez vouloir changer certaines des étiquettes et/ou des commentaires dans la procédure, par exemple le nom du nSud Try pourrait être changé en checkbox not selected. Voici comment votre nouveau paquetage doit être formé :

Figure 6.3 - Paquetage Checkbox avec deux Procédures

6.4 Appel des Procédures

Dans le chapitre précédent (Cf. section 5.8), vous avez créé un appel à la procédure selectCheckbox. Maintenant, il vous faut changer cet appel pour qu'il ait un nom correct.

Les appels aux procédures dans des paquetages suivent une règle de syntaxe qui référence la hiérarchie entière de la procédure d'une manière élégante : package.procedure - ainsi, votre appel de procédure sera maintenant à la procédure nommée checkbox.select.

Conseil : Les paquetages peuvent, selon notre définition, contenir non seulement des procédures, mais également d'autres paquetages. Si une procédure est située dans une telle structure de paquetage emboîtée, alors la même règle pour appeler la procédure s'applique comme ci-dessus, avec autant d'états paquetage. devant le nom de la procédure que nécessaire. Par exemple, votre appel de procédure pourrait être quelque chose comme menu.file.open, qui implique deux paquetages (menu et file) avec la procédure nommée open.

Essayez de créer un autre appel de procédure maintenant à la procédure checkbox.deselect. Vous devez désormais savoir comment procéder en utilisant les techniques décrites dans ce didacticiel.

6.5 Création d'une Procédure Polyvalente

Les deux procédures que vous avez maintenant dans le paquetage checkbox vous permettront de sélectionner ou de ne pas sélectionner séparément une case à cocher. Comment serait-elle si nous avions créé une procédure simple qui combine les deux fonctions ? Dans cette section et les suivantes, vous allez créer une procédure appelée setState qui positionnera l'état d'une case à cocher à "sélectionné" ou "non sélectionné". Cette nouvelle procédure inclura une variable que nous appellerons select, qui si elle est positionnée à true fera que la procédure sélectionnera la case à cocher, autrement (select est false), la case à cocher ne sera pas sélectionnée.

Commençons par créer la nouvelle procédure setState dans le paquetage checkbox. Si vous avez besoin d'aide pour créer une nouvelle procédure, merci de bien vouloir vous référer à la section 5.2 du chapitre 5.

6.6 Paramétrage par Défaut

Comme nous venons de l'indiquer, votre nouvelle procédure contiendra la variable select qui sera utilisée pour décider quoi faire avec la case à cocher. Comme avec l'ID du composant que vous avez passé à la procédure dans votre appel de procédure, une valeur select (soit true, soit false) doit également être passée comme argument à setState.

Il est cependant habituel pour les procédures qui se servent d'une telle variable de définir un paramétrage par défaut pour la variable. Cela signifie que passer une valeur select à la procédure comme argument est facultatif. Quand aucune valeur n'est passée, la variable prend la valeur par défaut.

Cliquez sur le nSud procédure setState pour visualiser ses propriétés dans la fenêtre de détails. Vous remarquerez qu'une zone pour définir des variables est incluse dans les propriétés. En fait, des variables pour une procédure sont ajoutées, éditées et supprimées de la même manière que ce que vous avez vu en section 5.8 du chapitre 5). De la même manière, ajoutez maintenant la variable select et donnez-lui pour valeur true. Voici à quoi les propriétés de votre procédure doivent ressembler :

Figure 6.4 - Valeur par défaut pour la Variable Procédure

Ce que vous venez de faire est de dire à qftestJUI que s'il ne voit pas une valeur pour select lorsque la procédure est appelée (c'est-à-dire, elle n'a pas été passée à la procédure par l'appel de procédure), alors la valeur par défaut est utilisée. Si une valeur est fournie comme un argument passé à la procédure, alors qftestJUI ignorera la valeur par défaut pour utiliser celle fournie.

Conseil : Pour ceux qui se sont familiarisés avec les variables, vous comprendrez la portée d'une variable. Une variable pourrait être, par exemple, définie dans une tâche et alors utilisée de manière erronée dans une autre si vous oubliez qu'elle est déjà définie. A ce stade du développement d'une suite de test, vous ne devriez pas rencontrer ce type de problème, toutefois vous pourriez vouloir en savoir plus sur les variables (merci de vous référer alors au Manuel Utilisateur).

6.7 Construction If/Else

La variable select nous aide à décider si une case à cocher est sélectionnée ou pas. Nous en sommes maintenant au point où nous pouvons utiliser cette variable dans la construction logique if/else.

Utiliser le mécanisme if/else est facile. Pour commencer, une condition est donnée. Si cette condition évalue une déclaration à true, alors les nSuds sous le bloc if sont exécutés. Autrement (la déclaration est false), les nSuds sous le bloc else sont exécutés.

Notre condition est, bien sûr, la valeur de la variable select. Si elle est paramétrée à true, alors nous sélectionnons la case à cocher, etc.

Ouvrez et cliquez sur le nSud de procédure setState de sorte que vous puissiez insérer un nouveau nSud comme premier élément de la procédure. Maintenant sélectionnez le menu Insert -> Control structures -> If. Une fenêtre de dialogue à remplir avec les propriétés du nSud s'affiche. Pour ce nSud, vous devez remplir la condition pour évaluer la variable select avec précision comme montré ci-dessous :

Figure 6.5 - Déclaration de Condition pour le nSud If

Rappelez-vous que se référer à une variable implique l'utilisation de la syntaxe "$(variable)". Les guillemets simples et doubles dans la condition sont la manière de qftestJUI d'évaluer les chaînes. Une syntaxe différente est requise pour différents types de conditions comme des expressions mathématiques. Référez-vous aux sections Variables et If control node dans le Manuel Utilisateur.

Si la condition évalue à true, alors les nSuds sous le nSud If sont exécutés. Vous pouvez maintenant insérer la logique qui fera que la case à cocher sera sélectionnée. Mais comment faire? Il y a plusieurs manières : vous pouvez, par exemple, copier les nSuds depuis le procédure select à cette partie de setState. Toutefois, nous opterons pour la solution la plus facile en faisant un appel à la procédure checkbox.select, ici : (Cf. section 5.8 du chapitre 5).

Maintenant nous en venons à la partie Else de la construction. Après le dernier nSud dans notre bloc if (vous en avez seulement un, mais vous pourriez en avoir plus), vous pouvez insérer le nSud Else en utilisant le menu Insert -> Control structures -> Else. Vous n'êtes pas obligé(e) de remplir les informations dans la fenêtre de dialogue de propriétés qui s'affiche pour le nSud Else. C'est automatiquement supposé être l'antithèse logique du nSud If correspondant.

Enfin, nous finalisons la construction par l'ajout du/des nSud(s) devant être exécuté(s) quand la condition du nSud If n'est pas vraie. Donc ici nous insérons un appel à la procédure checkbox.deselect.

La procédure setState est maintenant finalisée ! Voici à quoi elle doit ressembler :

Figure 6.6 - La Construction If/Else

Conseil : Pour notre exemple, la nature booléenne de la variable select se prête bien à une construction if/else simple. Cependant, pour d'autres exemples, tels qu'une condition multi-états comme les couleurs d'un feu tricolore, vous pouvez implémenter la construction if/elseif/else plus avancée. Le concept est le même, vous êtes seulement autorisé(e) maintenant à évaluer des conditions multiples. Par exemple, votre logique pourrait fonctionner comme ceci :

Figure 6.7 - Construction If/Elseif/Else

Veuillez noter que la partie Else de la construction if/else ou if/elseif/else est facultative !

6.8 Appel de la Procédure Polyvalente

Maintenant vous pouvez essayer d'appeler votre nouvelle procédure setState. Créez un nSud d'appel de procédure, comme vous l'avez fait en section 5.8 du chapitre 5). Vous aurez besoin de la valeur id comme argument pour l'appel de procédure, mais maintenant vous pouvez aussi (facultatif) ajouter la seconde variable select, à l'appel, comme suit :

Figure 6.8 - Appel de Procédure à setState

Remarque : Parfois vous pouvez vouloir créer une procédure qui retourne une valeur, c'est-à-dire une procédure getState. A cette fin un nSud de retour peut être utilisé dans la procédure. La valeur retournée peut alors être attribuée à une variable globale ou locale en dehors de la procédure, utilisant l'attribut Variable for return value du nSud Procedure call visible dans la figure ci-dessous. Pour plus d'informations, merci de vous référer au Manuel de Référence.

6.9 Documentation de la Procédure

Maintenant que vous avez finalisé l'implémentation de votre procédure avec succès, nous allons vous montrer une manière commode pour créer la documentation. Pour le langage de programmation Java, il existe une manière standard pour documenter le code source - cela s'appelle javadoc. Cet utilitaire sait analyser votre code source Java et en extraire des informations pour générer une documentation, assez riche et conviviale, au format HTML. Outre les informations purement liées au code Java, javadoc sait récupérer des commentaires que vous vous devez d'adjoindre à votre code.

qftestJUI offre un mécanisme similaire pour documenter vos paquetages et vos procédures. Dans la suite de ce document, nous vous montrerons comment cela est fait. Si vous voulez jeter un premier coup d'Sil sur le résultat produit, veuillez regarder le fichier qfs.html.

Maintenant, nous allons commencé à documenter notre procédure. Merci d'ouvrir le nSud procédure setState, s'il n'est pas déjà ouvert. Comme vous pouvez le voir dans la figure ci-dessous, la procédure a deux paramètres. Pour les documenter, nous ajoutons deux lignes dans le champ Comment du nSud, commençant par @param suivi du nom du paramètre et une description appropriée. @param est une balise spéciale pour indiquer la relation de la description aux paramètres de procédure. Une description générale de la procédure peut être ajoutée au début du champ Comment. Remarquez que c'est possible d'utiliser des balises HTML pour formater le texte :

Figure 6.9 - Commentaires pour la Documentation Paquetage

Merci d'ajouter des commentaires similaires pour votre procédure setState pour que nous pussions commencer à générer la documentation.

Le processus de génération est très facile. Sélectionnez le menu File -> Create HTML/XML pkgdoc...

Vous devez confirmer le dialogue s'affichant, qui contient quelques options sur la génération de document, sans faire changement, en appuyant sur le bouton OK. Alors votre navigateur par défaut devrait apparaître automatiquement (si le navigateur est déjà ouvert, alors cliquez sur la fenêtre) et afficher le contenu suivant :


Figure 6.10 - Documentation Paquetage

Ici nous voyons trois parties dans le document. La présentation générale du paquetage (Package overview), la présentation générale de la procédure (Procedure overview) et la description détaillée du paquetage case à cocher (Package checkbox). Dans le paquetage checkbox, il y a la procédure setState avec son texte de description générale et ses paramètres.

Avec le dispositif de documentation de paquetage, vous pouvez facilement générer une description utile des paquetages et des procédures, plus particulièrement si vous voulez fournir une fonctionnalité dans une sorte de bibliothèque. Une telle bibliothèque incluant de la documentation est également fournie avec qftestJUI (Cf. Chapitre 8).

Maintenant vous pouvez jouer avec la fonctionnalité de génération de documentation. Vous pouvez par exemple ajouter une description générale au paquetage checkbox et essayez des balises supplémentaires, comme @version, @author, @result, @throws. Merci de vous référer au Manuel Utilisateur pour la liste complète des balises.

Commentaire : Vous pouvez également utiliser qftestJUI pour créer automatiquement la documentation de paquetage en mode batch. Merci de vous référer au Manuel Utilisateur pour plus de détails sur les arguments de lignes de commande applicables.

6.10 Sauvegarde de la Suite de Test

A ce stade, vous êtes en bonne voie pour développer des suites de test évoluées. Vous pouvez sauvegarder le travail effectué jusqu'ici. La sauvegarde d'une suite de test peut être effectuée simplement à partir du menu File -> Save. Vous pouvez nommer la suite de test comme vous le voulez, mais nous vous suggérons d'utiliser le nom de utils.qft, dans la mesure où nous allons nous y référer ultérieurement et modifier cette suite de test dans le prochain chapitre.

Remarque : Si vous évaluez qftestJUI en mode démo, alors vous ne pouvez pas sauvegarder la suite de test. Merci de nous contacter pour obtenir une version d'évaluation pleinement fonctionnelle ().

Dans le chapitre suivant, nous allons commencer à explorer un nombre plus important des possibilités de qftestJUI en créant une bibliothèque modularisée de votre suite de test utils.qft. C'est également le moment opportuin d(arrêter ce didacticiel au cas où vous voudriez explorer des fonctionnalités de qftestJUI par vous-même (à l'aide du Manuel utilisateur), et revenir plus tard au didacticiel.

 

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 S.A.S. (Novembre 2005). Date de mise à jour : 29-Nov-2005