Wednesday, 5 February 2020

Performance Driven Development

 What is PDD and Need of PDD


•PDD is just TDD applied to Performance Testing.
•Measure and log performance metrics
•Fail or Pass the test run based on thresholds
•Kick of the process in the early stages of Development
•Take the qualitative decision.
•Integrate with CICD

Dimensions of PDD

       A system’s performance can be analysed along three dimensions
•Is it fast? (enough) —  Latency and Throughput within limits
•Does it scale? — Vertical & Horizontal scaling
•Is it reliable? (enough)— Load and degrade point.
•Performance can be measured with Disk IO, Network IO, Memory and CPU time.


Core Performance Principles

            •Memory is faster than disk - much faster - and memory is cheap.
•Object allocation and garbage collection is slow.
•Data formats and data structures make a big difference in speed.
•Asynchronous IO scales better than synchronous IO.
•Single threaded performance is a prerequisite for multithreaded performance.
•Shared memory (or disk) concurrency is bad because it usually leads to lots of contention when the system gets busy.
•Keep low memory footprint.

JConsole & JVisualVM
•Basic monitoring – CPU, Memory, Classes and Threads
•Remote JVM Monitoring
•JMX Support
•Deep Visual Representation in the form of Graphs
•Heap Dump, Thread Dump.
Other Tools
   •SoapUI
   •Artillery