WinDev 11 permet de créer des tests de validation et de non régression. C’est une fonctionnalité à découvrir absolument dans les versions 11. Directement inspirée de l’Extreme Programming, l’intégration de tests de régression dans le développement va nous simplifier la vie et rendre nos applications plus fiables.
Chaque fois que vous créez une fenêtre, un état, une procédure ou une classe, vous avez la possibilité de créer le test associé. Pas besoin de WinDev 11 pour cela pourrait-on répliquer. Effectivement, pour créer un test le développeur peut créer un bouton dans un coin de fenêtre. Ce bouton va appeler par exemple la procédure qu’il vient juste de coder.
Généralement ce bouton s’appelle “Bouton1” parce qu’on est pressé. Avec l’avancement du projet, des dizaines de boutons “Bouton1” fleurissent sur les fenêtres. On ne sait rapidement plus ce qu’ils font. Leur code devient vite obsolète. Finalement on les supprime tous quand il faut faire une présentation au client. Les tests sont perdus.
Il y a une alternative, bien sûr. Créer une fenêtre regroupant tous ces boutons. Cette fenêtre s’appelle généralement “Fenetre1”. La suivante sera “Fenetre2” et vous devinez la suite, un paquet de fenêtres rattachées à rien dont on ne sait rapidement plus ce qu’elles font.
Paradoxalement même si créer un test consomme un peu de temps, on développe plus vite en procédant ainsi. Pourquoi ? le test va révéler des problèmes (qui écrit du code parfait du premier coup ?). Ces problèmes seront faciles à traiter car le développeur est bien dans le contexte. Une correction immédiate sera faite en 20 secondes, mais dans 3 mois on sait bien qu’elle pourrait demander des heures de débogage.
Parallèlement l‘élaboration des tests permet de mieux cibler le besoin, de penser aux cas limites.
Ajouter un test est simplissime. Prenons l’exemple d’une procédure globale. Il suffit de faire un clic droit dessus et de choisir “Créer un test unitaire”. Le test minimal est généré automatiquement. Il s’agit d’un simple appel de la procédure. On peut l’enrichir, par exemple, pour tester plusieurs valeurs de paramètres. Voici à quoi ressemble le code d’un test.
Au fur et à mesure du développement, les tests s’accumulent. A tout moment il est possible de tous les jouer sans interaction de l’utilisateur. Il suffit ensuite de consulter le compte-rendu . Sur le tableau de bord du projet, une autre grande nouveauté de la version 11, un voyant vert ou rouge indique l‘état des tests. Vert c’est bon. Rouge indique soit que des tests ne sont pas passés, soit qu’il n’y a pas assez de tests.
La figure ci-dessous représente le nouveau Graal à atteindre pour les développeurs WinDev.
100% des tests sont OK, la couverture des tests est de 100%. Ce dernier point garantie notamment qu’un test existe pour toutes les fenêtres, et tous les états de l’application. Au delà de la simple auto-satisfaction, c’est avant tout la garantie d’un niveau de qualité minimum pour vos utilisateurs.
Le GDS de WinDev 11 permet de partager une analyse entre plusieurs projets. Tout est automatique dans le cas général.
Quand 2 projets locaux, partageant la même analyse, sont intégrés dans le GDS, un assistant trés simple se déclenche et il suffit de cocher l’option “partage d’analyse”.
Pour partager une analyse avec un projet déjà dans le GDS et qui n’a pas d’analyse, il n’y a pas d’assistant. La manipulation reste simple mais il faut la connaitre. C’est le but de cet article.
Afin de rendre plus simple les explications, imaginons un projet p1 avec une analyse a1 et un projet p2 sans analyse. Ces 2 projets sont déjà dans le GDS.
La manipulation est relativement simple et se réalise dans l’administrateur du GDS.
Voilà c’est terminé pour la partie GDS. Quitter l’administrateur et ouvrir le projet p2 dans WinDev. Le GDS va tout synchroniser automatiquement.
La dernière étape consiste à associer l’analyse a1 au projet p2 directement dans la description du projet.
carrouselDepuis que j’avais assisté à la présentation de WinDev 11 à Lyon, je n’avais qu’une idée en tête : créer un champ Carrousel.
Je ne suis attelé à cette tâche dès que le téléchargement de la préversion a été terminée. Ca n’a pas été difficile en consultant l’aide. En fait, un exemple est livré : WD Carrousel. Il permet de bien comprendre comment cela fonctionne. Un carrousel, c’est aussi simple à gérer qu’une liste.
Juste un petit bémol, le champ Carrousel nécessite l’installation du framework .NET 3.0 . Cette version toute récente n’est pas très rapide et cela impacte malheureusement sur le champ Carrousel. MS nous promet d’ailleurs une version .NET 3.5 optimisée.
Sur ma machine personelle en tous cas, le carrousel est super fluide et vraiment joli à voir.
Le champ Carrousel nécessite la présence du framework .NET 3.0, il est donc important de pouvoir détecter la présence de celui-ci sur la machine de l’utilisateur.
C’est réalisé très simplement avec la commande suivante :
SI RegistreExiste("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v3.0") ALORS ...
procedure-stockee
Voilà une nouveauté de WinDev 11 qui était très attendue : les procédures stockées sur Hyper-File. Je les ai testées pour vous et c’est plutôt pas mal à part quelques manques dans l’aide (évidemment signalés à PCSOFT). Ce test a été réalisé avec la préversion.
Une procédure stockée se crée dans l’analyse. Directement sur le treeview par le menu contextuel. C’est la partie qui est peu documentée. On trouve quand même facilement son chemin à coup de clic droit. On va créer dans l’ordre une collection de procédure, puis une à une les procédures.
Une fois la procédure créée, clic droit + code, ouvre la fenêtre d‘édition de code. La commande HExécuteProcédure() fait exactement ce que suggère son nom (c’est ça qui est extra avec le WLangage).
SI PAS HExécuteProcédure(MaConnexion1,“AgePlusUn”) ALORS
HErreurInfo(hErrComplet)
FIN
Evidemment, avant d’exécuter la procédure stockée, il faut préalablement la copier sur le serveur. Ici encore, c’est un menu contextuel qui déclenche la copie.
En résumé, une nouvelle fonctionnalité facile à mettre en oeuvre même sans lire l’aide (et pour cause) et qui ouvre de nouveaux horizons aux programmeurs WinDev utilisant des bases Hyper-File Client/Serveur (_rappelons au passage que cette base est totalement gratuite et totalement redistribuable_).
Que de passe-t-il quand une procédure stockée contient une erreur, par exemple une division par zéro ? Est-ce que cela va bloquer le serveur Hyper-File ?
J’ai tenté l’expérience avec la procédure stockée suivante :
PROCEDURE DBZ()
i est un entier
i = 1 / 0
RENVOYER "ok"
Hé bien rassurez-vous, le serveur n’est pas tombé. Une erreur de WLangage est renvoyée au programme. On peut l’intercepter classiquement avec un code de la forme suivante :
QUAND EXCEPTION DANS
Info(HExécuteProcédure(MaConnexion1,"DBZ"))
FAIRE
Info(ExceptionInfo(errComplet))
FIN