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.


Mug Toucan DX dans la baie de RioMug Pascal case in Alexandrie