17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

388<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

À quoi servent les tests ?<br />

Dans le cycle de création d’un logiciel, il arrive inévitablement qu’un programmeur<br />

teste le code qu’il a écrit, pour vérifier qu’il se comporte comme prévu. Ces tests sont<br />

préférablement effectués avant de livrer le logiciel ou la fonctionnalité, et font partie<br />

intégrante du travail de développement.<br />

Tester un logiciel comme le ferait le client, pour valider point par point que tout<br />

fonctionne peut devenir relativement fastidieux, car il faut en toute logique recommencer<br />

à chaque insertion ou modification de code.<br />

La première idée de la programmation dirigée par les tests est donc d’écrire des<br />

scripts de tests pour automatiser cette tâche.<br />

La deuxième idée qui en découle est de se prémunir de toute régression. La régression<br />

est le fait d’introduire ou de modifier du code pour ajouter une fonctionnalité A<br />

et de provoquer indirectement un dysfonctionnement dans une fonctionnalité B qui<br />

se comportait jusqu’alors très bien : si la batterie de tests contient un test qui vérifie la<br />

fonctionnalité B et si les tests sont relancés au moment de l’introduction de A, le<br />

problème sera alors tout de suite décelé.<br />

Ce principe est d’autant plus important que le logiciel grossit : il est de plus en plus<br />

difficile pour un développeur d’avoir une vision globale au moment de l’introduction<br />

d’une nouvelle fonctionnalité, pour éviter ces effets de bords.<br />

La programmation dirigée par les tests consiste à écrire des scripts de tests en parallèle<br />

et au même moment que le code, pour chaque nouvelle fonctionnalité introduite<br />

dans le programme.<br />

Enfin, l’action même d’écrire un test au moment de la conception d’une fonctionnalité<br />

augmente de manière considérable la qualité du code : réfléchir à un test valide la<br />

pertinence des paramètres d’entrée, de sortie et le fonctionnement logique du code et<br />

force à une relecture avec plus de recul. Le nombre de bogues ou de défauts de conception<br />

est divisé par cinq par cette action. En outre, ces tests constituent la<br />

meilleure documentation possible pour le code.<br />

Barrière culturelle<br />

« Écrire un test à chaque nouvelle fonction ? Je n’ai pas le temps ! »<br />

Le seul frein réel à ce type d’approche est culturel : il est très difficile pour un développeur<br />

et/ou son chef de projet d’admettre que 60 % du temps de développement<br />

est voué habituellement à déboguer du code écrit. Il est même fréquent, pour ne pas

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!