17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

400<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

# chargement du fake<br />

import fakeimaplib as imaplib<br />

sys.modules['imaplib'] = sys.modules['fakeimaplib']<br />

# utilisation du fake<br />

print imaplib.__doc__<br />

[...]<br />

# déchargement du fake<br />

del sys.modules['imaplib']<br />

# rechargement du vrai module imap si nécessaire<br />

if original_imap isnot None:<br />

sys.modules['imaplib'] = original_imap<br />

À RETENIR Primitive reload() et objet module<br />

La primitive reload() permet de forcer le rechargement d’un module. Si elle est appelée pendant<br />

les tests, le patch saute.<br />

L’objet module peut être remplacé par n’importe quel type d’objet, du moment qu’il couvre les<br />

appels qui lui sont faits.<br />

Test coverage<br />

Lorsque la batterie de tests est exécutée, le ratio entre le nombre de lignes parcourues<br />

et le nombre de lignes totales du programme, appelé test coverage, doit être dans<br />

l’idéal égal à 1. Si ce ratio est inférieur, cela signifie que certaines lignes de l’application<br />

ne sont jamais testées.<br />

Deux actions sont possibles :<br />

Les tests sont complétés pour couvrir les cas non explorés.<br />

Les lignes de code en question sont retirées car mortes. Les lignes mortes sont des<br />

résidus de code qui ne peuvent jamais être appelés.<br />

Qualité des tests<br />

Le facteur clé de réussite de ce type de programmation tient dans la pertinence des<br />

tests écrits. Mal employée, la technique peut s’avérer beaucoup moins efficace.<br />

Voici quelques conseils pratiques :<br />

N’inventez pas de use cases dans les tests, seuls ceux définis dans les spécifications<br />

importent.<br />

Chaque test doit raconter une petite histoire, du début jusqu’à la fin. Si l’histoire<br />

s’interrompt, le découpage des tests est mauvais.

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

Saved successfully!

Ooh no, something went wrong!