Software Quality Plan - bounswe/bounswe2024group6 GitHub Wiki

Software Quality Plan for Bulingo

1. Objectives

  • Ensure the application meets functional requirements (e.g., quiz creation, user authentication).
  • Maintain high reliability and minimize defects through thorough testing.
  • Deliver a scalable and maintainable application.

2. Quality Standards

  • All code changes must pass pre-defined test cases and achieve at least 90% unit test coverage for critical modules.

a. Unit Testing

Purpose: Test individual modules of the Bulingo for correctness.

Target Modules:

  • User Authentication Module
    • Test valid/invalid login credentials.
    • Test register functionality
  • Quiz Creation Module
    • Validate input fields for quiz title, questions, and choices.
    • Test multiple choice suggestions and evaluate.
    • Test quiz submission and saving.
    • Test quiz review .
  • Quiz Attempt Module
    • Verify question loading and answer submission.
    • Test edge cases, such as submitting an incomplete quiz.
  • Post Module
    • Validate post views that would be compatible to follow/unfollow endpoints.
    • Test Comment endpoints .
    • Test Like/Unlike endpoints
  • Search Module
    • Verify searching results by title .
    • Test edge cases for testing.

Tools:

  • PyTest for Python backend.
  • React Testing Library for the frontend.

Metrics:

  • Code Coverage: Achieve 95% statement and branch coverage.
  • Pass Rate: Ensure 100% of critical tests pass.

b. Integration Testing

Purpose: Test interactions between modules, ensuring seamless operation. Target Scenarios:

  1. User Authentication ↔ Quiz Feed:
    • Verify that only authenticated users can access quizzes.
  2. Quiz Creation ↔ Database:
    • Ensure quizzes are correctly saved and retrieved from the database.
    • Ensure the multiple choices are relatable and correctly fetched from database.
  3. Quiz Attempt ↔ Results Module:
    • Verify results are calculated and displayed accurately after quiz completion.
  4. Post Module ↔ Database:
    • Ensure the related posts with chosen tags correctly fetched from database.
    • Ensure that the user can visualize post that he is allowed to see.
  5. User Authentication ↔ Post Feed:
    • Verify that only authenticated users can access the private posts.

Tools:

  • Postman for API interaction testing.