La différence entre les tests en boîte blanche et en boîte noire
Les tests en boîte noire évaluent la fonctionnalité d’un logiciel sans connaissance du code interne, en se concentrant sur les entrées et les sorties. Les tests en boîte blanche examinent la structure et la logique interne du code, nécessitant un accès au code source.
Les tests en boîte noire sont généralement réalisés par les équipes QA pour valider les fonctionnalités orientées utilisateur, en utilisant des techniques telles que le partitionnement en classes d’équivalence et l’analyse des valeurs limites.
Au contraire, les tests en boîte blanche sont effectués par les développeurs pour garantir la justesse et la couverture du code, en employant des méthodes comme la couverture des instructions et la couverture des branches.
La combinaison des deux approches améliore la couverture des tests et la qualité du logiciel.
Dans cet article, je vais vous présenter ces deux types de tests, expliquer ce qu’ils sont, leurs principales différences, comment ils sont utilisés, ainsi que leurs avantages et inconvénients.
Qu’est-ce que le test en boîte noire ?
Le test en boîte noire, parfois appelé test comportemental, est un type de test logiciel où le testeur n’a pas accès au code source du système testé. Il est généralement réalisé par l’équipe assurance qualité et ne nécessite pas forcément de compétences techniques avancées, comme la programmation.
Dans le test en boîte noire, les cas de test sont rédigés sur la base des entrées et des sorties de l’application à tester (AUT), telles que spécifiées dans le cahier des charges.
Les techniques de test en boîte noire les plus connues sont les suivantes :
- Partitionnement en classes d’équivalence : où les entrées sont classées en ensembles (ou partitions) d’équivalence, ce qui veut dire que chaque valeur d’une classe générera le même résultat. Un seul cas de test par classe d’équivalence suffit à garantir une bonne couverture de test.
Exemple : Si un champ accepte des valeurs entières entre 1 et 10, alors la classe valide contient tous les nombres compris entre 1 et 10, et les deux classes invalides sont les nombres inférieurs à 1 et ceux supérieurs à 10. Cela signifie que 3 cas de test suffisent pour couvrir toutes les classes possibles.
- Analyse des valeurs limites : où les valeurs extrêmes des entrées, plus susceptibles de provoquer des défauts, sont testées.
Exemple : En reprenant le même champ que précédemment, les limites valides sont 1 et 10, et les limites invalides sont 0 et 11.
- Test par table de décision : où les relations entre entrées et sorties sont présentées sous forme de tableau. Ce tableau comporte généralement des colonnes pour les conditions et des lignes pour les différentes combinaisons. Chaque ligne doit correspondre à un cas de test.
Exemple : Cette technique s’applique à des scénarios plus complexes. Supposons une demande de prêt bancaire avec les conditions suivantes :
| Conditions | Âge supérieur ou égal à 25 ans | Revenu supérieur ou égal à 50 000 USD | Décision |
|---|---|---|---|
| 1 | Vrai | Vrai | Prêt accordé |
| 2 | Vrai | Faux | Prêt refusé |
| 3 | Faux | Faux | Soumettre à un gestionnaire |
| 4 | Faux | Faux | Prêt refusé |
Il existe donc quatre combinaisons possibles, ce qui signifie que quatre cas de test doivent être exécutés.
- Test de transition d’état : il vérifie le comportement d’un système lors du passage d’un état à un autre.
Exemple : Imaginons que vous testiez un simple outil de suivi de bogues. Le schéma des statuts est :

Les transitions possibles sont :
- De Nouveau à En cours
- De En cours à En test
- De En test à Clos
- De En test retour à En cours
Pour une couverture complète, il faut s’assurer que chacune des transitions et chacun des statuts est testé au moins une fois.
- Test basé sur l’expérience, comme le test exploratoire. Ce type de test consiste à exécuter des scénarios basés sur l’expérience du testeur avec le système ou avec des systèmes similaires, et sur la connaissance du comportement de l’application.
Exemple : Imaginez que vous testez une nouvelle application de réseau social. Votre objectif est d'explorer l'application afin de détecter d'éventuels défauts ou problèmes à corriger.
Lors d’un test exploratoire, vous pourriez effectuer les actions suivantes :
- Créer un nouveau compte
- Télécharger une photo de profil
- Écrire une publication
- Consulter votre propre profil
- Rechercher des amis
- Envoyer une demande d’ami
- Accepter une demande d’ami
- Aimer et commenter une publication
En test exploratoire, vous réaliseriez ces actions de façon non structurée et sans plan prédéfini. L’objectif serait de trouver des défauts ou des axes d’amélioration de l’application.
Si vous souhaitez en savoir plus sur le test exploratoire, j'ai trouvé le livre d’Elisabeth Hendrickson, Explore It!, vraiment utile.
Avantages et inconvénients des tests boîte noire
Bien entendu, il existe des avantages, mais aussi des inconvénients, à réaliser des tests en boîte noire.
Avantages :
- C'est plus rapide à mettre en œuvre
- Permet de détecter des erreurs d’interface ou des oublis fonctionnels
- Ne nécessite pas la connaissance du code source
- Peut être réalisé par une personne extérieure ou non technique
- Simule le point de vue et le parcours réel de l’utilisateur
- Peut s’appliquer à différentes phases de test, y compris l’acceptation utilisateur
Inconvénients :
- La préparation de l’environnement et l’exécution des tests peuvent être plus chronophages
- Le contrôle sur les cas de test reste limité
- Certains scénarios spécifiques peuvent être difficiles à tester
- Informations limitées sur la cause réelle des défaillances
- Certaines erreurs peuvent passer inaperçues
- Capacité limitée à tester la performance et la montée en charge
Quand utiliser les tests boîte noire ?
Les outils de test boîte noire peuvent être utilisés à n’importe quel niveau de test. Cependant, il est préférable de les utiliser aux niveaux supérieurs, et de laisser les tests de niveau inférieur aux tests boîte blanche. Cela signifie que, même s’il est possible de tester au niveau unitaire, la méthodologie boîte noire est plus adaptée aux tests système et aux tests d’acceptation.
Les techniques boîte noire s’appliquent aussi bien aux tests fonctionnels que non fonctionnels (comme les tests de performance, d’utilisabilité et d’accessibilité).
Elles doivent aussi être appliquées aux fonctionnalités nouvellement implémentées, ou bien des cas de test existants, identifiés grâce à ces techniques, peuvent être rejoués lors des tests de non-régression.
Qu’est-ce que le test boîte blanche ?
Le test boîte blanche (également appelé test en boîte transparente, test en boîte de verre, test basé sur le code ou test structurel) est une méthode d’essai qui se concentre sur le fonctionnement interne de l’UAT.
Approches des tests boîte blanche :
- Couverture des instructions : toutes les instructions (lignes de code) sont exécutées au moins une fois au niveau du code source. La formule pour calculer la couverture est :
Couverture des instructions = (Nombre d’instructions exécutées / Nombre total d’instructions dans le code source) * 100
Exemple : Supposons que nous ayons le code suivant :
if(condition1 or condition2)) {
print(“test 1 OK”)
}
else {
if(condition3) {
print(“test 2 OK”)
}
}
- Pour une couverture totale des instructions, il faut passer par chaque ligne de code au moins une fois. Cela signifie qu’un certain nombre de tests sont nécessaires :
- condition1=true, condition2=false, ce qui affichera “test 1 OK”
- condition1=false, condition2=false et condition3=true, ce qui affichera “test 2 OK”.
- Couverture des branches : dans cette technique, les scénarios de test couvrent toutes les branches du graphe de contrôle des flux. Toutes les issues (vraie ou fausse) de chaque condition sont couvertes au moins une fois. La formule utilisée pour la couverture des branches est :
- Couverture des branches = (Nombre de branches exécutées / Nombre total de branches dans le code) * 100
- Exemple : Pour le même code, bien que la couverture des instructions soit de 100 %, toutes les branches possibles ne sont pas couvertes. Vous aurez besoin d’un test supplémentaire où :
- condition1=faux, condition2=faux, condition3=faux - de cette façon, on couvre aussi le chemin faux dans le second if. Rien ne devrait s’imprimer dans ce cas de test,
- Couverture des conditions : une technique complète où tous les chemins sont testés. Elle garantit que chaque chemin de l'application est couvert par au moins un test. Elle est particulièrement utile pour les applications complexes. Exemple : Pour le code ci-dessus, il faut un test supplémentaire pour une couverture complète des conditions :
- condition1=faux, condition1=vrai, qui aura le même résultat que le premier test, mais couvre une condition différente pour atteindre le résultat.
Avantages & Inconvénients du Test « Boîte Blanche »
Voyons quels sont les avantages et les inconvénients du test en boîte blanche.
Avantages :
- Peut trouver des erreurs tôt dans le cycle de vie du développement logiciel
- Teste la structure interne du code.
- Teste la couverture et la logique du code.
- Améliore la connaissance de la base de code.
- Peut être utilisé pour tester les performances et la scalabilité.
Inconvénients :
- Fonctionne mieux à un niveau de test bas
- Nécessite une bonne maîtrise du langage de programmation du système
- Test limité du point de vue de l’utilisateur final
- Peut négliger des scénarios du monde réel
Quand Utiliser le Test en Boîte Blanche
Les tests en boîte blanche sont les mieux adaptés aux niveaux inférieurs, comme les tests unitaires et d’intégration. Cela aide à identifier les erreurs et les défauts tôt dans le processus de développement. Exécuter ces tests après chaque déploiement est une bonne idée, surtout lorsque l’on travaille dans un environnement CI/CD.
Le test en boîte blanche peut être utilisé pour tester la fonctionnalité, mais il peut aussi servir à déceler des vulnérabilités dans le système – ce qui serait difficile avec les techniques de test en boîte noire.
Test en Boîte Noire vs Boîte Blanche : Résumé
Voyons quelles sont les principales différences entre le test en boîte noire et le test en boîte blanche :
| Test en boîte noire | Test en boîte blanche |
| Aucune connaissance du fonctionnement interne n’est nécessaire. | Repose sur une bonne compréhension du code du système. |
| Réalisé principalement par l’équipe QA. | Habituellement effectué par les développeurs. |
| Se concentre sur le comportement du système. | Se concentre sur la logique et l’implémentation du logiciel. |
| Techniques : Partition d’équivalence Analyse des valeurs limites Table de décision État-transition | Techniques : Couverture des instructions Couverture des branches Couverture des conditions |
| Les scénarios peuvent être exécutés manuellement ou automatisés. | Se fait généralement par des tests automatisés. |
| Mieux adapté aux tests de plus haut niveau. | Fonctionne mieux aux niveaux de test inférieurs. |
| Teste du point de vue des utilisateurs finaux. | Teste d’un point de vue technique. |
Mais n’oublions pas que, même si chaque approche a ses avantages et ses inconvénients, il est recommandé d’utiliser les deux dans notre processus de test afin d’obtenir une bonne couverture de test et de code, et de trouver les défauts les plus importants.
Need expert help selecting the right Testing Software?
We’ve joined up with Crozdesk.com to give all our readers (yes, you!) access to Crozdesk’s software advisors. Just use the form below to share your needs, and they will contact you at no cost or commitment. You will then be matched and connected to a shortlist of vendors that best fit your company, and you can access exclusive software discounts!
Conclusions
Les tests en boîte noire et en boîte blanche sont deux approches différentes, et chacune répond à des besoins spécifiques durant le processus de développement. Tandis que les tests en boîte blanche sont principalement réalisés par les développeurs sur les niveaux de tests bas, et que les tests en boîte noire sont effectués par l’équipe QA à des niveaux supérieurs, leur utilisation conjointe s’avère être la plus efficace.
Si vous avez aimé cet article, abonnez-vous à la newsletter pour recevoir tous les nouveaux articles sur le test logiciel et l’assurance qualité !
