ScholarGate
Assistant

Tests logiciels

Le test logiciel est l'exécution dynamique d'un programme avec des entrées sélectionnées afin de détecter les défauts et de s'assurer que le logiciel se comporte comme prévu.

Trouver un sujet avec PaperMindBientôtFind papers & topics
Tools & resources
Télécharger les diapositives
Learn & explore
VidéoBientôt

Definition

Le test logiciel est l'activité de conception et d'exécution de cas de test — des entrées associées à des résultats attendus — afin de révéler les écarts entre le comportement réel et le comportement requis, et d'estimer la fiabilité du logiciel.

Scope

Ce sujet aborde les niveaux de test (unitaire, d'intégration, système, d'acceptation) ; les techniques de boîte noire telles que le partitionnement en classes d'équivalence, l'analyse des valeurs limites et les tests combinatoires ; les techniques de boîte blanche basées sur des critères de couverture de code ; les tests de régression, de performance et exploratoires ; l'automatisation des tests ; ainsi que la théorie de l'adéquation et de la couverture des tests.

Core questions

  • Comment les cas de test efficaces sont-ils sélectionnés à partir d'un espace d'entrée d'une taille ingérable ?
  • Quels critères de couverture mesurent l'adéquation d'une suite de tests ?
  • Comment les niveaux de test, de l'unitaire à l'acceptation, se complètent-ils ?
  • Comment les tests peuvent-ils être automatisés et intégrés dans le pipeline de livraison ?

Key theories

Conception de tests boîte noire et boîte blanche
Les techniques de boîte noire dérivent les tests de la spécification par partitionnement et analyse des limites, tandis que les techniques de boîte blanche dérivent les tests de la structure du code guidées par des critères de couverture ; les deux sont complémentaires.
Critères de couverture et d'adéquation des tests
Les critères d'adéquation tels que la couverture des instructions, des branches et des conditions, ainsi que les critères basés sur des modèles pour les graphes de flux de contrôle et de données, fournissent des objectifs mesurables quant à l'exhaustivité avec laquelle une suite de tests exerce un programme.

Clinical relevance

Le test est le moyen le plus couramment pratiqué pour s'assurer que le logiciel se comporte correctement avant sa mise en production ; des tests automatisés bien conçus détectent les régressions précocement, soutiennent la refactorisation et la livraison continue, et sont essentiels pour un logiciel fiable.

Evidence & guidelines

La norme ISO/IEC/IEEE 29119 fournit des standards internationaux pour les processus, la documentation et les techniques de test logiciel, et le domaine de connaissance des tests logiciels du SWEBOK offre une vue d'ensemble consensuelle.

History

Le test est passé du débogage ad hoc à une discipline avec le traitement systématique de Myers en 1979 ; la théorie de la couverture, les tests basés sur des modèles et l'automatisation des tests se sont développés au cours des décennies suivantes, et le développement piloté par les tests (test-driven development) et l'intégration continue ont fait des tests automatisés une pratique agile fondamentale.

Debates

Quelle est la pertinence des tests automatisés
L'équilibre optimal entre les tests unitaires, d'intégration et de bout en bout automatisés est un sujet de débat ; la pyramide de tests privilégie de nombreux tests unitaires rapides par rapport aux tests de bout en bout lents, mais les critiques soulignent que cet équilibre dépend du type de système et du risque.

Key figures

  • Glenford Myers
  • Paul Ammann
  • Jeff Offutt
  • Boris Beizer

Related topics

Seminal works

  • myers2011
  • ammann2016
  • swebok2014

Frequently asked questions

Pourquoi ne pouvons-nous pas tester toutes les entrées possibles ?
L'espace des entrées possibles et des chemins d'exécution est astronomiquement vaste, voire infini, pour la plupart des programmes, rendant les tests exhaustifs irréalisables ; les tests sélectionnent plutôt des cas représentatifs et des cas limites en utilisant des techniques systématiques pour maximiser la détection des défauts par test.
Quelle est la différence entre les niveaux de test ?
Le test unitaire exerce les composants individuels de manière isolée, le test d'intégration vérifie leurs interactions, le test système évalue l'ensemble du système par rapport à ses exigences, et le test d'acceptation confirme qu'il répond aux besoins des utilisateurs ; chaque niveau cible différents types de défauts.

Methods for this concept

Related concepts