Einige Gedanken zu Performance Tests

Performance ist an sich ja immer ein Thema. Speziell vor einem Release gewinnt dies aber immer an Wichtigkeit. Und wenn man dann etwas messen soll, misst man häufig Mist. Wieso? Man misst entweder nicht das Richtige, man nutz falsche Werkzeuge oder geht von falschen Annahmen aus.

Für mich sind diese Punkte bei der Performance-Messung wichtig:

  • mehrmals Messen
  • Masseinheit muss zur Messung passen
  • Reproduzierbar sein
  • Ausreisser erkennen und entfernen
  • Bezug zur Realität und zum Einsatzgebiet haben
  • Kritisch das Ergebnis betrachten

 
Eine Messung ist keine Messung“ wurde uns an der Berufsschule beigebracht. Das war zwar nicht im Zusammenhang mit Performance, doch stimmt es auch in dem Bereich. Performance-Vergleiche auf der Basis einer einzigen Messung sind Riskant, wenn nicht sogar Gefährlich. Je nach dem was sonst auf dem System läuft ist die Messung komplett falsch. Eine Prüfung durch den Virenschutz zur falschen Zeit und man kann die Messung vergessen.
Mehrmals Messen und das Herausfiltern der Ausreisser kann vor solchen Verfälschungen schützen.
Aber Achtung: Nur weil es einen Wert gibt der massiv ausserhalb der anderen Werte liegt, kann man den nicht einfach entfernen. Kommt der Ausreisser in regelmässigen Abständen vor, muss man abklären was die Ursache ist. Läuft alle 10 Minuten ein Batchjob und alle 10 Minuten gibt es einen Ausreisser, dann ist ein Zusammenhang sehr wahrscheinlich.

Die Masseinheit muss zur Messung passen. Minuten als Einheit für Vorgänge die in Millisekunden ablaufen sind nutzlos. Aber auch das Messen von Sekunden für Tests die mehrere Stunden dauern ist meistens übertrieben. Ist es wirklich Relevant wenn ich auf 5 Stunden 30 Sekunden schneller und beim nächsten Test 10 Minuten langsamer bin? Wohl eher nicht.

Die Messung muss reproduzierbar sein. Wenn man die Messung wiederholt sollte man mindestens etwas Vergleichbares messen. Wenn eine Liste nicht mit exakt den gleichen Daten gefüllt werden kann, so muss mindestens die gleiche Anzahl an Einträgen der gleichen Objekte enthalten sein. Sonst ist man beim Vergleich von Äpfeln mit Birnen.

Will man aus seinen Messungen am Ende eine Aussage treffen können, muss der Test einen Bezug zur Realität haben. Das System für den Test muss vergleichbar mit der Produktion sein. Ein Test auf Windows für einen produktiven Einsatz auf Linux ist da wenig Aussagekräftig.

Nachdem man mehrmals auf vergleichbaren Systemen getestet hat, kann man immer noch daneben liegen. Wenn man das Falsche testet, nützt einem der ganze Aufwand nichts. Daher unbedingt überprüfen, ob das was man Testet auch wirklich das erwartete macht.

Zu guter Letzt sollte das Ergebnis immer kritisch betrachtet werden. Kann eine Abweichung bei 2 Funktionen wirklich so gross sein? Kann diese kleine Änderung wirklich so viel Einfluss auf die Geschwindigkeit haben? Hat man Zweifel sollte man lieber nochmals alles kontrollieren und seine Tests überprüfen lassen, bevor man seine Entscheidung trifft.

Soweit meine Meinung. Was ist für euch wichtig? Worauf legt ihr besonders wert? Freue mich auf euren Input.