Frage

Gibt es gute online-Ressourcen, wie zu erstellen, zu pflegen und zu denken, über das schreiben von test-Routinen für numerische analysis code?

Eine der Einschränkungen, die ich sehen kann, für so etwas wie Test-matrix-Multiplikation ist, dass die offensichtliche tests (wie eine matrix die Identität) kann nicht vollständig zu testen, die Funktionalität des Codes.

Auch, es ist die Tatsache, dass Sie sind in der Regel der Umgang mit großen Daten-Strukturen.Hat jemand einige gute Ideen über Möglichkeiten, dies zu nähern, oder Zeiger, um gute Plätze zu suchen?

War es hilfreich?

Lösung

Es klingt, als wenn Sie brauchen, zu denken, über Tests, die in mindestens zwei verschiedene Möglichkeiten:

  1. Einige numerische Methoden, erlauben, für einige meta-denken.Für Beispiel, invertierbar-Vorgänge ermöglichen Ihnen das einrichten Testfälle, um zu sehen, ob das Ergebnis innerhalb akzeptabler Fehler Schranken des Originals.Für Beispiel, matrix M-inverse mal die matrix M * random vector V sollte im Ergebnis V erneut, um in einige akzeptable Maßnahme Fehler.
    Offensichtlich ist dieses Beispiel übungen, matrix inverse, matrix-Multiplikation matrix-Vektor-Multiplikation.Ich mag Ketten wie diese, da Sie erzeugen können, eine ganze Menge von zufälligen Testfällen und bekommen statistischen Erfassung-das wäre ein slog zum schreiben von hand.Sie nicht wahrnehmen, einzelne Operationen in isolation, obwohl.

  2. Einige numerische Methoden haben eine geschlossene form Ausdruck Ihrer Fehler.Wenn Sie können eine situation mit einer bekannten Lösung ist, können Sie dann vergleichen Sie die Differenz zwischen der Lösung und das Ergebnis der Berechnung, auf der Suche nach ein Unterschied, der überschreitet diese Grenzen bekannt.

Grundsätzlich ist diese Frage zeigt das problem, dass das testen von komplexen Methoden erfordert sehr viel Fachwissen.Spezifische Referenzen erfordern würde, ein wenig mehr spezifische Informationen über das, was Sie testen wollen.Ich würde auf jeden Fall empfehlen, dass man zumindest Steve Yegge das empfohlene Buch Liste auf der hand.

Andere Tipps

Wenn du gehst zu tun matrix-Berechnungen verwenden, LAPACK.Dies ist sehr gut getesteten code.Sehr intelligente Menschen haben es seit Jahrzehnten.Sie haben gedacht, der tief über Themen, die die Uneingeweihten würde nie denken.

Im Allgemeinen würde ich empfehlen, zwei Arten von Tests:systematische und zufällige.Durch systematischen ich meine Erkundung von edge-Fällen, etc.Hilft es, wenn Sie können, Lesen Sie den source-code.Oft algorithmen haben Zweig Punkte:berechnen Sie auf diese Weise für die zahlen in diesem Bereich, diese andere Art und Weise für die zahlen in einem anderen Bereich, etc.Testen Sie Werte nahe der Verzweigung Punkte auf beiden Seiten, da, wo die Annäherung Fehler ist oft am größten.

Random-input-Werte sind auch wichtig.Wenn Sie Rational wählen alle Testfälle, können Sie systematisch vermeiden Sie etwas, was Sie nicht begreifen, ist ein problem.Manchmal können Sie machen gute Verwendung von random-input-Werte, auch wenn Sie nicht die genauen Werte zum testen vor.Zum Beispiel, wenn Sie code zum berechnen einer Funktion und Ihrer Quantile, erzeugen Sie 1000 zufällige Werte und sehen, ob die Anwendung der Funktion und Ihrer inversen Sie wieder in der Nähe wo Sie begonnen haben.

Check-out ein Buch von David Gries genannt Die Wissenschaft der Programmierung.Es geht darum, zu beweisen der Korrektheit von Programmen.Wenn Sie sicher sein wollen, dass Ihre Programme korrekt sind (zu dem Punkt, der zum Nachweis Ihrer Richtigkeit), dieses Buch ist ein guter Ort, um zu starten.

Wahrscheinlich nicht genau das, was Sie suchen für, aber es ist die informatik Antwort auf ein software-engineering-Frage.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top