web-dev-qa-db-fra.com

Test de classe d'équivalence vs test de valeur limite

Je comprends le fonctionnement des tests d'équivalence.

En quoi est-il identique ou différent des tests de valeurs limites?

26
neuromancer

Test de classe d'équivalence
Le test CE, c'est quand vous avez un certain nombre d'éléments de test (par exemple des valeurs) que vous souhaitez tester, mais en raison du coût (temps/argent), vous n'avez pas le temps de tous les tester. Par conséquent, vous regroupez l'élément de test dans une classe où tous les éléments de chaque classe sont censés se comporter exactement de la même manière. La théorie est que vous n'avez besoin de tester qu'un seul de chaque élément pour vous assurer que le système fonctionne.
Exemple 1
Les enfants de moins de 2 ans voyagent gratuitement en bus. Les jeunes paient 10 $, les adultes 15 $ et les seniors paient 5 $.
Des classes:
Prix: 0 -> Âge: 0-1
Prix: 10 -> Âge: 2-14
Prix: 15 -> Âge: 15-64
Prix: 5 -> Âge: 65-infini

Exemple 2 (plusieurs paramètres)
Les téléphones portables K80, J64 et J54 fonctionnent Java 5. K90 et J99 fonctionnent Java 6. Mais il existe deux navigateurs possibles: FireFox et Opera, Les modèles J exécutent FF et les modèles K exécutent O.
Des classes:
Navigateur: FF, Java: 5 -> Téléphones: J64, J54
Navigateur: FF, Java: 6 -> Téléphones: J99
Navigateur: O, Java: 5 -> Téléphones: K80
Navigateur: O, Java: 6 -> Téléphones: K90

Dangers des tests de classe d'équivalence
Il existe un danger d'utiliser les tests CE, qui est rarement mentionné dans les livres de test, mais il est très important de s'en souvenir.
Tout simplement parce que deux éléments/valeurs sont supposés être dans la même classe et se comporter de la même manière, cela ne signifie pas qu'ils se comportent de la même manière.
Cela signifie que juste parce que vous testez une valeur de la classe, TOUTES les valeurs de la classe se comportent de la même manière. Mon exemple dans le monde réel est avec les téléphones portables qui avaient tous une certaine plate-forme Java. Ils étaient censés fonctionner tous de la même manière mais ils ne l'étaient pas en réalité. Donc, tester une seule valeur dans une classe est bon, mais pas assez bon. Le test CE est un bon outil, mais il n'est pas infaillible et soyez prudent avec lui. Si les cas de test sont bon marché et rapides (comme l'automatisation), testez plus, ou pourquoi ne pas tous les tester!

Test de la valeur limite
Le test BV est lorsque vous décidez de tester les valeurs sur le bord de chaque classe que vous avez identifiée. La théorie est que la plupart des défauts se situent sur les bords d'une classe. Exemple
Des classes:
Prix: 0 -> Âge: 0-1 (Valeurs limites 0, 1)
Prix: 10 -> Âge: 2-14 (Valeurs limites 2, 14)
Prix: 15 -> Âge: 15-64 (valeurs limites 15, 64)
Prix: 5 -> Âge: 65-infini (valeurs limites 65)

Critique du test de la valeur limite
. Et je n'ai jamais vu d'études prouvant que c'était le cas. 2) Le fait que vous devez utiliser les tests BV prouve que les tests EC sont défectueux puisque vous testez plus d'une valeur de chaque classe. 3) Il est facile à utiliser lorsque vous utilisez des valeurs comme des entiers. Mais quelle est la valeur limite des classes de modèles de téléphones ou de versions de navigateurs?

Test de la valeur limite cachée
Les valeurs limites d'une classe sont souvent basées sur la spécification du fonctionnement du système. Tout cela est bien, mais la plupart des systèmes contiennent des limites qui ne sont expliquées dans aucune spécification et vous devrez vous rechercher. Par exemple. "Combien de caractères puis-je mettre dans le champ de test avant que le système ne tombe en panne et ne se casse.
Exemples du monde réel
- Coller un million de caractères dans une zone de texte dans FireFox 3.5 lors de la victoire 7 le plante
- ReCaptcha a une limite de 16003 caractères, votre système gère-t-il le 413 qu'il lui renvoie si quelqu'un met 16004+ caractères dans le champ. Ou ça casse

Résumé
Les tests EC et BV sont de bons outils et vous devez les utiliser, mais ils ne sont pas parfaits et ne vous attendez pas à trouver tous les défauts en les utilisant. Utilisez votre savoir-faire sur le système ainsi que votre intelligence et votre intuition pour essayer plus d'articles et rechercher d'autres moyens pour lesquels il pourrait échouer. Et cherchez les frontières cachées!

66
Jonas Söderström

L'analyse des valeurs limites signifie simplement sélectionner des valeurs près des limites des classes. Donc, vous divisez toujours le domaine d'entrée en fonction des classes, puis au lieu de sélectionner des valeurs au milieu de la classe, utilisez les valeurs des limites.

Par exemple, si la condition d'entrée est comprise entre 20 et 70, vous disposez de trois classes d'entrée

  1. moins de 20
  2. entre 20 et 70
  3. plus de 70

puis pour l'analyse des valeurs limites, sélectionnez l'entrée = 19, 20, 21, 69, 70, 71. Ce type d'analyse détecte les erreurs sur les limites.

19
Vincent Ramdhanie

Le test d'équivalence doit être complété par le test de valeur limite.

Par exemple pour un test équivalent d'une fonction qui prend des valeurs entre 1 et 12
(disons des mois d'une année), les partitions seraient:

  • valeurs inférieures à 1 (0, -1, -2), partition non valide
  • valeurs comprises entre 1 et 12, partition valide
  • valeurs supérieures à 12, partition non valide
  • Pour les tests d'équivalence, il suffit de choisir une valeur comme entrée de test dans chacune de ces classes de partition. Cela signifierait des tests avec une valeur de -2,6, et 15 seraient considérés comme suffisants pour tester le comportement de la fonction. Mais ces valeurs n'attrapent pas erreur Off-by-one qui peut se produire assez souvent.

    Avec le test de la valeur limite, les entrées de test seraient: -1,0,1,11,12,13 (aux limites), ce qui rattraperait les erreurs de coup par coup.

    Je vois ces deux méthodes de test comme étant complémentaires l'une de l'autre.

    11
    sateesh

    L'analyse de la valeur limite fait partie ou sous-ensemble du partitionnement d'équivalence. Dans l'analyse des valeurs limites, au lieu d'une valeur aléatoire, seules les valeurs dans la limite sont sélectionnées.

    1
    Rajasankar