Quality Assurance

What is Quality Assurance?

Quality Assurance is defined as the auditing and reporting procedures used to provide the stakeholders with data needed to make well-informed decisions.
It is the Degree to which a system meets specified requirements and customer expectations. It is also monitoring the processes and products throughout the SDLC.

Quality Assurance Criteria:

Below are the Quality assurance criteria against which the software would be evaluated against:

  •     correctness

  •     flexibility

  •     integrity

  •     interoperability

  •     maintainability

  •     portability

  •     reliability

  •     reusability

  •     testability

What is Quality Control?

Quality control is a set of methods used by organizations to achieve quality parameters or quality goals and continually improve the organization's ability to ensure that a software product will meet quality goals.

Quality Control Process:

The three class parameters that control software quality are:

  •     Products

  •     Processes

  •     Resources

The total quality control process consists of:

  •     Use a defined parameter to develop the quality

  •     Stage to verify if the quality of the parameters are met

  •     Take corrective action if needed and repeat the work

Quality Control characteristics:

  •     Process adopted to deliver a quality product to the clients at best cost.

  •     Goal is to learn from other organizations so that quality would be better each time.

  •     To avoid making errors by proper planning and execution with correct review process.

Software Quality Management ensures that the required level of quality is achieved by submitting improvements to the product development process. SQA aims to develop a culture within the team and it is seen as everyone's responsibility.
Software Quality management should be independent of project management to ensure independence of cost and schedule adherences. It directly affects the process quality and indirectly affects the product quality.
Quality Assurance - QA aims at developing Organizational procedures and standards for quality at Organizational level.
Quality Planning - Select applicable procedures and standards for a particular project and modify as required to develop a quality plan.
Quality Control - Ensure that best practices and standards are followed by the software development team to produce quality products.
Random Testing, also known as monkey testing, is a form of functional black box testing that is performed when there is not enough time to write and execute the tests.
  • Random testing is performed where the defects are NOT identified in regular intervals.
  • Random input is used to test the system's reliability and performance.
  • Saves time and effort than actual test efforts.
  • Other Testing methods Cannot be used to.
  • Random Inputs are identified to be evaluated against the system.
  • Test Inputs are selected independently from test domain.
  • Tests are Executed using those random inputs.
  • Record the results and compare against the expected outcomes.
  • Reproduce/Replicate the issue and raise defects, fix and retest.
  • Recovery testing is a type of non-functional testing technique performed in order to determine how quickly the system can recover after it has gone through system crash or hardware failure. Recovery testing is the forced failure of the software to verify if the recovery is successful.
  • Determining the feasibility of the recovery process.
  • Verification of the backup facilities.
  • Ensuring proper steps are documented to verify the compatibility of backup facilities.
  • Providing Training within the team.
  • Demonstrating the ability of the organization to recover from all critical failures.
  • Maintaining and updating the recovery plan at regular intervals.
  • Regression testing a black box testing technique that consists of re-executing those tests that are impacted by the code changes. These tests should be executed as often as possible throughout the software development life cycle.

    Types of Regression Tests:

    Final Regression Tests: - A "final regression testing" is performed to validate the build that hasn't changed for a period of time. This build is deployed or shipped to customers.
    Regression Tests: - A normal regression testing is performed to verify if the build has NOT broken any other parts of the application by the recent code changes for defect fixing or for enhancement.

    What is Requirements based Testing?

    Requirements-based testing is a testing approach in which test cases, conditions and data are derived from requirements. It includes functional tests and also non-functional attributes such as performance, reliability or usability.

    Stages in Requirements based Testing:

    • Defining Test Completion Criteria - Testing is completed only when all the functional and non-functional testing is complete.

    • Design Test Cases - A Test case has five parameters namely the initial state or precondition, data setup, the inputs, expected outcomes and actual outcomes.

    • Execute Tests - Execute the test cases against the system under test and document the results.

    • Verify Test Results - Verify if the expected and actual results match each other.

    • Verify Test Coverage - Verify if the tests cover both functional and non-functional aspects of the requirement.

    • Track and Manage Defects - Any defects detected during the testing process goes through the defect life cycle and are tracked to resolution. Defect Statistics are maintained which will give us the overall status of the project.

    What is Release candidate?

    Release Candidate (RC) is the build released internally to check if any critical problems have gone undetected into the code during the previous development period. Release candidates are NOT for production deployment, but they are for testing purposes only. However, in most of the cases, there are no differences between the final build and the last release candidate.

    Release candidate Testing:

    •     Release candidate and Beta testing are different.

    •     If defects are found, then a round of testing is performed to ensure there are further issues.

    •     Verify Installation issues for one final time.

    •     Perform other critical workflow test against release candidate.

    What is Release Notes?

    Release notes is a document, which is released as part of the final build that contains new enhancements that went in as part of that release and also the known issues of that build.

    Release Notes are usually written by technical writers which are communication documents shared with clients. Release notes also feed the process of end-user documentation, user guide and training materials.

    Release Notes Format:

    •     Header - Name of the document, which carries product name, release number, release date, release note date and version.

    •     Overview - An overview of the product and changes to the recent software version.

    •     Purpose - An overview of the purpose of the release notes which lists the new feature, enhancements.

    •     Issue Summary - Provides description about the defect.

    •     End-User Impact - Provides information about the end-users impact due to the defect.

    •     Contact - Support contact information.

    What is Reliability Testing?

    Software reliability testing a testing technique that relates to testing a software's ability to function given environmental conditions consistently that helps uncover issues in the software design and functionality.

    Parameters involved in Reliability Testing:

      Dependent elements of reliability Testing:

    •     Probability of failure-free operation

    •     Length of time of failure-free operation

    •     The environment in which it is executed

    • Key Parameters that are measured as part of reliability are given below:

    •     MTTF: Mean Time To Failure

    •     MTTR: Mean Time To Repair

    •     MTBF: Mean Time Between Failures (= MTTF + MTTR)

    What is a Requirement?

    The requirements are the high-level descriptions about a particular system services, constraints or to a detailed specification that are generated during the requirements gathering process.

    Requirement Types:

    User Requirements - It is a detailed description in natural language along with diagrams of the services the system provides and its operational constraints. It is usually developed by end users.

    System requirements - It is a structured document detailing the descriptions of the system's functions, services and operational constraints.

    Functional Requirements - It describes the services of the system, how the system should react to particular inputs and how the system should behave in definite situations.

    Non-functional Requirements - It describes the attributes of the system.

    Domain Requirements - Requirements that arises from the domain of the application and that reflect characteristics of that domain. It can be either functional or non-functional specifications.

    Requirement Document Structure:

    •     Preface

    •     Introduction

    •     User requirements definition

    •     System architecture

    •     System requirements specification

    •     System models

    •     Appendix