Vor kurzem habe ich meine Gruppe dazu gedrängt, mehr Tests beim Schreiben ihres Codes einzubeziehen. Es gab einige große Fehler, deren Behebung viel länger dauerte, als es wahrscheinlich nötig gewesen wäre, da wir kein gutes Testverfahren eingerichtet hatten.
Ich vermute jedoch, dass die Verwendung geeigneter Tools zur Automatisierung (oder Optimierung) des Prozesses sicherlich nützlich wäre. Andererseits kenne ich die verschiedenen Optionen für C ++ - Testsuiten nicht und weiß nicht, wie ich mich zwischen ihnen entscheiden soll.
Gibt es Richtlinien, nach denen gesucht werden muss - und gibt es Richtlinien, die speziell auf numerische Anwendungen ausgerichtet sind?
Ich habe kürzlich mit googletest ein paar numerische Bibliotheken getestet, an denen ich arbeite, und bin sehr zufrieden damit. Sie können ziemlich einfache Tests sehr schnell schreiben oder Sie können komplizierte Tests schreiben, die eine Dateninitialisierung usw. erfordern. Es bietet auch (wie ich sicher, dass es viele andere tun) Möglichkeiten, Gleitkommavergleiche einfach und nicht bitweise durchzuführen.
quelle
Wenn Sie Ihren Code mit CMake erstellen , ist der ctest- Mechanismus die naheliegende Wahl. Sie können Ihren Code manuell über den Befehl testen
ctest
und umfangreiche nächtliche Tests über CDash durchführen .quelle
Für unsere computerbiologische C ++ - Bibliothek ( Chaste ) verwenden wir http://cxxtest.com/ . Dies ist recht einfach zu bedienen, funktioniert gut und bietet einige Makros zum Testen mit
assert()
style-Anweisungen. Für das wissenschaftliche Rechnen sind dies im Allgemeinen einfache direkte Vergleiche mitTS_ASSERT_EQUALS(a,b)
oder numerische Vergleiche mitTS_ASSERT_DELTA(a,b,tolerance)
.Zusätzliche Makros können einfach mit diesen grundlegenden Makros geschrieben werden, um auch Ihre eigenen Vektoren / Matrizen zu vergleichen. Nützlicherweise können Sie auch überprüfen, ob Ihr Code in bestimmten Situationen entsprechende Warnungen und Fehlermeldungen ausgibt. Sie können einige Beispiele in den
test
Ordnern unseres Quellcodes hier durchsuchen : https://chaste.cs.ox.ac.uk/trac/browser/trunkquelle