Published using Google Docs
Testing Assignment.docx
Updated automatically every 5 minutes

4  Testing

Testing is an extremely important component of most projects, whether it involves a circuit, a process, power system, or software.

The testing plan should connect the requirements and the design to the adopting test strategy and instruments. In this overarching introduction, given an overview of the testing strategy. Emphasize any unique challenges to testing for your system/design.

Our strategy is to test everything to ensure sustainability and redundancy for our software. We will strive for 100% code coverage for unit testing and for integration testing to cover most to all of our projected actions that can be taken by each role who can use the system.

Unique challenges that we may face standard TDD challenges throughout this process.

  1. Unit Testing

What units are being tested: How? Our goal will be to get as close to 100% unit test coverage as possible. We will be testing all of the methods for our microservices as well as using integration testing for the API.

Tools? For our backend we will be using both Node.JS and Python. For Node we will be unit testing with Jest and for python we will be unit testing with PyTest. For the front end we will be using Jest as well as React Testing Library for the testing of components. For integration testing we will be using Cypress. If we have time to implement behaviour testing we will be using Cucumber for that. For manual API testing we will be using postman. For react component testing we will be using storybook if we have time.

  1. Interface Testing

What are the interfaces in your design? Discuss how the composition of two or more units (interfaces) are being tested. Tools?

API’s for all microservices, which are implemented using docker containers, we will create tests for most API calls. We will use postman. Some examples would include:

  1. Integration Testing

What are the critical integration paths in your design? Justification for criticality may come from your requirements. How will they be tested? Tools?

In order to ensure that multiple components of systems work as expected when they are combined to produce a result, we will be testing the following these critical integration paths:

Testing will happen in the dev environment. These critical integration paths will be tested using Cypress.

  1. System Testing

Describe system level testing strategy. What set of unit tests, interface tests, and integration tests suffice for system level testing? This should be closely tied to the requirements. Tools?

Using a combination of unit testing, integration testing, and regression testing. We will ensure that each system component is functional, and communicate with other components successfully. The system will be in a microservice configuration, so we will test that each individual microservice functions correctly, and that they communicate successfully.

  1. Regression Testing

How are you ensuring that any new additions do not break the old functionality? What implemented critical features do you need to ensure they do not break? Is it driven by requirements? Tools?

Employ a CI/CD pipeline to ensure system integrity after every push. This will ensure the critical features of the admin, client, and viewer user interfaces do not break. Also, we will be ensuring the database is not poisoned with updated pushes. This will be driven by requirements by utilizing GitLab CI/CD.

  1. Acceptance Testing

How will you demonstrate that the design requirements, both functional and non-functional are being met? How would you involve your client in the acceptance testing?

When the application is mostly implemented we will complete a report of the overall look and feel of the product, and whether the business requirements are met. In this test we will execute several real life scenarios from the perspective of an end user. We will evaluate the software’s performance, and how well they comply with the requirements.

  1. Security Testing (if applicable)

For security testing this is important as our system will potentially be responsible for managing power grid systems. Testing the security will be a part of our integration testing as well as separate security testing measures such as pen testing our google cloud system to make sure that we have secured all our public facing elements of our project.

  1. Results

What are the results of your testing? How do they ensure compliance with the requirements? Include figures and tables to explain your testing process better. A summary narrative concluding that your design is as intended is useful.

The results of our testing will help us prove the business requirements are met. We are looking to be able to pass all the tests that we write.

Testing

Process

Outcome

Unit

PyTest

Jest

Prove all internal components are working through programmatic tests, All tests passed

Interface

Postman

Test the interfaces that are used to ensure expected results are used when using said interface.

Integration

Cypress

Ensure that multiple components of the systems work as expected when combined to produce a result

System

The whole Cypress testing Suite

Have complete end-to-end testing is done on the complete software to make sure the whole system works as expected.

Regression

CI/CD

Make sure that existing features/functionality that are used to work are not broken due to new code changes.

Acceptance

QA, does acceptance testing

Manual

Ensures the software meets the requirements of the clients or users. This is typically the last step before the

software is live

Security

QA, does security testing

Attempt to break a software’s security checks, to gain access to confidential data. This is crucial for our project because many consumers rely on energy.