Tests unitaires et fonctionnels Kassis Bassem
Plan de travail Introduction Catégories de test Demo
Problématique La réalisation d’un logiciel demande beaucoup d’efforts et d’attention Le nombre de concepts / d’objets à manipuler peut vite devenir problématique Le besoin du client est devenu plus complexe et difficile à comprendre
Mais comment assurer la cohérence et la fiabilité d’un logiciel ?
TEST
Les tests répondent aux questions suivantes Est-ce que ça marche comme prévu? Quels sont les points à améliorer? Est-ce que c’est conforme aux spécifications? Est-ce que ça correspond aux attentes du client?
Pourquoi fait-on si peu de tests? Pas le temps Pas un besoin « métier » Plus les corrections arrivent tard Plus c’est cher No comment… Outils pas au point Seuls les test d’IHM sont plus délicats
Approche traditionelle Pyramide de Mike Cohn Approche traditionelle Approche « agile » IHM Acceptation Intégration Unitaire Coût d’entrée plus élevé. Coût de maintenance assez faible. Coût d’entrée faible. Coût de maintenance très élevé.
Catégories de test
Test en boite noire Test en boite blanche
Les tests en boîte noire s’exécutent en ignorant les mécanismes internes du produit Les tests en boîte blanche sont des tests qui prennent les mécanismes internes en considération Dans les tests en boîte noire, le testeur n’accède pas au code source
Exemple Monkey est un outil qui permet de tester une application Android. Plus précisément, il simule des interactions "aveugles" avec l'application à vérifier. Monkey se connecte à l'instance virtuelle et effectue diverses actions, comme le ferait un utilisateur... un utilisateur qui ne sait pas vraiment ce qu'il veut car ses manipulations n'ont aucun but précis adb shell monkey -p com.example.android.app -v 500
JUnit est une bibliothèque de test unitaire pour le langage de programmation Java. Créé par Kent Beck et Erich Gamma
Un test unitaire, au sens Agile, est un court programme, écrit et maintenu par les développeurs, servant à vérifier de manière très étroite le bon fonctionnement d'une partie restreinte du programme principal. Son résultat est binaire: il "passe" si le comportement du programme est celui attendu et "échoue" dans le cas contraire
Example