Master performance testing methodologies and tools.
Master performance testing methodologies and tools.
Understand different types of performance testing and their purposes
Content by: Paras Dadhania
Software Testing & QA Specialist
// Performance Testing Goals
const performanceGoals = {
"Response Time": {
"Page Load": "< 3 seconds",
"API Response": "< 1 second",
"Database Query": "< 500ms",
"Search Results": "< 2 seconds"
},
"Throughput": {
"Requests per Second": "1000+ RPS",
"Concurrent Users": "5000+ users",
"Data Processing": "10GB/hour",
"Transaction Rate": "500+ TPS"
},
"Resource Utilization": {
"CPU Usage": "< 80%",
"Memory Usage": "< 85%",
"Disk I/O": "< 70%",
"Network Bandwidth": "< 75%"
},
"Availability": {
"Uptime": "99.9%",
"Error Rate": "< 0.1%",
"Recovery Time": "< 5 minutes",
"Mean Time Between Failures": "> 30 days"
}
};
// Performance Testing Types
const testingTypes = {
"Load Testing": {
"Purpose": "Verify system behavior under normal load",
"Load Level": "Expected user load",
"Duration": "30-60 minutes",
"Focus": "Response time and throughput"
},
"Stress Testing": {
"Purpose": "Find breaking point of the system",
"Load Level": "Beyond normal capacity",
"Duration": "15-30 minutes",
"Focus": "System stability and recovery"
},
"Volume Testing": {
"Purpose": "Test with large amounts of data",
"Load Level": "Maximum data volume",
"Duration": "2-4 hours",
"Focus": "Data handling and storage"
},
"Spike Testing": {
"Purpose": "Test sudden load increases",
"Load Level": "Sudden spikes in traffic",
"Duration": "5-10 minutes",
"Focus": "System resilience"
}
};Test your understanding of this topic:
Learn load testing and stress testing methodologies and best practices
Content by: Yash Sanghavi
Software Testing & QA Specialist
// Load Testing Scenarios
const loadTestScenarios = {
"E-commerce Website": {
"Scenario 1": {
"Name": "Product Browsing",
"Users": 100,
"Duration": "30 minutes",
"Actions": [
"Login to system",
"Browse products",
"Add items to cart",
"View product details",
"Search products"
]
},
"Scenario 2": {
"Name": "Checkout Process",
"Users": 50,
"Duration": "20 minutes",
"Actions": [
"Login to system",
"Add items to cart",
"Proceed to checkout",
"Enter payment details",
"Complete purchase"
]
}
},
"API Load Testing": {
"Scenario 1": {
"Name": "User Authentication",
"RPS": 500,
"Duration": "15 minutes",
"Endpoints": [
"POST /auth/login",
"POST /auth/refresh",
"GET /auth/profile"
]
},
"Scenario 2": {
"Name": "Data Retrieval",
"RPS": 1000,
"Duration": "30 minutes",
"Endpoints": [
"GET /api/users",
"GET /api/products",
"GET /api/orders"
]
}
}
};
// Stress Testing Scenarios
const stressTestScenarios = {
"Gradual Load Increase": {
"Phase 1": "100 users for 10 minutes",
"Phase 2": "200 users for 10 minutes",
"Phase 3": "400 users for 10 minutes",
"Phase 4": "800 users for 10 minutes",
"Phase 5": "1600 users for 10 minutes"
},
"Sudden Load Spike": {
"Normal Load": "100 users for 5 minutes",
"Spike": "1000 users for 2 minutes",
"Recovery": "100 users for 5 minutes"
},
"Resource Exhaustion": {
"Memory Test": "Large data processing",
"CPU Test": "Complex calculations",
"Disk Test": "Heavy file operations",
"Network Test": "High bandwidth usage"
}
};Test your understanding of this topic:
Master Apache JMeter and other performance testing tools
Content by: Paras Dadhania
Software Testing & QA Specialist
// JMeter Test Plan Example
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2">
<hashTree>
<TestPlan testname="E-commerce Load Test">
<elementProp name="TestPlan.arguments" elementType="Arguments">
<collectionProp name="Arguments.arguments"/>
</elementProp>
<stringProp name="TestPlan.user_define_classpath"></stringProp>
<boolProp name="TestPlan.functional_mode">false</boolProp>
<boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
</TestPlan>
<hashTree>
<ThreadGroup testname="User Load Test">
<stringProp name="ThreadGroup.num_threads">100</stringProp>
<stringProp name="ThreadGroup.ramp_time">60</stringProp>
<stringProp name="ThreadGroup.duration">1800</stringProp>
<stringProp name="ThreadGroup.delay">0</stringProp>
<boolProp name="ThreadGroup.scheduler">true</boolProp>
</ThreadGroup>
<hashTree>
<HTTPSamplerProxy testname="Login Request">
<stringProp name="HTTPSampler.domain">api.example.com</stringProp>
<stringProp name="HTTPSampler.port">443</stringProp>
<stringProp name="HTTPSampler.protocol">https</stringProp>
<stringProp name="HTTPSampler.path">/auth/login</stringProp>
<stringProp name="HTTPSampler.method">POST</stringProp>
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
</HTTPSamplerProxy>
<hashTree>
<HeaderManager testname="HTTP Header Manager">
<collectionProp name="HeaderManager.headers">
<elementProp name="" elementType="Header">
<stringProp name="Header.name">Content-Type</stringProp>
<stringProp name="Header.value">application/json</stringProp>
</elementProp>
</collectionProp>
</HeaderManager>
</hashTree>
</hashTree>
</hashTree>
</hashTree>
</jmeterTestPlan>
// JMeter Performance Metrics
const jmeterMetrics = {
"Response Time": {
"Average": "Time taken for average response",
"Min": "Fastest response time",
"Max": "Slowest response time",
"90th Percentile": "90% of requests faster than this",
"95th Percentile": "95% of requests faster than this"
},
"Throughput": {
"Requests per Second": "Number of requests per second",
"Bytes per Second": "Data transfer rate",
"Transactions per Second": "Business transactions per second"
},
"Error Rate": {
"Error Percentage": "Percentage of failed requests",
"Error Count": "Total number of errors",
"Error Types": "Different types of errors"
}
};Test your understanding of this topic:
Learn key performance metrics and how to analyze test results
Content by: Yash Sanghavi
Software Testing & QA Specialist
// Performance Metrics Dashboard
const performanceDashboard = {
"Response Time Analysis": {
"Average Response Time": "1.2 seconds",
"95th Percentile": "2.8 seconds",
"99th Percentile": "5.1 seconds",
"Max Response Time": "12.3 seconds",
"Status": "Within SLA (< 3 seconds)"
},
"Throughput Analysis": {
"Requests per Second": "850 RPS",
"Peak RPS": "1200 RPS",
"Average RPS": "750 RPS",
"Target RPS": "1000 RPS",
"Status": "Below target"
},
"Resource Utilization": {
"CPU Usage": "65% (Target: < 80%)",
"Memory Usage": "72% (Target: < 85%)",
"Disk I/O": "45% (Target: < 70%)",
"Network Usage": "38% (Target: < 75%)",
"Status": "Within limits"
},
"Error Analysis": {
"Total Errors": "23",
"Error Rate": "0.8% (Target: < 1%)",
"4xx Errors": "15 (Client errors)",
"5xx Errors": "8 (Server errors)",
"Status": "Acceptable"
}
};
// Performance Bottleneck Analysis
const bottleneckAnalysis = {
"Database Bottlenecks": {
"Slow Queries": "5 queries > 2 seconds",
"Connection Pool": "85% utilization",
"Index Issues": "Missing indexes on 3 tables",
"Recommendations": [
"Optimize slow queries",
"Increase connection pool size",
"Add missing database indexes"
]
},
"Application Bottlenecks": {
"Memory Leaks": "2 potential leaks detected",
"Inefficient Algorithms": "3 functions need optimization",
"Synchronous Operations": "5 blocking operations found",
"Recommendations": [
"Fix memory leaks",
"Optimize algorithms",
"Implement async operations"
]
},
"Infrastructure Bottlenecks": {
"Server Capacity": "CPU at 85% during peak",
"Network Bandwidth": "75% utilization",
"Storage I/O": "Disk queue depth high",
"Recommendations": [
"Scale horizontally",
"Upgrade network capacity",
"Optimize storage configuration"
]
}
};Test your understanding of this topic:
Learn database performance testing techniques and optimization
Content by: Paras Dadhania
Software Testing & QA Specialist
// Database Performance Testing Tools
const dbTestingTools = {
"MySQL": {
"mysqlslap": "Load testing tool for MySQL",
"sysbench": "Benchmarking tool",
"MySQL Workbench": "Performance monitoring",
"pt-query-digest": "Query analysis tool"
},
"PostgreSQL": {
"pgbench": "Built-in benchmarking tool",
"pg_stat_statements": "Query statistics",
"pgAdmin": "Performance monitoring",
"EXPLAIN ANALYZE": "Query execution analysis"
},
"Oracle": {
"AWR (Automatic Workload Repository)": "Performance reports",
"ASH (Active Session History)": "Real-time monitoring",
"SQL Tuning Advisor": "Query optimization",
"Enterprise Manager": "Performance dashboard"
},
"SQL Server": {
"SQL Server Profiler": "Query tracing",
"Database Engine Tuning Advisor": "Index recommendations",
"Activity Monitor": "Real-time monitoring",
"Query Store": "Query performance tracking"
}
};
// Database Performance Test Scenarios
const dbTestScenarios = {
"Query Performance Test": {
"Scenario": "Execute complex queries under load",
"Metrics": [
"Query execution time",
"CPU usage per query",
"Memory consumption",
"I/O operations"
],
"Tools": ["mysqlslap", "pgbench", "AWR"]
},
"Concurrent User Test": {
"Scenario": "Multiple users executing queries simultaneously",
"Metrics": [
"Connection pool utilization",
"Lock contention",
"Deadlock occurrences",
"Response time degradation"
],
"Tools": ["sysbench", "pgbench", "LoadRunner"]
},
"Data Volume Test": {
"Scenario": "Performance with large datasets",
"Metrics": [
"Query performance with large tables",
"Index effectiveness",
"Memory usage patterns",
"Disk I/O patterns"
],
"Tools": ["Custom scripts", "Database-specific tools"]
}
};Test your understanding of this topic:
Continue your learning journey and master the next set of concepts.
Continue to Module 7