Peut-on encore tester comme Beizer ?

Published: (December 4, 2025 at 03:00 AM EST)
4 min read
Source: Dev.to

Source: Dev.to

Contexte et question initiale

Qui n’a jamais entendu cette question dans l’espace ouvert : « oui, mais elle fait quelle taille ton unité ? »
Et l’autre de répondre : « petite, comme… heu », puis patatras, plus de point de comparaison.
Lui‑même utilise JUnit, PHPUnit ou un autre framework.

Définition de test unitaire selon Kent Beck

Dans Test‑Driven Development By Example (2003), Kent Beck écrit :

« Le problème à conduire les développements avec des tests à petite échelle (je les appelle “tests unitaires”, mais ça ne correspond pas très bien à la définition acceptée des tests unitaires) est que vous courez le risque d’implémenter ce que vous pensez être la volonté de l’utilisateur, mais qui s’avère ne pas être ce qu’ils veulent du tout. »

Beck nous donne deux informations :

  1. Une définition de « test unitaire » existe bien dans le monde professionnel.
  2. Il n’en a strictement rien à faire ; le nom JUnit est donc « vu et s’en cogne ».

Les définitions de Boris Beizer

Boris Beizer, membre distingué de l’International Software Testing Qualification Board et auteur de Software Testing Techniques (1983) et Software System Testing and Quality Assurance (1984), propose une classification en trois types de tests dans la seconde édition de 1990 de son premier livre.

Types de tests selon Beizer

TypeDescription
Unité, Test unitaireUne unité est le plus petit élément testable d’un logiciel : il peut être compilé, assemblé, lié, chargé et contrôlé par un banc d’essai ou un pilote. Elle résulte habituellement du travail d’un programmeur et compte quelques centaines (ou moins) de lignes de code source. Le test unitaire vise à montrer que l’unité ne satisfait pas ses spécifications fonctionnelles et/ou que sa structure d’implémentation ne correspond pas à la conception technique. Un défaut détecté est appelé bug unitaire.
Composant, Test de composantUn composant est un agrégat intégré d’une ou plusieurs unités. Par définition récursive, un composant peut être une unité, un sous‑système ou même un système entier. Le test de composant montre que le composant ne satisfait pas ses spécifications fonctionnelles ou que sa structure d’implémentation ne correspond pas à la conception technique. Un défaut détecté est appelé bug de composant.
Intégration, Test d’intégrationL’intégration est le processus par lequel les composants sont assemblés pour créer des composants plus grands. Le test d’intégration montre que, même si chaque composant est individuellement satisfaisant, la combinaison des composants est incorrecte ou incompatible.
Système, Test de systèmeUn système est un « gros composant ». Le test de système vise à mettre en évidence des anomalies qui ne peuvent pas être attribuées à des composants isolés, comme des incompatibilités entre composants, des interactions inattendues, des problèmes de performance, de sécurité, de configuration, de démarrage ou de récupération.

Illustration de la différence composant vs intégration

Exemple : une sous‑routine A qui s’appelle récursivement.

  • Le test de composant n’inclut pas l’appel des sous‑composants ; la récursivité de A n’est donc pas testée.
  • Le test d’intégration teste l’appel de A et son retour, incluant le support des appels récursifs (pile, etc.). Ce nouveau composant intégré nécessite donc des tests supplémentaires.

Version anglaise des définitions (extrait)

“We do three distinct kinds of testing on a typical software system: unit/component testing, integration testing, and system testing. The objectives of each class are different and therefore, we can expect the mix of test methods used to differ.”

Unit, Unit Testing — A unit is the smallest testable piece of software, by which I mean that it can be compiled or assembled, linked, loaded, and put under the control of a test harness or driver. A unit is usually the work of one programmer and consists of several hundred or fewer lines of source code. Unit testing is performed to show that the unit does not satisfy its functional specification and/or that its implemented structure does not match the intended design. When such faults are revealed, we speak of a unit bug.

Component, Component Testing — A component is an integrated aggregate of one or more units. A unit is a component; a component with the subroutines it calls is also a component, etc. By this recursive definition, a component can be anything from a single unit to an entire system. Component testing is performed to show that the component does not satisfy its functional specifications and/or that its implementation structure does not match the technical design. Faults detected are called component bugs.

Conclusion

Beizer offre une classification claire et détaillée des différents niveaux de test, allant de l’unité au système complet. Bien que son nom ne soit pas toujours présent dans les programmes de formation modernes, ses travaux restent une référence précieuse pour quiconque souhaite approfondir la qualité logicielle. Lire Beizer, c’est se doter d’un cadre solide pour éviter les pièges du « test à petite échelle » et garantir que chaque niveau d’intégration est correctement vérifié.

Back to Blog

Related posts

Read more »