web-dev-qa-db-fra.com

Quelle est la différence entre un cas Edge, un cas d'angle, un cas de base et un cas limite?

Je ne suis pas natif anglophone. Dans ma langue maternelle, je connais certains termes utilisés pour faire référence à la condition vérifiée pour arrêter une récursivité, et à la condition vérifiée pour les cas extrêmes, improbables ou super simples. En anglais, j'ai rencontré les termes "Edge case", "corner case", "border case" et "base case", mais je ne peux pas vraiment comprendre les différences et ce qui est utilisé pour faire référence à quoi; J'adorerais avoir un résumé des différences entre eux.

En particulier, je serais très heureux si quelqu'un pouvait fournir des annotations pour les lignes dans l'exemple de code suivant:

    int transmogrify(int n) {
1.      assert(n <= 1000000);
2.      if (n < 0) return -1;
3.      if (n == 1000000) return PRE_CALC;
4.      if (n == 0) return n+1;            // For stopping the recursion
5.      if (n == 1251) return 3077;
        return transmogrify(n-1);
    }

I pensez c'est:

  1. Verification sanitaire
  2. Vérification d'entrée
  3. Cas limite? Cas particulier? Cas d'angle?
  4. Cas de base? Cas limite?
  5. Cas d'angle? Cas particulier?
95
Oak

Je ne suis pas non plus un anglophone natif. Mais selon Wikipedia:

  • Cas de bord se produit à un paramètre de fonctionnement extrême (maximum ou minimum).
  • Cas d'angle se produit en dehors des paramètres de fonctionnement normal , en particulier lorsque plusieurs variables ou conditions environnementales sont simultanément à des niveaux extrêmes, même si chaque paramètre est dans la plage spécifiée pour ce paramètre . (Les "paramètres de fonctionnement normaux extérieurs" signifient évidemment quelque chose comme "une combinaison typique de paramètres de fonctionnement extérieurs", pas strictement "des paramètres de fonctionnement autorisés extérieurs". Autrement dit, vous êtes toujours dans l'espace de paramètres valide, mais près de son coin.)
  • cas limite se produit lorsque l'une des entrées est à la limite maximale ou minimale ou juste au-delà.
  • cas de base est l'endroit où récursivité se termine.

Ainsi, la nomenclature semble être totalement confuse, même si le cas de coin semble signifier quelque chose d'un peu différent (une combinaison de valeurs) que les cas de bord et de limite, qui sont définitivement synonymes. Il est probablement prudent de dire que les cas de bord, de coin et de limite sont la même chose dans le discours commun. Quelqu'un pourrait vouloir dire des choses différentes par chacun d'eux, mais il n'y a pratiquement pas d'accord commun.

Vos 1) et 2) sont ce que vous avez écrit, 3) est un cas de bord/limite, 4) est un cas de base et 5) est un cas spécial.

100
Joonas Pulakka

Quelles que soient les différences entre les mots, ce que vous utiliseriez pour décrire un test dépend de la sémantique (signification) du test, pas du code exact - Dans l'exemple fourni, la signification de chacun des tests n'est pas évidente. Cela mis à part, voici comment je les comprends:

  • Vérification de la santé mentale = Cela a-t-il même un sens? Par exemple, si votre application ne produit que des entiers, sqrt(-1) = et log(-1) ne sont pas définis.
  • Vérification d'entrée = Teste l'entrée utilisateur, par opposition à une structure de données interne ou la sortie d'une fonction. Par exemple, dans Bash [ $# -gt 0 ] Vérifie que vous avez obtenu au moins un paramètre d'entrée, qui peut également être un contrôle d'intégrité pour une commande comme find ou mail.
  • Vérification des bords/limites = L'entrée maximale ou minimale qui devrait produire une sortie correcte . Par exemple, une fonction qui ajoute simplement un à un nombre aura une plage de fonctionnement de <MIN_INT> à <MAX_INT> - 1, car une entrée plus petite que <MIN_INT> ne peut pas être fournie par l'utilisateur et une sortie plus grande que <MAX_INT> ne sera pas utile.
  • Contrôle de cas d'angle = Contrôle de limite plus complexe (un coin est une limite à deux dimensions), par exemple en combinant <MIN_INT> et <MAX_INT> dans un calcul.
  • Vérification des cas spéciaux = valeurs spéciales non évidentes, non limites , par exemple log(1 + the smallest floating point number).
26
l0b0