Skip to content

Software Quality Assurance Plan and Report

liutianci1887 edited this page Oct 31, 2019 · 3 revisions

1) Introduction

This document represents the quality standards for the Tutoring Company system and other project deliverables. These standards are derived from software requirements which were implemented by our team to meet all the requirements of the stakeholders. Software Quality Assurance is a formal process for evaluating and documenting the quality of the work products produced during each stage of the project.

This document’s main target group is Tutoring System software project team. Members should make sure that quality standards are followed during developing the application, documentation, and testing of the project. This document is basically a guideline to follow while moving further with the project.

There are many tutoring programs offered in Montreal, and the number of these programs may increase in the future. Our software group aims to develop software system for managing tutoring programs in an easier and more efficient way.

Goals

Tutoring application will be used by stakeholders in many ways. We are responsible from the tutor point of view.

Tutor: Tutor applies to tutoring system by specifying what they can teach, subjects, courses, universities. Tutor will be reported with the approval or the denial for tutoring by the company manager. After being approved, tutor signs up to the system and completes the information about their hourly rate and availability. When a student requests a tutor, then a notification is sent to the tutor to confirm. The tutor can see student history and reviews of this student by other tutors.

Project Management Constraints

This project is being developed for ECSE321 course. Timing is a constraint as the project should be completed before the end of term. The team includes 5 developers. If a group member becomes absent at some point of the project, this may affect the progress of the project, and may lead to delays in the deliverables.

2) Documentation

2a) Aim

This section of the document will be about: a) Identifying documentation about the development, verification and validation, use and maintenance of the Tutoring application. b) List which documents are to be when as deliverables are submitted.

2b) Documentation Requirements

To ensure that the implementation of the software satisfies the technical requirements, the following documentation are required.

2bi) Software Requirements Document

This document should be used and modified by time to be sure that the group is covering every requirement of the stakeholders. This document includes all functional, and nonfunctional requirements of Tutoring System application.

2bii) Domain Model

This document should be used and might be modified as the group moves further on the project. This is important for the group since it outlines the project and makes the member of the group understand the basic concepts of the program. This document should show the interaction between classes.

2biii) Software Test Reports

Software Test Reports are used to understand the results of the executed tests. A report should contain every single information of tests which are executed.

2iv) User Documentation

This documentation explains how to install, operate, manage, and maintain Tutoring application. It should explain data control inputs, input sequences, options and program limitations, Error messages should be explained with which path will be executed after the message. This is important for further parts of the project.

2v) Other Documents

  1. Database: This documentation is in our GitHub page. It shows how the model which was used to create the database. This document is essential to take a grasp of the database of Tutoring System application.
  2. Use Case Model: This documentation is in our GitHub page as well. It basically describes the functionality of a system in a horizontal way. It also includes information about which Use-Case model was taken care of by whom.

3) Goals

3a) Quality Assurance Goals per phase

Requirement collection: Tutoring System should cover every need of each stakeholder and it should be revised and approved by the customer. Structure: The structure of Tutoring System should be error free. Development: All aspects of the application should be completed before the due date. Testing: Every testable piece of code should be tested to have zero issues. Every test code should be written, and should be executed before the due date of every iteration.

4) Tools and Technologies

The tools and technologies which the group will use is defined by the professor in the lectures. For this sprint (backend) the assigned concepts are software frameworks and services, behaviour modeling, and testing. Tools include Java Spring, Restful API, and JUnit.

4i) Tools and Techniques for assuring quality of functional requirements

The following techniques are used to check the quality of functional requirements:

  1. Group Review: When a group member decides to add or update a requirement, other group members must see these modifications. The modifications will not be considered as final until every group member agrees with the updates.
  2. TA Review: The responsible teaching assistant checked on the requirements during and after the first iteration.
  3. Completion Testing: After every iteration, group members should check if the code covers every functional requirement. If they are not covered, the group will prioritize covering all requirements before moving forward with the next iteration.

5) Testing

The group will take care of testing mainly based on unit testing: We used mostly JUnit testing to achieve this.

5a) Unit Testing:

Unit testing is a level of software testing where individual units or components of a software are tested. The purpose is to validate that each unit of the software performs as designed. A unit is the smallest testable part of any software. It usually has one or a few inputs and usually a single output. Unit testing will be applied by the test team before submitting each iteration. All test results will be noted. In our tests, we verify all our CRUD methods, including checking for the correct response when supplying them with invalid inputs. We aim to achieve more than 70% coverage of our code. Advantages of the unit testing are:

  • Unit testing increases confidence in changing/maintaining code.
  • Codes are more reusable.
  • Development is faster.
  • Debugging is easy

5b) Integration Testing:

Integration testing is a level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units. Test drivers and test stubs are used to assist in Integration Testing. It is important for the team since, there are lots of modules which need to work together.

5c) Test Results

Code Coverage: With our defined unit testing approach, we were able to achieve 89.6% coverage of our services and 100% coverage of our model.

Clone this wiki locally