Skip to content

Software QA Plan & Report

Duan Linpei edited this page Oct 30, 2020 · 17 revisions

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

Dynamic V&V

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.

Unit Testing of Backend

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 coverage

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 Testing -- Amelia Cui -- testing coverage : 100%

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 Testing -- Amelia Cui -- testing coverage : 100%

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 Testing -- Angelina Duan -- testing coverage : 100%

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 Testing -- Angelina Duan -- testing coverage : 100%

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 --

RESTful service testing

For this part, we used AdvancedRestClient, a tool to test the functionalities of our controller classes.

Integration testing

After each commit for the project, Travis CI was triggered automatically to compile and test and overall project.

Static V&V

Code Review

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