Question

Existe-il des bonnes ressources en ligne sur la façon de créer, de maintenir et de penser à l'écriture de routines de test pour l'analyse numérique de code?

L'une des limites que je peux voir quelque chose comme les essais de multiplication de matrice, c'est que l'évidence des tests (comme d'avoir une matrice étant l'identité) ne peuvent pas tester la fonctionnalité du code.

Il y a aussi le fait que vous traiter avec les grandes structures de données ainsi.Quelqu'un aurait-il quelques bonnes idées sur les façons d'aborder cette, ou qui ont des pointeurs vers de bons endroits pour chercher?

Était-ce utile?

La solution

Il semble que si vous avez besoin de réfléchir sur les tests de dans au moins deux façons différentes:

  1. Certaines méthodes numériques permettent pour certaines méta-pensée.Par exemple, inversible opérations vous permettent de configurer des cas de test pour voir si le résultat est à l'intérieur d'erreur acceptable limites de l'original.Par exemple, la matrice M-inverse fois la matrice M * vecteur aléatoire V devrait en résulter V encore une fois, au sein de certains acceptable des mesures d'erreur.
    Évidemment, cet exemple des exercices de la matrice inverse de la matrice de la multiplication et de la matrice-vecteur de multiplication.J'aime chaînes comme ces parce que vous pouvez générer beaucoup d'aléatoire des cas de test et obtenir des statistiques de la couverture qui serait un slog à écrire à la main.Ils n'exercent pas de simples opérations dans l'isolement, bien que.

  2. Certaines méthodes numériques ont fermé forme d'expression de leur erreur.Si vous pouvez mettre en place une situation avec une solution connue, vous pouvez comparer la différence entre la solution et le résultat calculé, la recherche d'une différence qui dépasse ces limites.

Fondamentalement, cette question illustre bien le problème que les essais de méthodes complexes bien nécessite une grande connaissance du domaine.Des références spécifiques aurait besoin d'un peu plus d'informations spécifiques à propos de ce que vous faites des tests.Je recommande vivement que vous avez au moins Steve Yegge est recommandé liste de livres sur la main.

Autres conseils

Si vous allez faire des calculs de matrice, utilisation LAPACK.C'est très bien testé le code.Des gens très intelligents ont travaillé depuis des décennies.Ils ont pensé profondément sur les questions que les non-initiés n'aurais jamais penser.

En général, je recommande deux types de tests:systématique et aléatoire.En systématique, je veux dire l'exploration cas de bord etc.Il aide si vous pouvez lire le code source.Souvent, les algorithmes de points de branchement:calculer de cette façon, les chiffres de cette gamme, cette autre façon pour les numéros dans une autre gamme, etc.Test des valeurs proches de la direction générale des points sur chaque côté parce que c'est là l'erreur d'approximation est souvent plus grand.

Aléatoire des valeurs d'entrée sont importantes.Si vous rationnellement choisir tous les cas de test, vous pouvez systématiquement éviter quelque chose que vous ne réalisent pas, c'est un problème.Parfois, vous pouvez faire bon usage de l'aléatoire des valeurs d'entrée, même si vous n'avez pas les valeurs exactes à tester.Par exemple, si vous avez le code pour calculer une fonction et son inverse, vous pouvez générer 1000 valeurs aléatoires et de voir si l'application de la fonction et son inverse remettez-vous près de l'endroit où vous avez commencé.

Découvrez un livre par David Gries appelé La Science de la Programmation.C'est prouver la justesse de programmes.Si vous voulez être sûr que vos programmes sont corrects (le point de prouver leur exactitude), ce livre est un bon endroit pour commencer.

Probablement pas exactement ce que vous cherchez, mais c'est la science de l'ordinateur de répondre à un logiciel d'ingénierie question.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top