Outline of the Software Quality Plan - bounswe/bounswe2024group11 GitHub Wiki

Quality Objectives

  • Ensure major functionalities are tested and meet specified requirements. Testing will encompass both positive cases (correct functionality) and negative cases (handling of errors and unexpected inputs).
  • Ensure most of critical paths have test coverage.Special attention is given to thoroughly test all edge cases, possible input combinations, and potential error states within these critical areas.
  • Validate end-to-end (E2E) integration for core features. This involves testing real-world scenarios that simulate actual usage, ensuring data flows seamlessly across all layers of the application.

Testing Strategy

  • Unit Testing
    • Objective: Validate individual components or functions for expected behavior.
    • Tools: DjangoREST (Python) including APITestCase & APIClient.
    • Coverage Goal: To have at least a certain percentage of code coverage for critical fields in the response body and status.
    • Frequency: Performed during feature branch merging and regular builds.
  • Integration Testing
    • Objective: Test combined parts of the application to ensure they work together.
    • Tools: APITestcase (for API integration tests) to test logical consistency between different API endpoints (such as after upvoting a question, after viewing the detail of that question, the response should reflect the effect of the previous upvote event)
    • Frequency: Performed during feature branch merging and regular builds.

Test Coverage Criteria

  • Unit tests for at least 70% of critical methods/functions: Identify and prioritize testing for critical methods/functions, ensuring coverage for core logic, and data handling.
  • Validation for necessary edge cases and error handling aswell.
  • Integration tests covering APIs, services, and data flow: Comprehensive testing should ensure that data flows as expected between components (e.g., data is correctly processed by APIs, services, and models), and that APIs correctly serve or consume data from connected systems.