Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

15 chapitres5 h 41 minIntermédiaire

Tests unitaires, non-régression et recette

Cours de tests pour le BTS SIO SLAM : tests unitaires (Vitest, xUnit, PHPUnit), mocks, API, Playwright, TDD, non-régression, recette. Exercices corrigés.

Par Josselyn C., prof de BTS SIO. Mis à jour le .

L'essentiel

Un test logiciel est une vérification, manuelle ou automatique, qui compare ce que fait un programme à ce qu'il devrait faire. Un test automatisé est un petit programme qui appelle ton code avec des données choisies et vérifie le résultat : en une commande, il rejoue des centaines de vérifications et te dit si tu as cassé quelque chose. Au BTS SIO, les tests sont partout dans l'option SLAM : le bloc 2 demande de « réaliser les tests nécessaires à la validation » de ce que tu livres et d'« élaborer et réaliser les tests des éléments mis à jour », l'épreuve E6 te fait prouver ta solution devant la commission, l'écrit E7 te fait lire et écrire des tests unitaires, et l'E5 attend des tests d'intégration et d'acceptation, avec un rapport de test, pour la mise à disposition d'un service.

À la fin de ce cours, tu sauras :

  • expliquer à quoi sert chaque type de test (unitaire, intégration, bout en bout, non-régression, acceptation) et les doser avec la pyramide des tests ;
  • choisir les bons cas à tester grâce aux classes d'équivalence et aux valeurs limites ;
  • écrire des tests unitaires lisibles en JavaScript avec Vitest, en C# avec xUnit et en PHP avec PHPUnit ;
  • isoler ton code avec des doublures (stub, mock, spy) et tester une API REST avec Supertest ;
  • automatiser un parcours utilisateur dans un vrai navigateur avec Playwright ;
  • pratiquer le TDD, mesurer la couverture de code et lancer tes tests dans la CI ;
  • rédiger un plan de test, un cahier de recette et un rapport de test pour l'E5 et l'E6.

Avant ce cours. Savoir écrire une fonction et une classe dans un langage au moins : JavaScript (JavaScript ou Node.js), C# (programmation orientée objet) ou PHP (PHP et MySQL). Les chapitres 8 et 9 supposent que tu sais ce qu'est une API REST et un composant React. Pour le chapitre 12, avoir fait quelques commits avec Git suffit.

Le fil rouge. Tous les exemples testent Prêt'Matos, l'application web de prêt de matériel de Sorbier Logistique, la PME fictive que tu retrouves dans le cours Gestion de projet. Un salarié réserve un ordinateur portable ou un vidéoprojecteur pour une période ; la logistique enregistre la sortie et le retour ; un rappel part la veille de la date de retour. L'application a une API Node.js 24 avec Express 5, un front React 19 et une base MySQL 8.4. Ses règles métier sont simples à énoncer et pleines de pièges, ce qui en fait un excellent terrain de test :

  • une réservation porte sur un matériel, une date de début et une date de fin ;
  • on ne peut pas réserver un matériel déjà réservé sur une partie de la période ;
  • la date de début ne peut pas être dans le passé, et un prêt dure au plus 15 jours, premier et dernier jour compris ;
  • l'emprunteur reçoit un rappel la veille de la date de retour.

Les chapitres 5 et 6 reprennent les mêmes règles en C# et en PHP, comme si l'équipe les avait codées dans ces langages.

Les versions du cours. Les exemples ont été exécutés en novembre 2026 avec Node.js 24, Vitest 5, Jest 30, Supertest 7, Playwright 1.64, React 19, .NET 10 avec xUnit v3, et PHP 8.4 avec PHPUnit 13. Quand une version change un comportement, un encadré le dit.

Comment travailler. Crée un dossier de projet et tape les tests toi-même : un test se comprend en le faisant échouer. Les sorties de terminal affichées sont celles que tu dois obtenir. Chaque chapitre se termine par des exercices dont la réponse est masquée : écrire les tests d'une fonction, trouver le cas oublié, lire un test qui échoue. Cherche d'abord, ouvre ensuite.

Ton objectifChapitres à travailler en priorité
Comprendre ce qu'est un test et à quoi il sert1, 2 et 3
Écrire tes premiers tests unitaires3, puis 4 (JavaScript), 5 (C#) ou 6 (PHP)
Tester ton projet d'E6 (API, front, base)7, 8, 9 et 12
Préparer l'écrit E7 SLAM3, 5 et 15
Préparer l'E5 ou la recette de l'E62, 11 et 14
Aller plus loin en qualité logicielle10, 12 et 13

Sommaire

0%

Tests

0 chapitre sur 15

  1. Chapitre 1 : C'est quoi un test logiciel ? Pourquoi tester son code16 min
  2. Chapitre 2 : Les types de tests et la pyramide des tests16 min
  3. Chapitre 3 : Écrire un bon test unitaire : AAA, nommage et cas à tester21 min
  4. Chapitre 4 : Tests unitaires en JavaScript avec Vitest (et Jest)30 min
  5. Chapitre 5 : Tests unitaires en C# avec xUnit27 min
  6. Chapitre 6 : Tests unitaires en PHP avec PHPUnit26 min
  7. Chapitre 7 : Mock, stub, spy : les doublures de test39 min
  8. Chapitre 8 : Tests d'intégration et tests d'API avec Supertest30 min
  9. Chapitre 9 : Tester le front : React Testing Library et Playwright (E2E)23 min
  10. Chapitre 10 : TDD : le développement piloté par les tests, avec un kata corrigé18 min
  11. Chapitre 11 : Tests de non-régression : définition, méthode et exemples15 min
  12. Chapitre 12 : Couverture de code, tests de mutation et tests dans la CI23 min
  13. Chapitre 13 : Tests de performance, de charge et de sécurité15 min
  14. Chapitre 14 : Plan de test, cahier de recette et rapport de test21 min
  15. Chapitre 15 : Les tests à l'examen : E7 et E6 SLAM, exercices corrigés19 min
Commencer le cours

Questions fréquentes

C'est quoi un test unitaire ?

Un test unitaire est un petit programme qui vérifie automatiquement le comportement d'une unité de code (une fonction, une méthode) isolée du reste : il l'appelle avec des données choisies et compare le résultat obtenu au résultat attendu. Il ne touche ni la base de données ni le réseau, s'exécute en quelques millisecondes et se relance après chaque modification. Il suit la structure préparer, agir, vérifier (AAA) et se lance avec un framework comme Vitest, xUnit, PHPUnit ou JUnit.

Quelle est la différence entre un test unitaire et un test d'intégration ?

Le test unitaire vérifie une unité isolée ; le test d'intégration vérifie que plusieurs composants fonctionnent ensemble, par exemple une route d'API avec ses middlewares, sa règle métier et la base de données. Le premier trouve les erreurs de logique, le second les erreurs de branchement : un middleware oublié, un format de date différent entre la base et le code. On écrit beaucoup de tests unitaires et moins de tests d'intégration, comme le recommande la pyramide des tests.

C'est quoi un test de non-régression ?

C'est le fait de rejouer, après chaque modification du logiciel, les tests qui passaient avant, pour vérifier que la modification n'a rien cassé dans ce qui fonctionnait. On dit aussi « test de régression » : c'est la même chose. En pratique, la suite de tests automatisés est relancée à chaque commit et dans l'intégration continue, et chaque bug corrigé laisse derrière lui le test qui l'aurait détecté (la méthode).

Qu'est-ce que la pyramide des tests ?

C'est un modèle qui recommande beaucoup de tests unitaires (rapides et précis) à la base, moins de tests d'intégration au milieu, et très peu de tests de bout en bout (lents et fragiles) au sommet. Chaque règle métier se teste au niveau le plus bas possible ; les niveaux du haut vérifient que les morceaux s'assemblent. La forme inverse, avec presque tout testé dans un navigateur, s'appelle le cornet de glace : une suite lente et instable.

Quelle est la différence entre un mock et un stub ?

Les deux sont des doublures de test qui remplacent une dépendance réelle, comme une base de données ou un serveur de courriel. Un stub fournit des réponses préparées : le test vérifie ensuite le résultat du code. Un mock enregistre les appels reçus : le test vérifie que le code l'a appelé comme prévu, par exemple qu'un courriel a été envoyé à la bonne adresse. On utilise un stub quand la dépendance fournit une donnée, un mock quand l'appel est lui-même l'effet attendu.

C'est quoi le TDD ?

Le TDD (Test-Driven Development) est une méthode où l'on écrit le test avant le code, par petits pas : un test qui échoue (rouge), le code minimal qui le fait passer (vert), puis une amélioration du code sans changer son comportement (refactor), comme dans le kata du cours. Elle produit un code entièrement testé et une conception plus simple. Elle s'applique très bien à la correction de bugs : on écrit d'abord le test qui reproduit le bug.

Qu'est-ce qu'un cahier de recette et un rapport de test ?

Le cahier de recette liste les cas de test qui vérifient chaque exigence d'un logiciel : préconditions, étapes, résultat attendu, puis résultat obtenu et statut lors de l'exécution. Le client ou le Product Owner le déroule pendant la recette avant d'accepter la livraison. Le rapport de test rend compte d'une campagne : ce qui a été testé, le nombre de cas réussis et en échec, les anomalies ouvertes et la recommandation de mise en production. Il est attendu à l'E5 et peut être demandé à l'E6.

Vitest ou Jest : quel outil de test choisir en JavaScript ?

Pour un nouveau projet en 2026, Vitest est le plus simple : il gère nativement les modules ES, TypeScript et JSX, sans configuration. Jest reste très répandu dans les projets existants, et son API est presque identique (jest.fn() devient vi.fn()). En C#, on utilise surtout xUnit ; en PHP, PHPUnit ; pour les tests de bout en bout d'une application web, Playwright.

Quelle couverture de code faut-il viser ?

Un seuil de 70 à 80 % des lignes est réaliste pour une application ; viser 100 % pousse à écrire des tests sans intérêt. La couverture montre le code qu'aucun test n'exécute, mais pas la qualité des tests : un test sans vraie vérification couvre le code sans rien prouver. Pour mesurer la qualité des tests sur les modules critiques, on utilise des tests de mutation.

Comment les tests tombent-ils à l'examen du BTS SIO SLAM ?

À l'écrit E7 (U7), le sujet donne souvent une classe de test JUnit ou PHPUnit : il faut expliquer les cas testés, écrire un test d'une méthode ou trouver le cas manquant, en particulier pour un contrôle d'accès. À l'E6, la commission attend des tests automatisés qui tournent dans ton projet, un test pour l'évolution réalisée, la non-régression, et parfois un rapport de test. Jusqu'à la session 2024, l'écrit de cybersécurité s'appelait E6 (U6) : ses sujets restent de bons entraînements.

Mets en pratique

Articles liés

Cours suivant

Qualité et sécurité

Maintenance applicative

Lire le cours