Backend Handbook
Leapwise
  • 👋Introduction
  • Software Design Principles & Clean Code
    • Atomicity
    • Modularity
    • Hierarchy
    • Loose coupling
    • Asynchronous programming
  • Development Practices
    • JavaDocs
    • Technical Debt
    • Testing Guidelines
      • The Importance of Test Automation
      • The Testing Pyramid
        • Unit Tests
        • Integration Tests
        • End-to-End Tests
      • Mutation Testing
      • Contract Tests
        • REST Controller Contract testing
        • OpenAPI Contract testing
      • Testing Frameworks
        • JUnit 5
        • Testcontainers
        • Mockito
      • Writing Clean Tests - Best Practices
    • Common library
    • Generic CRUD
    • Update Facade
  • Development Tools & Environment
    • Monitoring
    • Performance tuning
    • Multi-tenancy & Configuration Management
    • Git practices
    • CI/CD
    • Maven
  • Project Management
    • Jira
    • Confluence documentation
    • SCRUM
    • Our ways of working
  • LIFE AT LEAPWISE
    • Introduction
    • Who are we?
    • What do we do?
    • Our values
    • Hiring process
      • Hiring: A Mid Frontend Developer's Point of View
    • Benefits we offer
    • Onboarding process
      • Onboarding: A Senior Digital Marketing Specialist's perspective
    • Mentorship program
    • Career development
      • Trainings & certificates we offer
      • Career development: A Senior Software Developer's Insight
    • Community building
    • Juniorship
    • First-hand info from our first team member
    • Join our team
Powered by GitBook
LogoLogo

Company

  • About
  • Culture
  • Services

Insights

  • Leapwise Newsletter
  • Blog

© Leapwise

On this page

Was this helpful?

  1. Development Practices
  2. Testing Guidelines
  3. The Testing Pyramid

End-to-End Tests

End-to-end (E2E, also called full-stack or Broad Stack) testing is a software testing technique designed to verify the functionality and performance of an entire application. It simulates real-world user scenarios and replicates live data to ensure the application works as intended when all components are integrated.

The main goal is to identify bugs in the system and provide the application with the expected output. E2E testing provides insights into the application's performance from the end user's perspective, offering a thorough understanding of the software's quality before its release.

Benefits of End-to-End Testing

  • Faster Defect Detection: Identifies defects early, allowing for quicker and less costly fixes.

  • Improved Quality Assurance: Ensures all parts of the software work together and meet business requirements.

  • Increased Confidence: Validates software performance in real-world scenarios, assuring stakeholders of its reliability. It also verifies interactions between different layers and components of complex architectures.

  • Cost Reduction: Reduces costs by catching defects early, preventing expensive post-deployment fixes.

  • Better alignment with business requirements: Ensures the application meets business requirements, increasing user acceptance.

  • Efficient Testing Process: Streamlines testing by evaluating the application as a whole rather than in isolated parts.

Challenges of End-to-End (E2E) Testing

  • Flakiness: E2E tests frequently fail for unexpected reasons, often resulting in false positives. Complex user interfaces further increase the instability of these tests.

  • Debugging Complexity: Issues such as browser quirks, timing problems, animations, and unexpected pop-ups lead to frequent test failures, requiring extensive time spent on debugging.

  • Maintenance Overhead: E2E tests require significant maintenance effort, as changes in the user interface or backend services often necessitate test updates.

  • Slow Execution: These tests run slowly, which delays feedback and can impede the development process.

  • Resource Intensive: Running E2E tests in environments with multiple microservices is challenging because starting all services locally can overwhelm system resources, especially RAM.

  • Scalability Issues: As the number of microservices and components increases, scaling E2E tests becomes more complex, requiring robust infrastructure to manage.

Performing end-to-end testing typically involves using a combination of testing frameworks (e.g. Selenium) and tools to simulate user interactions, verify functionality, and ensure the application works as expected.

PreviousIntegration TestsNextMutation Testing

Last updated 11 months ago

Was this helpful?

Page cover image