La première chose que je dois dire - refactor it! Décomposer en plusieurs instructions if qui seraient plus faciles à valider, inverser la logique et quitter tôt. Il est difficile de donner des suggestions plus détaillées sans voir le code et le contexte.
Une autre chose, si (b == 3000700)
, puis &&(b>=30 && b<=33)
renvoie false, ce qui rend cette partie de l'instruction ||(b==3000700)
inutile. Peut-être que c'était censé être (a == 3000700)
?
En ce qui concerne les cas de test ... Encore une fois sans voir l'extrait de code complet et en connaissant le contexte, il est un peu difficile de fournir des suggestions significatives. Mais je vais essayer quand même. Regardons les "valeurs critiques" pour chaque variable.
- variable a:
3000710
, tout autre
- variable b:
3000700, [30, 33], any other
- Variable c:
1, [4, 6], any other
- variable v:
1.0.9, 2.0.0, any other
En utilisant la théorie des tests (partition d'équivalence et de la valeur limite analyse), nous pouvons limiter la liste des valeurs "critiques" ci-dessus.
[30, 33] => 30, 31, 33 (The value outside of this range is already covered by "any other")
[4, 6] => 4, 5, 6 (The value outside of this range is already covered by "any other". Though we did't really change anything in this case)
Nunit a un attribut [Combinatorial]
qui génère des cas de test pour toutes les combinaisons possibles des éléments de données individuelles prévues pour les paramètres de l'essai.
* Les hypothèses utilisées: les variables a, b, c
sont de type int variable v
est une chaîne
Le code ressemblerait à quelque chose comme ça:
[Test, Combinatorial]
public void FirstTest(
[Values(3000710, 0)] int a,
[Values(30, 31, 33, 3000700, 0)] int b,
[Values(1, 4, 5, 6, 0)] int c,
[Values("1.0.9", "2.0.0", "")] string v)
{
RunTestMethod(a, b, c, v);
}
Vous avez juste besoin pour stocker les données de test générées sur l'exécution des tests
Vous devez spécifier la technologie utilisée afin que d'autres utilisateurs puissent vous indiquer les ressources pertinentes. Quel langage de programmation et quel cadre de test utilisez-vous? – vijoc
En fait, je ne me soucie pas de la langue, je veux juste trouver une méthode (algorithme) réalisable ou un outil open source pour résoudre le problème. – user940178