On me demandait dans les commentaires du billet précédent ce qu'était exactement les tests unitaires, je vais donc essayer d'expliquer à quoi ils servent et vous proposer quelques ressources pour aller plus loin.
Comme le nom l'indique, il s'agit de tester le comportement d'un unité d'un programme, c'est à dire par exemple une fonction ou une classe. Pour une fonction qui convertit une température de Celsius en Fahrenheit, on va tester que le résultat de la conversion pour différentes valeurs. On testera des valeurs négatives, positives, des lettres, etc. pour s'assurer que le résultat est correct et que les erreurs sont bien traités. Les tests permettent aussi d'éviter les régressions de votre programme, car lors d'une modification de votre code, vous pouvez exécuter les tests et vous assurez que le comportement n'a pas été altéré par vos modifications récents.
Vient ensuite le concept de couverture de code. Il s'agit de connaître le pourcentage des lignes de code du programme qui sont testés par votre jeu de tests unitaires. Par exemple, si votre fonction contient du code conditionnel avec l'instruction if/else, il faut que les différents tests de la fonction fassent intervenir à la fois le code dans le bloc if que dans le bloc else. Plus le pourcentage est élevé plus vous pouvez avoir confiance dans le comportement de votre code.
Pour allez plus loin, n'hésitez pas à lire les ressources suivantes :
- Test Unitaire et Couverture de code sur Wikipedia
- Xcode Unit Testing Guide et Test Driving Your Code with OCUnit sur l'Apple Developer Connection
J'espère avoir été assez clair, mais n'hésitez pas en cas de besoin à poser vos questions dans les commentaires.