Hat jemand vorübergehende Unit-Tests durchgeführt?
Ich bin mir nicht einmal sicher, ob ein solcher Jargon geprägt wurde oder nicht, aber es geht darum, zu testen, dass Operationen innerhalb von zeitlichen Grenzen ablaufen. Ich habe ein paar Algorithmen und ich möchte testen, dass ihre Ausführungszeit wie erwartet zunimmt, und ich denke, ähnliche Tests könnten für IO verwendet werden, und was nicht, irgendwie wie test_timeout oder so etwas.
Da die Hardware jedoch die Ausführungsgeschwindigkeit beeinflusst, erscheint sie nicht trivial. Also habe ich mich gefragt, ob jemand schon einmal so etwas probiert hat und ob sie ihre Erfahrung teilen könnten.
Danke
Bearbeiten: Versuchen Sie, eine Liste von Dingen zusammenzustellen, die in dieser Situation behandelt werden müssen
Nur einige Notizen aus meiner Erfahrung ... Wir kümmern uns um die Leistung vieler unserer Komponenten und haben einen sehr uneinheitlichen Rahmen, um sie zu trainieren und zeitlich zu bestimmen (im Nachhinein hätten wir nur CppUnit
oder% co_de verwenden sollen) % wie wir es für Unittests machen). Wir bezeichnen diese "Komponenten-Benchmarks" eher als Unittests.
Das engste, was ich darüber weiß, dass in eingebaut ist, ist zeitgesteuerte Tests , die in JUnit 4 hinzugefügt wurden. Dies könnte verwendet werden, um sicherzustellen, dass die Leistung eines Algorithmus nicht abnimmt, wenn die Eingabegröße zunimmt.
Wenn Sie überprüfen möchten, ob die Zeit zunimmt, sollte die Hardware verschiedener Maschinen keine Rolle spielen, wenn Sie nicht nach absoluten Werten suchen, sondern nach relativen Änderungen. Oder verpasse ich hier etwas?
Ich denke, Sie könnten Regressionstests für die Laufzeiten von Einheitentests durchführen. Bei vielen Unit-Test-Frameworks erhalten Sie in der Regel einen Report, der testname, executiontime angibt. Ich weiß, dass Junit / Surefire es tut. Im Grunde können Sie dies mit früheren Läufen vergleichen und feststellen, ob signifikante Änderungen stattgefunden haben. Wenn Sie dies alles in einer Datenbank (mit dem Hostnamen) beibehalten, können Sie die Ausführungszeiten für die gleiche Laufzeitumgebung mit früheren Testläufen vergleichen. Auf diese Weise schreiben Sie nicht wirklich Tests für die Leistung aber Sie behaupten nur separat, dass es keine wesentlichen Änderungen in der Ausführungszeit gab.
Tags und Links unit-testing