Skip to content

Latest commit

 

History

History
65 lines (41 loc) · 2.91 KB

adr-18-testing-strategy.md

File metadata and controls

65 lines (41 loc) · 2.91 KB

ADR-18: Testing Strategy

Status

Adopted

Context

Given the complexity and scale of our application, it's imperative to ensure the quality and reliability of our software across all platforms - backend, frontend, and mobile. We need robust testing strategies across unit testing, integration testing, and end-to-end testing. Here are the considerations:

For Java/Spring Boot (Backend)

  1. Unit Testing:

    • JUnit: A popular and widely used testing framework for Java.
    • Mockito: For creating mock objects.
  2. Integration Testing:

  3. End-to-End Testing:

For JavaScript/React (Frontend)

  1. Unit Testing:

  2. Integration Testing:

    • Enzyme: JavaScript testing utility by Airbnb.
  3. End-to-End Testing:

    • Cypress: A fast, reliable, and capable testing tool.

For Dart/Flutter (Mobile App)

  1. Unit Testing:

    • Flutter Test: Provides a rich set of testing features built into Flutter.
  2. Integration Testing:

    • Flutter Driver: The Flutter equivalent of Selenium for mobile applications.
  3. End-to-End Testing:

    • Appium: An open-source tool for automating mobile apps.

Decision

Given the technologies and frameworks adopted for our application development:

  • For backend tests, we're leveraging JUnit for unit tests, Spring Boot Test for integration tests, and RestAssured for end-to-end tests.
  • For frontend, we're adopting Jest and React Testing Library for unit tests, Enzyme for integration tests, and Cypress for end-to-end tests.
  • For mobile, we've chosen Flutter Test for unit tests, Flutter Driver for integration tests, and Appium for end-to-end tests.

Consequences

Pros:

  • Robustness: Comprehensive test coverage ensures better software reliability.
  • Quick Feedback Loop: Efficient unit and integration tests offer quick feedback during development.
  • Cross-Platform Mobile Testing: Tools like Appium allow for testing across different mobile platforms.

Cons:

  • Overhead: Multiple testing tools and libraries can introduce additional overhead in terms of maintenance.
  • Learning Curve: Each tool or framework may come with its own learning curve for the development team.