Performance Testing 101, code.talks commerce 2018 [DE]

Performance Testing 101, code.talks commerce 2018 [DE]

Dies sind die Slides zu meinem "Performance Testing 101" Talk, den ich auf der code.talks commerce 2018 in Berlin gehalten habe.

Abstrakt:
Performancetests sind nicht nur ein wichtiges Instrument, um ein System und dessen Laufzeitumgebung zu verstehen, sondern auch, um es auf seine Stabilität und Skalierbarkeit zu überprüfen – nicht-funktionale Anforderungen, die im e-Commerce-Bereich mitunter erfolgsentscheidend sein können. Ob Stabilität auch während einer Sales-Aktion vorhanden ist oder der Nutzer und potentielle Kunde von durchgängig niedrigen Request-/Response-Raten profitiert, geben über kurz oder lang den Ausschlag für Erfolg oder Misserfolg. Der Talk zeigt auf, wie solche und vergleichbare Fragen mit Performancetests geklärt werden können und wie professionelle Shopsysteme ganz prinzipiell von regelmäßiger Testpraxis profitieren, indem er abstrakte Testszenarien und -methoden mit konkreten Anwendungsfällen abgleicht.

19f1245e673133f1f5b36a1a658f8c1d?s=128

Sebastian Cohnen

April 15, 2018
Tweet

Transcript

  1. 2.

    Sebastian Cohnen · @tisba EHLO commerce.codetalks.de • Sebastian Cohnen (@tisba)

    • Background Beratung und Entwicklung • Fokus auf Performance und Architektur • Gründer & CTO StormForger.com
  2. 5.

    Sebastian Cohnen · @tisba Performance Fähigkeit eines Systems eine Aufgabe

    in einer
 definierten Dimension zu erledigen = Effizienz eines Systems
 "1 Server schafft 250 rps mit p99 250ms"
  3. 8.

    Sebastian Cohnen · @tisba Skalierbarkeit capacity 0 1000 2000 3000

    4000 resources 5 10 15 20 25 30 Effektivität mit der die Kapazität durch Ressourcen gesteigert werden kann
  4. 12.

    Wenn dein System schnell für einzelne Benutzer ist, aber langsam

    unter Last. https://www.flickr.com/photos/jamespaullong/with/714577655/
  5. 14.
  6. 17.

    –Wikipedia “In software engineering,
 performance testing is in general,
 a

    testing practice performed to
 determine how a system performs
 in terms of responsiveness and stability
 under a particular workload.” https://en.wikipedia.org/wiki/Software_performance_testing
  7. 18.

    Sebastian Cohnen · @tisba Performance Tests • System anregen mit

    einer definierten Last • Verhalten beobachten • Eigenschaften verifizieren • Verhalten verstehen
  8. 20.

    Performance Tests • Sammlung nicht-funktionaler Testmethoden • Nicht ganz trennscharf

    zu definieren • Unterschiedliche Ziele und Perspektiven Load Testing Stress Testing Spike Testing Soak Testing Endurance Testing Resilience Testing Configuration Testing Scalability Testing
  9. 23.

    Sebastian Cohnen · @tisba Performance Testing Maturity • gar keine

    Tests • Tests bei Problemen in Produktion • Tests (kurz) vor großen (Sales & Marketing) Aktionen * • regelmäßige Tests * * • Tests als reguläres, integriertes DevOpsQA Instrument * * * * *
  10. 24.

    –Allison McKnight, Etsy (@aemcknig) “Without a performance culture, performance is

    not sustainable” https://speakerdeck.com/aemcknig/building-performance-for-the-long-term#4
  11. 25.

    Sebastian Cohnen · @tisba Herausforderungen • (in der Regel) kein

    Tooling-Problem • organisatorische Hürden, z.B. Buy-In (Management & Team) • Sichtbarkeit in die eigenen Systeme • Anfangen
  12. 27.

    Sebastian Cohnen · @tisba Verständnis aufbauen • Eigene Anwendung •

    System & Softwarearchitektur • Umgebung (Infrastruktur, Abhängigkeiten, …) • Verwendete Dienste und deren Verhalten
  13. 28.

    Sebastian Cohnen · @tisba (Performance) Messen • Transparenz für das

    Thema herstellen • Sichtbarkeit bei der Durchführung von Perf Tests • Metriken ohnehin wichtig für den Betrieb
  14. 30.

    Sebastian Cohnen · @tisba 5 Schritte zu Perf Tests™ •

    Stakeholder zusammenbringen • Ziele & Scope definieren • Anforderungen ermitteln • Am Wer? und Was? arbeiten • Gemeinsam Tests durchführen - Entwicklung Betrieb QA Produkt Management Marketing
  15. 31.

    Sebastian Cohnen · @tisba Stakeholder Zusammenbringen • Entwicklung, Betrieb, QA,

    Produktentwicklung, Management und Marketing • Warum? Performance (Testing) ist ein hochgradig orthogonales Thema! • Alle Teile spielen bei Vorbereitung, Planung und Durchführung eine Rolle
  16. 32.

    Sebastian Cohnen · @tisba Ziele definieren • Ziele vorher definieren

    (Warum testen wir?) • Wichtig! Ziele (und Anforderungen) immer von der Fachseite her denken und definieren ☝ • Ein Ziel kann zunächst sehr einfach sein, z.B. “Black Friday gut überstehen” oder “Wir wollen 20% schneller werden”.
  17. 33.

    Sebastian Cohnen · @tisba Womit anfangen zu testen? • System

    Under Test (SUT) definieren • richtigen Scope finden • Perimeter/Ende-zu-Ende Tests • Komponenten/Service Tests
  18. 34.

    System Under Test • Testing “von oben” (Ende-zu-Ende) oder "seitlich"

    gegen einzelne Services • Für Fachseite sind in der Regel nur integrative Tests interessant • Tests einzelner Services zwecks Trouble Shooting (technische Perspektive)
  19. 35.

    Sebastian Cohnen · @tisba Anforderungen ermitteln • Annahmen zu Nicht-funktionale

    Anforderungen (NFA) treffen • Hilfestellung via "Baseline" Performance Tests und Performance Budgets • Einfache Anforderungen könnten sein: “Seiten unter 2s ausliefern”, “10k Checkouts pro Stunde”, … • Auch hier: Einfach anfangen, lernen, verbessern, repeat! • Sanity Checks machen!
  20. 36.

    Sebastian Cohnen · @tisba - Entwicklung Betrieb QA Szenarien •

    Bouncing Visitor • Returning Customer • Walk-In Customer • … Produkt Management Marketing Workloads • Black Friday Peak Hour • Average Peak Hour • 3 Hour Fire Sale • … Wer? Was?
  21. 37.

    Sebastian Cohnen · @tisba Gemeinsam Testen • Vor allem bei

    den ersten Tests alle Stakeholder involvieren! • GO! • Setup, Annahmen und Findings präsentieren • Szenarien Sanity checken oder überarbeiten • Repeat!
  22. 39.

    Sebastian Cohnen · @tisba Fazit • Performance (Testing) ist ein

    orthogonales Thema • Pragmatismus über Perfektion • Annahmen herleiten, festlegen und dokumentieren • von der Fachseite her an Probleme und Anforderungen herangehen • Anfangen!