Skip to main content
Load testing websites requires understanding the difference between backend and frontend performance, choosing the right testing approach, and crafting realistic scenarios. This guide covers best practices for testing web applications with k6.

Testing Approaches

Website load testing can be approached from different angles depending on your goals:

Backend vs Frontend Performance

Backend Performance

What it tests: Application servers, APIs, database queries, server-side processingBenefits:
  • Suitable for high-load tests
  • Less resource-intensive
  • Tests early in development
  • Targets specific components

Frontend Performance

What it tests: Page rendering, JavaScript execution, asset loading, user interactionsBenefits:
  • Measures actual user experience
  • Tests browser compatibility
  • Validates visual elements
  • Captures end-to-end metrics
Best practice: Test both backend and frontend performance. Backend issues often worsen under load, while frontend performance stays relatively constant but represents the first mile of user experience.

Testing Methodologies

Protocol-Based Testing

Protocol-based testing simulates HTTP requests directly to application servers, bypassing the browser:
When to use:
  • Testing backend infrastructure
  • Generating high load
  • Component-level testing
  • Early development testing

Browser-Based Testing

Browser-based testing uses real browser instances to interact with your application:
When to use:
  • Testing frontend performance
  • Validating user interactions
  • Testing Single-Page Applications
  • Measuring actual user experience
Browser-based tests are more resource-intensive. Use fewer VUs compared to protocol-based tests.

Hybrid Load Testing

Combine protocol-based and browser-based testing for comprehensive coverage:
Recommended ratio: Use 95% protocol-based tests and 5% browser-based tests to balance load generation with frontend validation.

Component vs End-to-End Testing

Component Testing

Focus on specific functionalities or endpoints:
When to use:
  • Stress testing specific components
  • Finding breaking points
  • Debugging performance issues
  • Testing critical functionalities

End-to-End Testing

Simulate complete user journeys:
When to use:
  • Testing realistic user behavior
  • Validating entire workflows
  • Measuring cross-component performance
  • Production-like scenarios

Scripting Best Practices

Record User Journeys

Use the k6 browser recorder to capture real user sessions:

Correlate Dynamic Data

Extract values from responses for subsequent requests:

Handle Static Resources

Include CSS, JavaScript, and images to measure complete page load:

Use Realistic Think Time

Add variable delays to simulate human behavior:

Manage Cookies and Cache

Organize with Tags and Groups

Execution Considerations

Test Environments

1

Pre-production environments

Ideal for identifying issues early. Can be more aggressive with testing but may not match production exactly.
2

Production testing

Provides most accurate results but requires careful approach:
  • Use lower loads during peak hours
  • Schedule tests for off-peak times
  • Use synthetic monitoring for continuous validation
  • Ensure observability is ready

Load Generator Locations

On-Premises

Pros: Good for early development, uses existing infrastructureCons: May yield false positives due to network proximity

Cloud-Based

Pros: Realistic network latency, geographic distribution, easy scalingCons: Requires cloud access or firewall configuration

Complete Website Test Example

Recommendations Summary

  • Use browser-based testing
  • Focus on frontend performance metrics
  • Run end-to-end user flows
  • Test with realistic user counts