Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

The secret art of agile performance testing

841 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie, Bildung
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

The secret art of agile performance testing

  1. 1. The Secret Art of Agile Performance Testing<br />Alois Reitbauer, dynaTrace Software<br />
  2. 2. The Classical Approach<br />
  3. 3. Waterfallsarepretty<br />
  4. 4. But mightgetscary<br />
  5. 5. Dream<br />Iteration<br />ComfortZone<br />Test<br />Iteration<br />Reality<br />Iteration<br />Test<br />
  6. 6. Dream<br />Iteration<br />Iteration<br />ComfortZone<br />Test<br />Iteration<br />Iteration<br />Reality<br />Iteration<br />Test<br />Iteration<br />
  7. 7. NFRs and Maslow<br />
  8. 8. The Focus Problem<br />
  9. 9. Methodology<br />
  10. 10. The Agile Approach<br />
  11. 11. DefiningourStrategy<br />Start Early<br />Break in Pieces<br />Test Continuously<br />
  12. 12. Creating Focus<br />Automate<br />Risk<br />Regular Testing<br />Skip<br />Impact<br />
  13. 13. Frequency vs. Granularity<br />JUnit-based<br />Tests (2x day)<br />Total System<br />Tests<br />Long-running<br />Stabiltiy Tests<br />(2 w duration)<br />Granularity<br />Frequency<br />
  14. 14. Granularity<br />Comparability<br />Complexity<br />Quality<br />
  15. 15. Define KPIs<br />Throughput<br />Response Time<br />Memory Consumption<br />Other KPIs …<br />
  16. 16. Follow a Strategy<br />Monitor<br />GainVisibility<br />Resolve<br />Reduce ResolutionTime<br />Prevent<br />ProactivelyAvoidProblems<br />
  17. 17. Avoid Re-Runs<br /><ul><li>Whatcould happen?
  18. 18. Whichinformation do youwant?
  19. 19. Whatdescribesyoursystem?
  20. 20. Whatis different fromthe last run?</li></li></ul><li>Don´t Forget theReal World<br />
  21. 21. Lessonslearned<br />
  22. 22. Profilingis not enough<br />Goodforfindingproblems<br />Resultcomparisonhard<br />Only valid untilnextcheck-in<br />Toomuchwork<br />
  23. 23. The Life of a Log Statement<br />Enter the code<br />publicvoidfoo (){<br /> … // do something<br /> bar ();<br />}<br />publicvoid bar (){<br /> … // do somethingelse<br /> Logger.log (“executiontook“ + time);<br />}<br />
  24. 24. The Life of a Log Statement<br />Somebody changes something<br />publicvoidfoo (){<br /> … // do something<br />if (condition) <br /> bar ();<br />else<br />otherBar ();<br />}<br />publicvoid bar (){<br /> … // do somethingelse<br /> Logger.log (“executiontook“ + time);<br />}<br />
  25. 25. The Life of a Log Statement<br />Your code gets deprecated<br />publicvoidfoo (){<br /> … // do something<br />newBar ();<br />}<br />publicvoid bar (){<br /> … // do somethingelse<br /> Logger.log (“executiontook“ + time);<br />}<br />
  26. 26. Measurements<br />
  27. 27. Stability of Tests<br />
  28. 28. UseDedicated Hardware<br />Comparability<br />Stability<br /> Efficiency<br />
  29. 29. Trends in Unstable Tests<br />
  30. 30. Create Instability<br />.. addingsomevolatilityincreasesthelikelyness<br />todiscoverproblems …“<br />
  31. 31. Testing scalability<br />Small Dump Operations<br />Big Dump Operations<br />
  32. 32. Understandyourmeasurements<br />Response Time and GC<br />Response Time only<br />
  33. 33. Motivateyourteam<br />
  34. 34. Howtomakedeveloperswritetests<br />#1 Heroism<br />#2 Boomerang<br />#3 The otherguy<br />#4 Bug me not<br />#5 Feedback<br />#6 Code vs. Wine<br />#7 Newb vs. Noob<br />
  35. 35. Test Case Complexity<br />First<br />Start dynaTrace infrastructure<br />Whenready<br />Start n WebSphereinstances on servers … <br />Whenready<br />Start LoadtestagainstWebSphereservers<br />After loadteststart<br />Execute testcase<br />
  36. 36. Making complex things easy<br />    @DtdRemoteSud(<br />            host = "lab2",<br />            name = "WAS7.0",<br />            startupPriority = 1,<br />            postStartClosure = WaitForWebSphereSudIsUp.class<br />    )<br />    private SudInterfacewebSphereSud;<br />
  37. 37. Findingtheresponsiblecode<br />Version Control History Lookup<br />
  38. 38. E-Mail Notification<br />… betterhumans<br />
  39. 39. WrapUp<br /> Say „Yes“<br /> Focus<br />Define KPIs<br />RedefineDone<br /> Remove Barriers<br />Automate<br /> Monitor<br />Resolve<br />Prevent<br />
  40. 40. alois.reitbauer@dynatrace.com Mail<br />blog.dynatrace.com Blog<br />AloisReitbauerTwitter<br />

×