Webinaire du 3 novembre 2020 : Delphi et les tests unitaires

Quand on est développeur, les tests, c'est un truc qu'on fait pour vérifier que nos programmes fonctionnent, mais il n'est pas toujours possible de toujours tout vérifier à chaque compilation.

Lorsqu'on travaille à plusieurs il est pratique de pouvoir tester ou faire tester des choses qui ne viennent pas de nous. Les tests ne sont pas biaisés par ce qu'on s'attend à obtenir dans les cas que l'on a su gérer lorsqu'on codait.

En informatique, quand on parle de tests, on en a plusieurs catégories :

  • les tests fonctionnels
  • les tests de non régression
  • les tests unitaires

Les deux premières catégories peuvent être réalisées par des humains, parfois avec des logiciels ayant des scripts (pour la non régression), mais pour les tests unitaires c'est aux développeurs de s'y coller, et soyons honnêtes, c'est rarement prévu dans les plannings...

L'excuse du planning n'étant pas toujours la seule que l'on trouve d'ailleurs : les tests unitaires ne sont pas la priorité. Est-ce une bonne ou une mauvaise chose ? A vous d'y réfléchir selon vos méthodes de travail, ce n'est pas l'objet de cette session.

Lors de cette session j'ai prévu de parler des sujets suivants :

  • Qu'est-ce qu'un test unitaire ?
  • A quoi servent les tests unitaires ?
  • Comment faire des tests unitaires avec Delphi ?

En voici la rediffusion que vous pouvez aussi retrouver sur la chaîne YouTube de Barnsten.

Lors de l'enregistrement j'ai eu une bizarrerie sur le débogueur. Les variables n'avaient pas de valeur cohérente. En fait c'est normal puisque c'était un arrêt suite à exception et non lié à un point d'arrêt volontaire. Le fautif n'était donc pas le patch dont j'ai évoqué la présence sur ma version de RAD Studio.

J'ai évoqué l'existence de logiciels pour l'automatisation de tests de l'interface mais n'en ai pas reparlé. Vous pouvez regarder ce que fait par exemple Ranorex Studio et consulter cette démonstration de Christian Breitwieser.

Le PDF de la présentation est téléchargeable si vous désirez le revoir et suivre les liens qu'il contient. Les sources des 6 démos sont disponibles sur ce dépôt GitHub.

La librairie DUnit est disponible dans les options d'installation de RAD Studio mais aussi sur ce site. Daniele Spinetti avait fait une présentation sur les tests unitaires avec DUnit en 2014. Vous pouvez la revoir pour entrer plus dans le détail.

La librairie DUnitm (Mini Test Framework) est disponible sur ce dépôt GitHub. Vous pouvez l'utiliser telle qu'elle, mais aussi vous en inspirer pour créer vos propres outils de tests unitaires puisque le principe n'est pas très compliqué à mettre en place. Pour la voir en fonctionnement reportez vous ces démonstrations de Soddoff Baldrick.

La librairie DUnitX est disponible dans les options d'installation de RAD Studio mais aussi sur ce dépôt GitHub. Un exemple d'utilisation est présent dans la documentation de Delphi. Pour la voir un peu plus en détail vous pouvez regarder cette présentation de Robert Love.

Enfin, si l'extension TestInsight dont j'ai parlé vous tente, vous la trouverez sur ce dépôt BitBucket. Pour la voir plus en détail qui de mieux que son auteur Stefan Glienke pour la présenter en vidéo ?
Vous pouvez aussi consulter ce tutoriel de David Millington sur l'utilisation de TestInsight avec DUnit.

Pour un exemple d'utilisation de tests unitaires dans un système d'intégration continue comme Jenkins, je vous suggère de regarder cette présentation de Craig Chapman réalisée lors du CodeRage XI.

Si vous désirez intercepter des exceptions dans vos logiciels en test ou en production vous pouvez passer par EurekaLog (pour Windows) qui permet de rapatrier les logs et les exploiter localement en débug dans l'IDE comme vous pouvez aussi utiliser des logiciels d'historisation.

Il existe plusieurs librairies sur le marché dont CodeSite (la version express est disponible dans GetIt), TMS Logging ou d'autres disponibles en open source. Ray Konopka avait fait une présentation de l'utilisation de CodeSite lors du CodeRage X.

N'oubliez pas de regarder les prochaines dates de webinaires et de consulter les sessions qui pourraient vous intéresser.


A lire aussi

Webinaire du 3 novembre 2020 : Delphi et les tests unitaires (04/11/2020)
Webinaire du 24 novembre 2020 : diffuser nos logiciels et gérer leurs mises à jour (26/10/2020)
paclient retourne un code d'erreur 1 lors de l'utilisation de PAServer (08/09/2020)
Quoi faire une fois Delphi 10.4.1 Sydney installé ? (07/09/2020)
Installer la version 10.4.1 Sydney de RAD Studio, Delphi ou C++Builder (03/09/2020)
Pourquoi avoir choisi RAD Studio et Delphi comme outils de développement plus qu’un autre ? (30/07/2020)
Webinaire du 5 novembre 2019 : déploiement et débogage à distance (23/05/2020)
Webinaire du 22 février 2019 : créer des composants visuels sans faire de composant (23/05/2020)
Webinaire du 10 décembre 2018 : découvrez les nouveautés de Delphi 10.3 Rio (23/05/2020)
Delphi 10.4 Sydney arrive bientôt. Etes-vous prêts ? (21/05/2020)
Webinaire du 28 janvier 2020 : Utiliser des dessins vectoriels à la place d’images de différentes résolutions (29/02/2020)
Les patchs à installer sur la version Rio 10.3.3 de Delphi, C++ Builder et RAD Studio (27/02/2020)
Fêtons ensemble les 25 ans de Delphi ! #Delphi25th (11/02/2020)
Téléchargez Delphi 10.3 Rio gratuitement ! (03/02/2020)
Utiliser la VCL et FireMonkey dans des unités utilisées par des projets Windows ou multiplateforme (26/10/2019)
Les patchs à installer sur la version Rio 10.3.2 de Delphi, C++ Builder et RAD Studio (30/09/2019)
Les combinaisons de touches et raccourcis clavier utiles dans l'EDI de Delphi (29/05/2019)
Le nouvel IDE de Delphi se dévoile peu à peu pour la version 10.3 Rio (10/11/2018)
Les patchs à installer sur la version Tokyo 10.2.3 de Delphi, C++ Builder et RAD Studio (17/09/2018)
Faire attention aux fichiers ouverts lorsqu'on modifie un projet copié d'ailleurs (04/02/2018)
Utiliser les directives de compilations pour ne pas perdre ses données de production en développant ! (21/07/2017)
Contourner l'erreur "ld: warning: unknown dwarf DW_FORM_strp (offset=0xFFFFFF99) is too big in XXX.a(raw.o)" (28/06/2017)
Comment installer Delphi pour que tout fonctionne correctement ? (20/11/2015)

Membre du programme MVP.
Membre du programme MVP