Skip to content

Software Testing Policy

Simphiwe Nonabe edited this page Sep 29, 2023 · 13 revisions

Introduction

This Software Testing Policy outlines the quality assurance and testing procedures for FridgeToPlate, our software product developed as part of our final year computer science capstone project at Spice Girls Inc. It is designed to ensure the successful development and testing of FridgeToPlate, reflecting industry-standard practices and methodologies.

Purpose

The purpose of this policy is to:

  • Define the objectives and scope of software testing for the FridgeToPlate project.
  • Clarify the roles and responsibilities of team members involved in testing.
  • Describe the testing process and methodologies to be employed for FridgeToPlate.
  • Identify the types of testing to be conducted.
  • Define defect management procedures specific to FridgeToPlate.
  • Specify the requirements for the FridgeToPlate test environment.
  • Establish documentation standards tailored to FridgeToPlate.
  • Promote continuous improvement in our software testing practices for FridgeToPlate.

Scope

This policy applies exclusively to the development and testing of FridgeToPlate, our final year computer science capstone project at Spice Girls Inc. It covers all stages of the project, including design, development, testing, and documentation.

Policy Statements

Testing Objectives

Our testing objectives for FridgeToPlate are as follows:

  • To verify that FridgeToPlate functions as specified in the project requirements.
  • To identify and report defects promptly, ensuring the reliability and user-friendliness of FridgeToPlate.
  • To ensure the software meets high-quality standards, enhancing the user experience.
  • To validate that FridgeToPlate meets the goals and objectives of our client.

Responsibilities

  • Development Team: Develop FridgeToPlate in accordance with the project requirements and coding standards.
  • Testing Team: Plan, design, and execute tests to verify FridgeToPlate's functionality and reliability.
  • Project Lead: Oversee the testing process and allocate resources effectively.
  • Team Members: Collaborate on test cases, provide feedback, and assist in defect reporting for FridgeToPlate.

Test Environment

We maintain a dedicated test environment for "FridgeToPlate" that meticulously mirrors the production environment as closely as possible. This ensures that our testing efforts are accurate, reliable, and aligned with real-world conditions.

GitHub Actions Jobs

  • GitHub Actions Jobs: We use GitHub Actions to automate and streamline our Continuous Integration and Continuous Deployment (CI/CD) processes. These jobs are instrumental in running automated tests, validating code changes, and preparing our software for deployment. You can view our GitHub Actions Jobs here.

GitHub Actions Jobs

CI/CD Workflows

  • CI/CD Workflows: Our CI/CD workflows ensure that code changes are thoroughly tested and integrated seamlessly. These workflows encompass unit testing, integration testing, and deployment processes. Snapshots of some of our running CI/CD workflows can be viewed below.

CI/CD Workflows

Running Workflows

Our test environment, coupled with GitHub Actions, enables us to maintain a robust and efficient testing and deployment process for FridgeToPlate, ensuring the reliability and quality of our software.

Please refer to our GitHub Actions for more information.

4.4 Types of Testing

Unit Testing

  • Framework: For unit testing, we employ the Jest Framework.

    Jest Framework

  • Test Coverage: To monitor and assess our unit testing coverage, we utilize the CodeCov Framework. You can view our current test coverage status on CodeCov.

Our unit testing efforts are essential for verifying the correctness and functionality of individual components within our software, ensuring their reliability and robustness.

End-To-End Testing

  • Framework: For End-To-End Testing, we utilize the Cypress Framework. Cypress is instrumental in ensuring that our entire software application functions seamlessly from end to end.

    Cypress Framework

  • Visual Validation: In addition to functional testing, we incorporate visual validation into our End-To-End Testing process. Visual validation ensures that the user interface (UI) components of our application remain consistent and visually appealing across different scenarios.

    Visual Validation

End-To-End Testing with Cypress helps us validate the complete functionality and user experience of our software, ensuring that it performs as expected in real-world scenarios.

Perfomance Testing

To assess and optimize the performance of FridgeToPlate, we conducted performance testing using Google Lighthouse. Google Lighthouse is a trusted tool for evaluating web application performance and providing valuable insights into areas for improvement.

Performance Report

For detailed performance insights and recommendations, please refer to the following report:

LighthouseReports.zip

This performance report highlights key metrics related to web performance, including page load times, accessibility, best practices, and more. It serves as a valuable resource for optimizing FridgeToPlate to ensure a fast and responsive user experience

Penetration Testing

To assess the security of "FridgeToPlate" and identify potential vulnerabilities, we conducted penetration testing. Penetration testing is a crucial step in ensuring the robustness of our application's security measures.

Penetration Testing Report

For detailed insights into the results of our penetration testing and the identification of security vulnerabilities, please refer to the following report:

Reliability Testing

To ensure a seamless and reliable experience for our users, we have conducted extensive reliability testing for the "FridgeToPlate" application. This testing assesses the system's ability to perform consistently and without failures over time.

Test Summaries

For detailed results and summaries of our reliability tests, please refer to the following file:

These test summaries provide insights into the performance and stability of "FridgeToPlate" under various conditions. We use this information to identify and address any potential reliability issues and continuously improve the application's robustness.

4.5 Deployment

After all tests have passed, the application is then prepared for deploymentm using GitHub Actions. We maintain two distinct deployment environments:

  • Production: The Production environment serves as the live operational platform for our software product. This is where the final, thoroughly tested version of our software is deployed for use by our clients and end-users. The Production environment is meticulously maintained to ensure high availability, stability, and security to minimize any disruptions for end-users.

  • Development: The Development environment is a dedicated space where software development and testing activities are conducted. It serves as the primary workspace for our Development and Testing teams. Here, new features and enhancements are designed, coded, and tested before being promoted to the Production environment. The Development environment allows for controlled testing and validation without affecting the live system.

Please refer to our deployment environments for further details.

Defect Management

Defects identified during testing will be documented, prioritized, and tracked throughout the FridgeToPlate development process. Procedures for defect resolution and retesting will be established.

Documentation

All testing activities for FridgeToPlate, including test plans, test cases, test results, and defect reports, will be documented comprehensively to ensure transparency and accountability.

Continuous Improvement

We will regularly review and improve our testing processes for FridgeToPlate to adapt to project-specific needs and evolving best practices.

Compliance

All team members involved in software testing for FridgeToPlate are expected to comply with this policy. Non-compliance may impact the success of our capstone project.

Review and Revision

This policy will be reviewed periodically to ensure its relevance and effectiveness in the context of FridgeToPlate development. Revisions will be made as necessary to reflect changes in project requirements, technology, and industry best practices.