-
Notifications
You must be signed in to change notification settings - Fork 5
Software QA Plan & Report
Quality Assurance methods: The main concept of having a software quality assurance plan is to be able to define appropriate coverage criteria of the testing functionalities from the business methods, RESTful service and integration test. Moreover, the software quality assurance plan documents the static testing of our code, namely code review.
These are the 2 main testing approaches for software assurance testing.
- Static V&V -- analyses of the code
- Dynamic V&V -- exacting the code
For deliverable 2, we tested our business methods in Service classes through JUnit testing, then we tested our RESTful service located in controller classes through AdvanceRestClient. In the meanwhile, integration is tested through Travis CI through out the development process of deliverable 2.
This is the first main step in our QA plan. To test the functionality of the service classes, we tested individually for each service class and independently of real database through Mockito Framework. We set our goal for test coverage to 90 % due to the time constraints. The tables below showed the average of desired and achieved test coverage for all service classes
Testing Average | Desired coverage | Achieved coverage |
---|---|---|
Business methods in service classes | 90% |
In order to show more details, the following tables illustrate all the unit tests we performed for service classes
Address | Get | Create | UpdateStreetName | Delete |
---|---|---|---|---|
ValidID | return Normal Address | create address | update required address | delete address |
NotExistingAddress | throw exception | throw exception | throw exception | throw exception |
EmptyID | throw exception | throw exception | throw exception | throw exception |
NullID | throw exception | throw exception | throw exception | throw exception |
NotCompletedInput | -- | throw exception | throw exception | -- |
SameInformationToBeUpdate | -- | -- | throw exception | -- |
Payment | Get | Create | UpdatePaymentMethod | Delete |
---|---|---|---|---|
ValidID | return Normal Payment | create payment | update payment method | delete payment |
NotExistingPayment | throw exception | throw exception | throw exception | throw exception |
EmptyID | throw exception | throw exception | throw exception | throw exception |
NullID | throw exception | throw exception | throw exception | throw exception |
NotCompletedInput | -- | throw exception | throw exception | -- |
SameMethodToBeUpdate | -- | -- | throw exception | -- |
AlreadyHasSuccessfulPurchase | -- | -- | -- | throw exception |
ArtGallerySystemUser | Get | Create | Update User's name | Delete |
---|---|---|---|---|
ValidName | return Normal User | create user | update required user's name | delete user |
NotExistingUser | throw exception | throw exception | throw exception | throw exception |
EmptyName | throw exception | throw exception | throw exception | throw exception |
NullName | throw exception | throw exception | throw exception | throw exception |
NotCompletedInput | -- | throw exception | throw exception | -- |
SameInformationToBeUpdate | -- | -- | throw exception | -- |
UserRole | Get | Create | Delete |
---|---|---|---|
ValidID | return Normal UserRole | create user role | delete user role |
NotExistingUserRole | throw exception | throw exception | throw exception |
EmptyID | throw exception | throw exception | throw exception |
NullID | throw exception | throw exception | throw exception |
NotCompletedInput | -- | throw exception | -- |
For this part, we used AdvancedRestClient, a tool to test the functionalities of our controller classes.
After each commit for the project, Travis CI was triggered automatically to compile and test and overall project.
Although there are many testing tools exist these days, code review is still an extremely important part of software development. Since it is a group project, we first split the tasks among each team member and communication between team members is extremely useful to provide a basic understanding of each person's work in progress. As a result, we decided to hold regular code review sessions during which each team member can review each other's code and provide possible improvements. Through this approach, we significantly increased our efficiency in writing and debugging the code and the overall performance for this project is improved significantly meanwhile