Pour montrer que les systèmes sous-jacents sont sans faille, vous devez soit
a) Nécessité de prouver qu'ils sont sans faille
- Preuve mathématique
- Réellement possible uniquement pour des programmes triviaux
b) Faire un test exhaustif
- Possible uniquement pour les programmes triviaux et certains programmes simples
- Dès qu'un élément de chronométrage entre dans le test, il n'est pas possible de faire un test exhaustif car le temps peut être divisé indéfiniment.
- Au-delà des programmes triviaux, les options d'exécution possibles explosent de manière exponentielle.
Dans les tests de logiciels, le test exhaustif n’est utilisé que dans le test unitaire de certaines fonctions simples.
Exemple: vous voulez tester une entrée utf-8 de 8 caractères dans un champ, vous devez couper l’entrée de 8 fois la longueur maximale 6 d’utf-8 en octets, ce qui donne 8 * 6 = 48 octets pour avoir un quantités finies de possibilités.
Vous pouvez maintenant penser que vous devez uniquement tester les 1 112 064 points de code valides de chacun des 8 caractères, c.-à-d. 1 112 064 ^ 8 (disons 10 ^ 48) tests (ce qui est déjà peu probable), mais vous devez en réalité tester chaque valeur de chacun des 48 octets ou 256 ^ 48, ce qui correspond à environ 10 ^ 120, ce qui est la même complexité que les échecs par rapport au nombre total d'atomes dans l'univers d'environ 10 ^ 80.
Au lieu de cela, vous pouvez utiliser, par ordre croissant d’effort, et chaque test doit couvrir tous les précédents:
a) tester un bon et un mauvais échantillon.
b) couverture de code, c'est-à-dire. essayez de tester chaque ligne de code, ce qui est relativement simple pour la plupart des codes. Vous pouvez maintenant vous demander quel est le dernier 1% du code que vous ne pouvez pas tester: bugs, code mort, exceptions matérielles, etc.
c) couverture de cheminement, tous les résultats de toutes les branches de toutes les combinaisons sont testés. Vous savez maintenant pourquoi le département de test vous hait quand vos fonctions contiennent plus de 10 conditions. Aussi vous vous demandez pourquoi le dernier 1% ne peut pas être testé ... certaines branches sont dépendantes des branches précédentes.
d) test des données, testez un nombre d'échantillons avec une valeur de bordure, des valeurs problématiques communes et des nombres magiques, zéro, -1, 1, min +/- 1, max +/- 1, 42, rnd valeurs. Si cela ne vous donne pas une couverture de chemin, vous savez que vous n'avez pas capté toutes les valeurs de votre analyse.
Si vous le faites déjà, vous devriez être prêt pour l'examen de base ISTQB.