Test en boîte blanche
Le test en boîte blanche (white box testing, en anglais) est une méthode de test logiciel qui utilise le code source d'un programme comme base pour concevoir des tests et des scénarios de test pour l’assurance qualité (QA).
La structure du code est connue et comprise par le testeur lors des tests en boîte blanche, contrairement aux tests en boîte noire, une méthodologie dans laquelle la structure du code n'est pas connue par le testeur et les tests en boîte grise, une autre approche des tests d'assurance qualité dans laquelle une partie de la structure du code est connue par le testeur et l’autre non.
Ici, les entrailles du cadre et des composants internes d'une application sont examinées pour tester la structure et la conception internes du logiciel. Pour cette raison, on parle parfois de test en boîte transparente, en boîte claire ou en boîte de verre. Ce type de test peut également être appliqué aux tests unitaires, système et d'intégration.
Un test en boîte blanche consiste généralement à inspecter les chemins d'exécution possibles par l'intermédiaire du code pour trouver les valeurs d'entrée qui forceraient l'exécution de ces chemins. Le testeur, en général le développeur, vérifie le code d'après sa conception. Il est donc important que la personne qui exécute le test soit familière du code.
Pour tester celui-ci et vérifier que la sortie est bien celle attendue, des valeurs d'entrée sont exécutées par l'intermédiaire du code. Les testeurs peuvent calculer le plus petit nombre de chemins nécessaires pour tester, ou « couvrir », tout le code. Des outils d'analyse statique sont utiles pour exécuter cette tâche plus rapidement et de façon plus fiable.
Un test en boîte blanche ne permet pas à lui seul d'identifier les problèmes liés aux disparités entre les besoins ou la spécification réels et le code tel qu'il est implémenté. Il permet toutefois d'identifier certaines faiblesses du code, par exemple, des problèmes de flux de contrôle (comme des boucles fermées ou infinies ou du code impossible à atteindre) et des problèmes de flux de données.
L'analyse de code statique (par un outil) permet également de détecter ces problèmes, mais n'aide pas le testeur/développeur à comprendre le code aussi bien que lorsqu'il conçoit lui-même des scénarios de test en boîte blanche. Des aides ont été développées pour ce type de test, telles que les outils de test en boîte blanche Veracode, Googletest, Junit et RCUNIT.
Avantages et inconvénients
Le test en boîte blanche offre les avantages suivants :
- Test complet.
- Prise en charge des tests automatisés.
- Réutilisation possible des tests et des scripts de test.
- Prise en charge des tests aux stades précoces du développement.
- Optimisation du code par la suppression du code inutile.
- Aide à la détection d'erreurs ou de faiblesses dans le code.
Les inconvénients sont :
- Les scénarios de test sont souvent peu représentatifs de l'utilisation du composant.
- Le test en boîte blanche est souvent long, complexe et onéreux.
- Les testeurs doivent avoir une connaissance interne des logiciels.
- L'implémentation fréquente des logiciels requiert du temps et de l'argent.
Test en boîte blanche et test en boîte noire
Le test en boîte noire est l'opposé du test en boîte blanche. Il est impossible de voir le fonctionnement interne d'une boîte noire ; et, en réalité, vous n'avez pas besoin de le connaître. Ce type de test conçoit des scénarios pour couvrir toutes les conditions spécifiées pour le composant, puis utilise un outil de surveillance de couverture du code pour enregistrer la quantité de code exécutée pendant les scénarios de test.
Pour ces tests, à la différence des tests en boîte blanche, il n'est pas nécessaire de faire appel aux développeurs qui ont travaillé sur le code. Tous les testeurs doivent connaître les fonctions des logiciels. Autres différences, les tests en boîte noire reposent sur les spécifications des besoins et non sur celles de la conception et de la structure et ils servent pour les tests système et d'adoption plutôt que pour les tests unitaires, système et d'intégration.
Le terme « test en boîte grise » s'applique aux structures logicielles internes autres que le code source ; par exemple, des hiérarchies de classe ou des arbres d'appel de module.