Il existe deux grandes formes de tests :
les tests automatisés : ils sont codés par des informaticiens et exécutés par un ordinateur. Leur but est de confirmer que les différentes parties du programme correspondent aux spécifications techniques ;
les tests manuels : ils sont réalisés par des humains, généralement une personne responsable de la qualité d'un projet, ou le client lui-même. Leur but est de vérifier que les différentes fonctionnalités développées correspondent aux spécifications fonctionnelles.
Découvrez la pyramide des tests
Une pyramide de tests représente la somme des tests effectués sur un projet, ainsi que leur type.
Chaque étage de cette pyramide est constitué d’un type spécifique de test. Car, oui, il y a différents types de tests, et nous allons les aborder sans plus tarder.
Les tests unitaires
Les tests unitaires sont la base de la pyramide de tests. Comme leur nom l’indique, les tests unitaires ont pour objectif de tester une unité de code. Il peut s’agir d’une méthode ou d’une fonction, par exemple. Afin qu’un test unitaire soit considéré comme tel, il doit respecter une règle bien précise :
Un test unitaire ne peut pas être dépendant de fonctionnalités extérieures à l'unité qui est testée.
Par exemple, un test faisant appel à une base de données ou une API ou encore une autre méthode ne sera pas considéré comme un test unitaire.
Un test unitaire vérifie qu'une fonction réalise l'action souhaitée. Il ne s'agit pas ici de tester l'interaction entre les différentes fonctionnalités, mais plutôt une partie d'une fonctionnalité.
Les tests d'intégration
Juste au-dessus des tests unitaires dans notre pyramide, nous avons les tests d’intégration. Les tests d'intégration ont pour objectif de vérifier qu’une nouvelle fonctionnalité ne va pas poser de problème lors de son intégration au sein de l’application.
En effet, sur un projet nous allons développer de nombreuses fonctionnalités. Parfois, dans le cadre d’un travail en équipe, d’autres développeurs vont le faire également. Les tests d'intégration vont vérifier que toutes ces fonctionnalités arrivent à travailler ensemble.
Tout comme les tests unitaires, les tests d'intégration sont réalisés automatiquement par l'ordinateur. Cela les rend plus rapides à exécuter et plus fiables. Ils correspondent aux spécifications techniques, et testent par conséquent l'architecture du programme.
Tests fonctionnels
Les tests fonctionnels vont vérifier qu'une fonctionnalité, dans son ensemble, marche comme nous le souhaitons du point de vue de l’utilisateur. Ils sont, le plus souvent, réalisés par l'ordinateur compte tenu de la rapidité d'exécution, mais ils peuvent également être réalisés par un humain. Ils reprennent un parcours utilisateur.
Pour cela, il existe des librairies comme Selenium pour les applications web, capables d’ouvrir un navigateur et de se charger de simuler les actions d’un utilisateur.
Généralement, un test fonctionnel est associé à une User Story et teste son bon déroulement avant l'étape de vérification manuelle.
Tests de performance
Les tests de performance évaluent la vitesse, la réactivité et la stabilité d'une application soumise à une charge de travail. Ces tests sont effectués afin d'identifier les goulots d’étranglement dans le code, liés aux performances.
Tests d'acceptation
Un test d'acceptation est réalisé par un humain, généralement le client ou son représentant, et valide que la fonctionnalité développée correspond bien à celle qui était attendue.
Le client donne ses retours ou valide la fonctionnalité.
La phase de recette
Elle est réalisée en collaboration étroite avec le client, et valide que le logiciel livré correspond bien à ses attentes. Durant cette phase, l'équipe responsable du projet teste les différentes composantes du projet et décèle les derniers bugs avant la mise en ligne.
La phase de recette est courante dans un projet séquentiel (cycle en V), mais pas dans le cas de méthodologies agiles. En effet, les méthodologies agiles préconisent des livraisons rapides, les tests d’acceptation font office de recette.
Plusieurs formes de tests
Il existe bien d'autres formes de tests !
Plusieurs autres aspects d'un projet peuvent être testés :
l'accessibilité : respect des normes du W3C, accessibilité aux personnes en situation de handicap… ;
la sécurité : certificat SSL, formulaires sécurisés, base de données cryptée...
Pour en savoir plus, je vous invite à consulter le site du comité français du test logiciel. Ce dernier organise chaque année la Journée française du test logiciel. Retrouvez les comptes-rendus sur leur site !
En résumé
Il existe deux grandes formes de tests, les tests automatisés et les tests manuels.
L’ensemble des tests est découpé en 4 types de tests :
les tests unitaires testent une unité de code ;
les tests d’intégration testent une fonctionnalité ;
les tests fonctionnels testent le parcours utilisateur ;
les tests de performance testent la réactivité et la stabilité d’une fonctionnalité ;
les tests d’acceptation testent la conformité à la spécification.
Maintenant que nous en savons un peu plus sur les différents tests, il est temps de voir comment les mettre en place, en commençant par les tests unitaires.