QCM : Techniques de test logiciel — 27 questions

Questions et réponses du QCM

1. Quelle distinction caractérise le mieux les tests dynamiques et les tests statiques ?

Les tests dynamiques examinent les spécifications, tandis que les tests statiques comparent les sorties.
Les tests dynamiques vérifient la documentation, tandis que les tests statiques mesurent les performances.
Les tests dynamiques exécutent le programme, tandis que les tests statiques l’analysent sans exécution.
Les tests dynamiques analysent le code, tandis que les tests statiques exécutent plusieurs scénarios.

Les tests dynamiques exécutent le programme, tandis que les tests statiques l’analysent sans exécution.

Explication

Les tests dynamiques observent le comportement du programme après son exécution avec des entrées, alors que les tests statiques reposent sur une revue ou une analyse sans exécution. Confondre l’analyse du code avec l’exécution des scénarios inverse précisément cette distinction.

2. Dans quel ordre général un processus de test dynamique se déroule-t-il ?

Fournir des données, exécuter le programme, comparer le résultat à la spécification, puis produire un verdict.
Exécuter le programme, fixer le critère d’arrêt, produire les données, puis comparer la documentation.
Définir un verdict, choisir un oracle, analyser le code, puis fournir des données au programme.
Comparer le code à la spécification, générer un rapport, exécuter le programme, puis choisir les entrées.

Fournir des données, exécuter le programme, comparer le résultat à la spécification, puis produire un verdict.

Explication

Le processus fournit d’abord des données au programme, observe son résultat, le compare à la spécification grâce à un oracle, puis établit un verdict. Le critère d’arrêt ne remplace pas l’oracle : il indique dans quelles conditions la campagne de tests peut se terminer.

3. Quelle relation exprime l’objectif idéal d’un test pour tout élément valide du domaine d’entrée ?

Pour tout cas sélectionné dans TITI, on devrait avoir D(x)=P(x)D(x)=P(x).
Pour toute donnée valide x∈Dx \in D, on devrait avoir S(x)=TI(x)S(x)=TI(x).
Pour tout programme testé, on devrait avoir P(x)=D(x)P(x)=D(x) pour une entrée choisie.
Pour toute donnée valide x∈Dx \in D, on devrait avoir P(x)=S(x)P(x)=S(x).

Pour toute donnée valide $$x \in D$$, on devrait avoir $$P(x)=S(x)$$.

Explication

L’objectif idéal est de vérifier que le programme PP produit, pour chaque entrée valide xx du domaine DD, le résultat défini par la spécification SS. L’ensemble TITI ne représente qu’une sélection finie d’entrées et ne se substitue donc pas à la spécification.

4. Pourquoi un test exhaustif est-il généralement irréalisable ?

Les tests exhaustifs exigent une analyse du code qui empêche toute observation du comportement.
Le domaine d’entrée peut être immense ou infini, et l’exécution de tous les cas serait trop coûteuse.
Le domaine d’entrée contient peu de valeurs, mais leur comparaison demande une intervention manuelle.
Les spécifications ne peuvent pas décrire les résultats attendus pour des programmes exécutables.

Le domaine d’entrée peut être immense ou infini, et l’exécution de tous les cas serait trop coûteuse.

Explication

Un test exhaustif devient généralement impraticable lorsque le domaine d’entrée est très grand ou infini, car tous les cas demanderaient trop de temps et de ressources. La difficulté ne vient pas d’une impossibilité générale de spécifier les résultats attendus.

5. Comment définir correctement l’ensemble de test TITI par rapport au domaine d’entrée DD ?

TITI regroupe les sorties du programme, alors que DD contient les critères de couverture.
TITI est indépendant de DD et rassemble les résultats attendus par la spécification.
TITI est un sous-ensemble fini de DD, sélectionné pour représenter les données à tester.
TITI est le domaine complet des entrées, tandis que DD ne contient que les cas choisis.

$$TI$$ est un sous-ensemble fini de $$D$$, sélectionné pour représenter les données à tester.

Explication

L’ensemble TITI est une sélection finie d’entrées appartenant au domaine DD, conçue pour rendre les tests réalisables. Confondre TITI avec le domaine complet ignore que DD peut être beaucoup plus vaste, voire infini.

6. Laquelle constitue une condition valable pour arrêter une campagne de tests ?

Atteindre un critère de couverture défini pour les éléments visés.
Obtenir une première exécution sans erreur dans un scénario représentatif.
Observer que le programme produit une sortie plausible sur plusieurs entrées.
Remplacer l’oracle par une estimation lorsque les résultats semblent cohérents.

Atteindre un critère de couverture défini pour les éléments visés.

Explication

L’atteinte d’un critère de couverture fait partie des conditions possibles d’arrêt, au même titre que l’exécution des cas prévus, un seuil d’erreurs ou l’épuisement des ressources. Une première exécution réussie ne fournit pas à elle seule une justification suffisante pour arrêter les tests.

7. Une équipe vérifie les fonctionnalités d’un programme à partir de ses spécifications, sans consulter son code interne. De quel type de test s’agit-il ?

D’un test de dépendance entre les modules du programme.
D’un test fonctionnel, ou test en boîte noire.
D’un test structurel, ou test en boîte blanche.
D’un test de couverture fondé sur les flux internes.

D’un test fonctionnel, ou test en boîte noire.

Explication

Le test fonctionnel, appelé boîte noire, s’appuie sur les fonctionnalités et les spécifications sans utiliser la structure interne du programme. Un test structurel en boîte blanche examinerait au contraire le code ou un modèle de son organisation interne.

8. Pour analyser les conditions, les boucles et les flux de données d’un programme, quelle approche est la plus appropriée ?

Le test structurel, ou test en boîte blanche.
Le test de spécification indépendant de la structure interne.
Le test fonctionnel fondé sur les seules exigences externes.
Le test d’acceptation reposant sur la description en langage naturel.

Le test structurel, ou test en boîte blanche.

Explication

Le test structurel, ou boîte blanche, utilise la structure interne du programme, notamment ses conditions, ses boucles et ses flux de données. Les approches fonctionnelles décrivent plutôt les comportements attendus sans exploiter directement cette structure.

9. Quelle approche permet de générer manuellement un jeu de test de manière déterministe ?

Combiner des classes d’équivalence, des tests aux limites et des tables de décision
Tirer des données selon une distribution statistique sans critère de couverture
Rejouer rapidement des cas similaires issus d’un générateur aléatoire simple
Produire des mutations du programme sans analyser les entrées attendues

Combiner des classes d’équivalence, des tests aux limites et des tables de décision

Explication

La génération déterministe manuelle s’appuie notamment sur les classes d’équivalence, les tests aux limites, les tables de décision, les diagrammes d’états et les critères de couverture. Le rejeu rapide de cas similaires caractérise plutôt la génération aléatoire simple.

10. Quelle séquence décrit correctement une génération semi-aléatoire guidée par l’expérience ?

Recenser les erreurs, modéliser ces erreurs, créer les tests correspondants, puis maintenir le modèle
Tirer des valeurs sans contrainte, répéter les mêmes cas, puis supprimer les doublons obtenus
Identifier les actions, remplir les colonnes, simplifier les variantes, puis vérifier les résultats
Définir les bornes, former les classes, sélectionner un représentant, puis couvrir chaque classe

Recenser les erreurs, modéliser ces erreurs, créer les tests correspondants, puis maintenir le modèle

Explication

Cette méthode commence par le recensement des erreurs possibles, se poursuit par la construction et la couverture d’un modèle d’erreurs, puis inclut sa maintenance. La génération aléatoire simple ne repose pas sur ce modèle et peut rejouer des cas similaires.

11. À quelle condition un ensemble de données forme-t-il une classe d’équivalence pour une propriété testée ?

Ses données doivent appartenir à des bornes différentes afin de représenter plusieurs comportements
Ses données doivent être choisies au hasard pour éviter toute hypothèse sur le système
Ses données doivent correspondre à des actions distinctes dans une table de décision
Ses données doivent produire un comportement comparable et présenter une probabilité similaire d’erreur

Ses données doivent produire un comportement comparable et présenter une probabilité similaire d’erreur

Explication

Une classe d’équivalence regroupe des données ayant le même comportement vis-à-vis de la propriété testée et une probabilité similaire de générer une erreur. Des comportements distincts doivent plutôt conduire à des classes séparées.

12. Quelle démarche réalise correctement un partitionnement en classes d’équivalence ?

Choisir plusieurs valeurs valides, ignorer les entrées invalides, puis vérifier les actions obtenues
Définir les actions attendues, regrouper les résultats, puis déduire les entrées qui les produisent
Énumérer toutes les combinaisons d’entrées, supprimer les doublons, puis tester chaque combinaison restante
Repérer les entrées valides et invalides, créer les classes correspondantes, puis les couvrir par des tests

Repérer les entrées valides et invalides, créer les classes correspondantes, puis les couvrir par des tests

Explication

Le partitionnement identifie d’abord les entrées valides et invalides, construit les classes associées, puis sélectionne des tests jusqu’à couvrir chaque classe. Écarter les entrées invalides laisserait une partie importante du comportement sans test.

13. Pour un numéro de département métropolitain compris entre 1 et 95, comment classer les valeurs 11, -30 et 100 ?

11 est valide, tandis que -30 est inférieur à la borne et 100 supérieur à la borne
Les trois valeurs sont invalides, car aucune ne représente une limite exacte de l’intervalle
11 est supérieur à la borne, tandis que -30 est inférieur à la borne et 100 est valide
11 est inférieur à la borne, tandis que -30 est valide et 100 supérieur à la borne

11 est valide, tandis que -30 est inférieur à la borne et 100 supérieur à la borne

Explication

L’intervalle [1–95] constitue la classe valide, donc 11 y appartient ; -30 relève de la classe située sous 1 et 100 de celle située au-dessus de 95. Les deux valeurs extérieures représentent deux types d’invalidité distincts.

14. Que représente une table de décision dans le contexte des tests ?

Les états successifs d’un programme et les événements provoquant leurs transitions
Les erreurs possibles regroupées selon leur fréquence d’apparition dans le système
Les valeurs frontières nécessaires pour séparer les classes valides et invalides d’une entrée
Les actions à effectuer pour différentes combinaisons de valeurs des conditions d’entrée

Les actions à effectuer pour différentes combinaisons de valeurs des conditions d’entrée

Explication

Une table de décision décrit de façon concise les actions associées aux combinaisons de valeurs des conditions d’entrée. Les frontières, les erreurs et les transitions relèvent d’autres techniques de conception des tests.

15. Lorsqu’une table de décision est testée, combien de cas de test génère-t-on en principe ?

Un cas de test par action, avec des entrées sélectionnées parmi les valeurs invalides
Un cas de test par ligne, avec une valeur choisie au milieu de chaque condition
Un cas de test par condition, avec une combinaison indépendante pour chaque entrée
Un cas de test par colonne, avec des valeurs conformes aux conditions et aux valeurs du variant

Un cas de test par colonne, avec des valeurs conformes aux conditions et aux valeurs du variant

Explication

Chaque colonne représente un variant de la table et doit être couvert par un cas de test utilisant des valeurs conformes. Le nombre de lignes correspond aux conditions et aux actions, et ne détermine pas directement le nombre de tests.

16. Si trois conditions possèdent respectivement 3, 2 et 4 valeurs, combien de combinaisons sont possibles ?

12 combinaisons, obtenues par le produit 3×2×23 \times 2 \times 2
6 combinaisons, obtenues par la différence 4+3−14 + 3 - 1
9 combinaisons, obtenues par la somme 3+2+43 + 2 + 4
24 combinaisons, obtenues par le produit 3×2×43 \times 2 \times 4

24 combinaisons, obtenues par le produit $$3 \times 2 \times 4$$

Explication

Le nombre de combinaisons se calcule en multipliant le nombre de valeurs possibles de chaque condition, soit 3×2×4=243 \times 2 \times 4 = 24. Le nombre de lignes d’une table renvoie aux conditions et aux actions, pas au total des combinaisons.

17. Pourquoi le test aux limites sélectionne-t-il des valeurs situées sur les frontières des classes d’équivalence ?

Parce que les erreurs apparaissent fréquemment lors du changement de classe
Parce que chaque frontière correspond à une transition d’état du logiciel
Parce que les valeurs internes sont difficiles à comparer entre elles
Parce que les frontières contiennent toujours les valeurs les plus représentatives

Parce que les erreurs apparaissent fréquemment lors du changement de classe

Explication

Les frontières sont ciblées parce que les erreurs de programmation y apparaissent souvent, notamment lors du traitement des valeurs limites. Les valeurs internes peuvent représenter une classe, mais elles ne constituent pas la zone privilégiée pour détecter les erreurs de frontière.

18. Pour tester une classe d’équivalence, quelles valeurs faut-il généralement générer ?

Une valeur médiane et plusieurs valeurs éloignées des frontières
Une valeur minimale et une valeur maximale choisies hors de la classe
Une valeur médiane et une ou plusieurs valeurs situées aux bornes
Une valeur aléatoire et une valeur moyenne prises dans une autre classe

Une valeur médiane et une ou plusieurs valeurs situées aux bornes

Explication

La stratégie consiste à représenter l’intérieur de la classe par une valeur médiane et ses frontières par une ou plusieurs valeurs aux bornes. La valeur médiane ne remplace donc pas les valeurs qui ciblent les frontières.

19. Pour une entrée valide comprise entre 1 et 95, quelles valeurs sont les premières invalides de part et d’autre de cette classe ?

-1 et 97
0 et 96
1 et 95
2 et 94

0 et 96

Explication

La classe valide commence à 1 et se termine à 95 ; les premières valeurs situées juste à l’extérieur sont donc 0 et 96. Les valeurs 1 et 95 sont les bornes valides, tandis que -1 et 97 sont plus éloignées.

20. Pour une condition conjonctive comportant M prédicats, quelle sélection de cas permet de tester les prédicats aux limites de leur vérité ?

Un cas médian par prédicat et un cas où toutes les conditions sont inversées
Un cas où un seul prédicat est vrai et M cas où tous sont juste faux
M cas où tous sont simultanément faux et un cas où tous sont largement vrais
Un cas où tous sont juste vrais et M cas où un seul est juste faux

Un cas où tous sont juste vrais et M cas où un seul est juste faux

Explication

Il faut choisir un cas où tous les prédicats sont juste vrais, puis un cas par prédicat dans lequel ce seul prédicat est juste faux. Cette construction vérifie séparément l’effet de la frontière de chaque condition.

21. Qu’est-ce qu’une transition dans un diagramme états-transitions ?

Le passage d’un état à un autre provoqué par des conditions et des événements
La liste des données conservées dans un état pendant l’exécution du logiciel
La représentation d’un état final atteint après l’arrêt de toutes les activités
La description statique d’un état initial avant toute interaction avec l’application

Le passage d’un état à un autre provoqué par des conditions et des événements

Explication

Une transition désigne le changement d’état déclenché par des conditions programmées et des événements externes. Un état décrit une situation de l’application, tandis qu’une transition décrit le passage entre deux situations.

22. Que représente synthétiquement un diagramme états-transitions ?

La structure détaillée du code et l’organisation de ses fonctions internes
Les résultats attendus pour chaque combinaison de paramètres de l’application
Les valeurs d’entrée valides et invalides regroupées par classes d’équivalence
Les relations entre les états, les événements et les transitions d’une application

Les relations entre les états, les événements et les transitions d’une application

Explication

Un diagramme états-transitions synthétise les relations entre les états d’une application, les événements et les transitions. Il ne décrit pas directement la structure interne du code ni un ensemble de classes d’équivalence.

23. Lors de la construction d’un diagramme états-transitions, quelle distinction faut-il respecter entre l’état initial et les états finaux ?

L’état initial décrit une sortie, tandis que les états finaux indiquent le point de départ
L’état initial marque le départ, tandis que les états finaux décrivent les situations de sortie
L’état initial regroupe tous les états actifs, tandis que les états finaux désignent les événements externes
L’état initial correspond au premier événement, tandis que les états finaux sont les transitions invalides

L’état initial marque le départ, tandis que les états finaux décrivent les situations de sortie

Explication

La construction commence par la définition du point de départ, c’est-à-dire l’état initial, puis identifie les situations de sortie, c’est-à-dire les états finaux. Confondre ces deux catégories inverse le sens du parcours de l’application.

24. Quels types de couverture peuvent fournir les cas de test dérivés d’un diagramme états-transitions ?

La couverture des classes numériques, des moyennes ou des valeurs médianes
La couverture des interfaces graphiques, des performances ou de la consommation mémoire
La couverture des fonctions internes, des variables locales ou des lignes exécutées
La couverture des états, des transitions ou de séquences particulières et invalides

La couverture des états, des transitions ou de séquences particulières et invalides

Explication

Les tests issus d’un diagramme états-transitions peuvent viser tous les états, toutes les transitions, ou des séquences précises, y compris invalides. Ils ne correspondent pas directement à une couverture structurelle du code ou à un partitionnement numérique.

25. Sur quoi les tests boîte noire se concentrent-ils principalement ?

Sur les fonctionnalités du logiciel à partir de ses spécifications
Sur la structure du code à partir de ses instructions et de ses branches
Sur les performances matérielles à partir de la consommation des ressources
Sur les états internes à partir des variables et des appels de fonctions

Sur les fonctionnalités du logiciel à partir de ses spécifications

Explication

Les tests boîte noire utilisent les spécifications pour définir des cas qui vérifient les fonctionnalités observables du logiciel. La structure interne du code relève plutôt de l’approche boîte blanche.

26. Quel avantage les tests boîte noire peuvent-ils apporter lorsqu’ils sont mis en œuvre tôt dans le développement ?

Ils peuvent prouver que toutes les branches internes du code sont exécutées
Ils peuvent révéler des oublis et contribuer à préciser les spécifications
Ils peuvent garantir que chaque cas particulier du domaine d’entrée sera découvert
Ils peuvent supprimer la nécessité de définir des résultats attendus pour les fonctionnalités

Ils peuvent révéler des oublis et contribuer à préciser les spécifications

Explication

Réalisés tôt, ces tests peuvent mettre en évidence des fonctionnalités oubliées et aider à clarifier les spécifications avant que les erreurs de réalisation ne soient amplifiées. Ils ne garantissent ni la couverture de toutes les branches ni la découverte de chaque cas particulier.

27. Quelle limite caractérise les tests boîte noire concernant certains cas d’utilisation ?

Ils ignorent les défauts rencontrés dans les scénarios nominaux et les valeurs frontières
Ils révèlent principalement les erreurs de structure interne plutôt que les défauts fonctionnels
Ils peuvent manquer des erreurs propres à des cas particuliers ni nominaux ni situés aux limites
Ils détectent difficilement les erreurs fonctionnelles lorsque les résultats attendus sont définis

Ils peuvent manquer des erreurs propres à des cas particuliers ni nominaux ni situés aux limites

Explication

Les tests boîte noire peuvent ne pas révéler une erreur qui ne se manifeste que dans un cas d’utilisation très particulier, hors des scénarios nominaux et des limites. Cette limite concerne la sélection des cas testés, et non une incapacité générale à vérifier les fonctionnalités.

Révisez avec les flashcards

Mémorisez les réponses avec 50 flashcards sur Techniques de test logiciel.

Quelle différence principale existe entre tests dynamiques et tests statiques ?

Les tests dynamiques exécutent le programme, les tests statiques l'analysent sans exécution.

Quelles étapes comprend un processus de test dynamique ?

Fournir des données, exécuter, comparer au spécification, produire un verdict.

Quelle égalité idéale doit être garantie pour toute donnée valide x∈Dx \in D ?

P(x)=S(x)P(x)=S(x)

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Techniques de test logiciel.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM