Les méthodologies Agile et Extreme Programming vous demandent d’écrire le code de test avant de mettre en oeuvre le code d’application. Mais comment faire ? C’est facile : vous devez écrirez les stubs pour votre API, écrire le RPG de test, tester l’API (qui échouera bien sûr), puis étoffer l’API
Tester d’abord, coder ensuite
et continuer à effectuer les tests jusqu’à ce qu’il n’y ait plus d’erreur.
Les développeurs Java ont opté pour tester d’abord/coder ensuite, à l’aide d’un utilitaire simple appelé JUnit (voir junit.org).
WDSc et Eclipse ont intégré JUnit dans leurs IDE. Mais que doit faire un développeur RPG ? Il se trouve que la principale fonction de JUnit est assez facile à imiter en RPG. Pour l’essentiel, il suffit d’écrire un programme de test qui appelle votre API puis vérifie immédiatement si elle a bien fonctionné. Le plus difficile est d’ajouter des tests pour toutes les utilisations potentielles de cette API. Pour un excellent résumé des conseils de test en la matière, visitez pragmaticprogrammer.com/starter_kit/utj/ StandaloneSummary.pdf.
La figure 2 montre un module RPG appelé iUnit qui met en oeuvre trois procédures de test d’unité : assertEquals, assertTrue et fail (les prototypes correspondants se trouvent dans la figure 3). Les deux procédures assert prennent deux paramètres de type caractère d’une longueur maximale de 32 767 et un paramètre facultatif pour un message qui sera émis si l’assert échoue.
La figure 4 montre un module RPG qui teste les procédures iUnit en invoquant la procédure assertEquals avec divers types de données et assertTrue avec quelques instructions booléennes. Quand j’exécute iUnitTest à partir de la ligne de commande, j’obtiens la sortie suivante :
==> call dgg/iunittest
Optional text Expected
but was
Expected
Expected <7> but was <5.20>
Assertion Failed.
1 is not less than 0
Vous écririez un programme RPG qui appelle votre API plusieurs fois (avec divers arguments destinés à tester profondément votre API) et, après chaque appel, vous utiliseriez l’une des fonctions assert pour vérifier les données renvoyées.
A noter que les fonctions assert utilisent l’API send program message de l’iSeries pour vous informer des défaillances. Je vous conseille, après avoir accumulé une suite de tests d’unités, d’écrire un driver CL qui exécute tous les tests d’unités pour une application. Les responsables de la programmation pourraient même songer à automatiser l’exécution de leurs suites de test, en nocturne pendant la phase de développement, de manière à voir, chaque matin, quelles API ont échoué. (Comptez sur moi et sur mes copains – ou quiconque disposé à aider – pour améliorer iUnit afin de combler le fossé qui existe entre sa fonctionnalité et celles de jUnit.)
Téléchargez cette ressource
![Guide inmac wstore pour l’équipement IT de l’entreprise](https://www.itpro.fr/wp-content/uploads/2024/10/Guide-inmac-wstore-pour-lequipement-IT-de-votre-entreprise-Poste-de-travail-impression-infrastructure-2024.png)
Guide inmac wstore pour l’équipement IT de l’entreprise
Découvrez les dernières tendances et solutions IT autour des univers de Poste de travail, Affichage et Collaboration, Impression et Infrastructure, et notre dossier Green IT sur les actions engagés par inmac wstore pour réduire son impact environnemental
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Nouvelles exigences, mêmes enjeux : concilier sécurité et utilisation des données à l’ère de l’IA et des réglementations associées
- Les décideurs IT négligent les mises à jour firmware !
- La protection des données : un enjeu crucial pour les entreprises
- Défis et bénéfices d’infuser l’IA dans l’analytique et la BI
- Mieux protéger l’entreprise à l’ère du travail hybride et du Cloud
![Revue Smart DSI](https://www.itpro.fr/wp-content/uploads/2024/10/SMART-DSI-Numero-35-Septembre-2024.jpg)