Accéder au contenu principal

Test driven development

Test driven development

Le test-driven development (TDD) ou en français développement piloté par les tests est une technique de développement de logiciel qui préconise d'écrire les tests unitaires avant d'écrire le code source d'un logiciel.

Cycle de TDD[modifier | modifier le code]

Cycle global TDD
Une représentation graphique du cycle de la méthode Développements Pilotés par les Tests (TDD).
Le cycle préconisé par TDD comporte cinq étapes :
  1. écrire un premier test ;
  2. vérifier qu'il échoue (car le code qu'il teste n'existe pas), afin de vérifier que le test est valide ;
  3. écrire juste le code suffisant pour passer le test ;
  4. vérifier que le test passe ;
  5. puis réusiner le code, c'est-à-dire l'améliorer tout en gardant les mêmes fonctionnalités.

Intérêt[modifier | modifier le code]

Ces tests permettent aussi de préciser les spécifications du code, et donc son comportement ultérieur en fonction des situations auxquelles il sera exposé. Ce qui facilite la production d'un code valide en toutes circonstances. On obtient donc un code plus juste et plus fiable. En écrivant les tests d'abord, on utilise le programme avant même qu'il existe. On s'assure ainsi que le code produit est testable unitairement. Il est donc impératif d'avoir une vision précise de la manière dont on va utiliser le programme avant même d'envisager son implémentation. Cela évite souvent des erreurs de conception dues à une précipitation dans l'implémentation avant d'avoir défini les objectifs.
De plus, le fait d'avoir des tests augmente la confiance en soi du programmeur lors du réusinage du code : il sait qu'à un moment donné les tests ont réussi. Il peut ainsi se permettre des changements radicaux de design en étant sûr, à la fin, d'avoir un programme se comportant toujours de la même façon (si les tests réussissent toujours). L'utilisation de TDD permet la construction conjointe du programme et d'une suite de tests de non-régression. Le TDD est souvent associé, particulièrement dans la méthode XP, à la programmation en binôme. Pour expliquer les rôles des deux acteurs impliqués, il est généralement utilisé la métaphore du rallye automobile. Pour chaque fonctionnalité à réaliser, l'un des développeurs, nommé copilote, code le test. Ensuite, le pilote code la fonctionnalité elle-même. À chaque nouvelle fonctionnalité ajoutée, l'ensemble test-code ainsi réalisé sera de nouveau exécuté, réduisant ainsi au maximum le risque de régression.
Afin de pouvoir mettre en œuvre cette technique, il sera imposé aux utilisateurs, dès la spécification des fonctionnalités, de formaliser la façon dont ils la testeront lors de la recette. Dans le cas d'un développement incrémental, le responsable de la dynamique applicative s'interdira d'accepter dans l'incrément à réaliser une fonctionnalité dont les cas de tests n'auront pas été préalablement formalisés. Pour améliorer encore un peu plus la qualité du code, cette technique pourra être couplée à une autre (Test Fail First) qui consiste à demander en premier lieu au pilote de coder avec une erreur afin de vérifier le comportement de l'applicatif ainsi que le fait que cette erreur sera éventuellement « trappée ». Cette étape réalisée, le pilote codera de nouveau la fonctionnalité sans erreur et si possible plus efficacement (refactoring). L'ensemble des tests sera alors repassé de nouveau.

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

  • (en) Kent Beck, Test Driven Development: By Example, Addison-Wesley, , 240 p. (ISBN 0-321-14653-0)
  • (en) Lasse Koskela, Test Driven: TDD and Acceptance TDD for Java Developers, Manning, , 470 p.(ISBN 1-932-39485-0)

Liens externes[modifier | modifier le code]

Commentaires

Posts les plus consultés de ce blog

easy drag-and-drop website builder

WINDOWS MAC LINUX WEB IPHONE ANDROID PRODUCTIVITY DEVELOPMENT GAMES SOCIAL BUSINESS Lists Sign up Login Crowdsourced software recommendations Which app do you want to replace? Find apps 32 Like Mobirise Create cutting-edge, beautiful websites that look amazing on any devices and browsers.  Created by Mobirise Website Builder Free   Open Source   Mac OS X   Windows   Android     Mobirise - is a super easy drag-and-drop website builder. Drop the blocks you like into your page, edit content inline and publish - no technical skills required. Develop bootstrap-based, fully responsive sites that look amazing on any devices and browsers. Preview how your website will appear on smartphones, tablets and desktops directly in the visual editor. Free for commercial and personal use. Download for Windows, Mac, Android. Boost your ranking - Sites made with Mobirise ar...

L’ARCHITECTURE REST EXPLIQUÉE EN 5 RÈGLES

L’ARCHITECTURE REST EXPLIQUÉE EN 5 RÈGLES par Nicolas Hachet     17 commentaires   Confirmé ,  PHP     architecture ,  REST     Permalink REST (Representational State Transfer) ou RESTful  est un style d’architecture permettant de construire des applications (Web, Intranet, Web Service). Il s’agit d’un ensemble de conventions et de bonnes pratiques à respecter et non d’une technologie à part entière. L’architecture REST utilise les spécifications originelles du protocole HTTP , plutôt que de réinventer une surcouche (comme le font SOAP ou XML-RPC par exemple). Règle n°1 : l’URI comme identifiant des ressources Règle n°2 : les verbes HTTP comme identifiant des opérations Règle n°3 : les réponses HTTP comme représentation des ressources Règle n°4 : les liens comme relation entre ressources Règle n°5 : un paramètre comme jeton d’authentification Les 5 règles à suivre pour implémenter REST Règle n°1 : l’URI comme iden...

Dîner des philosophes

Dîner des philosophes Le problème du «  dîner des philosophes  » est un cas d'école classique sur le partage de ressources en  informatique système . Il concerne l' ordonnancement  des  processus et l'allocation des ressources à ces derniers. Ce problème a été énoncé par  Edsger Dijkstra 1 . Sommaire    [ masquer ]  1 Le problème 2 Remarques 3 Solutions 3.1 La solution de Chandy/Misra 3.2 Solution dans le cas pair 3.2.1 Preuve de l'exactitude de cette solution 4 Notes et références 5 Voir aussi 5.1 Articles connexes 5.2 Lien externe Le problème [ modifier  |  modifier le code ] Illustration du problème La situation est la suivante : cinq philosophes (initialement mais il peut y en avoir beaucoup plus) se trouvent autour d'une table ; chacun des philosophes a devant lui un plat de spaghetti ; à gauche de chaque plat de spaghetti se trouve une fourchette. Un phi...