-
Notifications
You must be signed in to change notification settings - Fork 5
Software Quality Assurance Plan
This document describe the test coverage criteria, the unit testing approach we are choosing and the other means of quality assurance we will be using.
Test Coverage Objectives:
- Statement Coverage: XX%
- Branch Coverage: XX%
In order to make sure that we achieve these numbers, we plan to test all business methods to make sure that they perform the required operations successfully. Since the database access has already been tested in the Persistence Layer Tests, we are stubbing the data used in unit tests using Mockito.
To make sure that all the modules operate correctly, the unit tests are written knowing the inner workings of the method. Hence, the unit tests follow the white-box testing scheme.
For our testing, we use a top-down approach. We started by testing the persistence layer in deliverable 1. For deliverable 2, we test the business methods (located in Service classes) from persistence. We then test our service methods in isolation from persistence. Finally, we test the controller methods, which call both the service and the persistence.
We grouped the unit tests by type of object and by request, then divided these tests among the members of the team:
-
Create Advertisement (Normal use case)
-
Create Advertisement without pet (or invalid pet), title or description (Exception thrown)
-
Create Advertisement with a pet that already has an advertisement (Exception thrown)
-
Edit Advertisement (Normal use case)
-
Edit Advertisement that does not exist (Exception thrown)
-
Create Advertisement without pet (or invalid pet), title or description (Exception thrown)
-
Delete Advertisement (Normal use case)
-
Delete Advertisement with invalid ID (Exception thrown)
-
Delete Advertisement that does not exist (Exception thrown)
-
Get Advertisement (Normal use case)
-
Get Advertisement that does not exist (Exception thrown)
-
Get Advertisements by title (Normal use case)
-
Get Advertisements with non-existing title (Exception thrown)
-
Get Advertisements by pet (Normal use case)
-
Get Advertisements with non-existing pet (Exception thrown)
-
Get All Advertisements (Normal use case)
We partitioned our input by selecting valid input first and testing for this input. Then we select edge cases that would return an error and test whether the right error message is returned.
Test Suite | Primary Class Under Test | Coverage (%) |
---|---|---|
Unit Tests | Service | XX |
Integration Tests | Controller | XX |
With most of our