# Testing

{% hint style="info" %}
**ALL CODE IS GUILTY UNTIL PROVEN INNOCENT!**
{% endhint %}

Personne d'autre qu'un test automatisé ne peut garantir qu'un code fonctionne.

### Test-Driven Development

Les tests unitaires sont écrits en premiers.

### Tests are Specs

Les tests unitaires **définissent le comportement du code** à implémenter et non l'inverse.

### Tests are Documentation

Les tests unitaires ont l'avantage de fournir naturellement une documentation toujours à jour.

### **Tests MUST Pass**

Le code ne peut être livré tant que tous les tests unitaires ne fonctionnent pas.

Un test cassé doit être la priorité de toute l'équipe.

### Bugs Happen... but only Once!

Un bug est acceptable mais pas une régression.

A la découverte d'un bug, des tests unitaires doivent être ajoutés garantissant ainsi que le bug ne se reproduira plus jamais.

Les tests doivent être exécutés à chaque changement et les résultats doivent être publiés.
