2011-08-02 5 views
0

J'ai besoin d'un algorithme pour générer automatiquement des cas de test en fonction d'un ensemble de variables dépendantes. Le langage de mise en œuvre n'a pas vraiment d'importance.Génération de cas de test

Comme un exemple simplifié:

Supposons que je teste la fonction F (a, b, c, d)

  1. A peut être a1, a2, a3
  2. b peut être b1 , b2
  3. c peut être c1, c2, c3
  4. D peut être d1, d2 si a = a1, d2, d3, d4 si a = a2, d5 si a = a3

Comment puis-je générer toutes les combinaisons d'arguments?

[a1, b1, c1, d1] [a2, b1, c1, d3] [a2, b1, c1, d4]

et ainsi de suite?

Répondre

0

Cela semble relativement spécial. En supposant que vous avez commandé vos paramètres afin que la liste des possibilités pour un paramètre ne dépend que des paramètres « précédents », vous devriez être en mesure de faire quelque chose comme:

recursiveTestAllCombinations(previousParameters) 
{ 

    if (length(previousParameters) == numberOfParameters) 
    { 
    performTest(previousParameters) 
    return; //end of recursion 
    } 


    possibilitiesForCurrentParameter = getPossibilities(currentParameterIndex, previousParameters) 

    foreach (p in possibilitiesForCurrentParameter) 
    { 
    parameters = previousParameters 
    parameters.append(p); 
    recursiveTestAllCombinations(parameters) 
    } 
} 

recursiveTestAllCombinations([]) 

La méthode getPossibilities définirait vos conditions pour les paramètres :

getPossibilities(previousParameters) 
{ 
    if (length(previousParameters) == 0) 
    { 
    return [a1, a2, a3]; 
    } 
    .. 
    if (length(previousParameters) == 3) 
    { 
    if (previousParameters[0] == a1) return [d, d2]; 
    .. 
    } 
} 
1

Ce que vous voyez est formellement connu sous le nom de test combinatoire. Vous pouvez lire plus à ce sujet here. Vous pouvez trouver de nombreux outils en ligne mais j'ai un bon succès en utilisant CTE-XL et PICT

Aucun d'eux ne génère de code, mais générera les combinaisons pour vous.

0

Peut-être quelques-uns des liens dans the question and answers here might be worth following up on. La question fondamentale que vous devez vous poser est de savoir si cela vaut la peine de générer toutes les combinaisons (ce pourrait être le cas). L'approche de Phadke permet de choisir un sous-ensemble bien sous-échantillonné de toutes les combinaisons. Ce n'est pas un test exhaustif, mais ça donne une très bonne couverture.

Phadke'sdesign of experiments approche pour sélectionner les valeurs des paramètres pour tester les systèmes (logiciels). En résumé, l'approche utilise des valeurs minimales, typiques et maximales des paramètres de test (méthode) et les fait varier en fonction d'un appropriately chosen Taguchi array.

+0

Le lien de Phadke est mort. – Jon

+0

@Jon: Trouvé un travail. Merci pour l'information! –