Key Practices Which Impact Software Quality

Key Practices Which Impact Software Quality

Software Quality Assurance (SQA) is defined as a well planned and systematic approach to evaluate the quality of software. It checks the adherence to software product standards, processes, and procedures. SQA includes the systematic process of assuring that standards and procedures are established and are followed throughout the software development life cycle and test cycle as well.

The main focus of Testing is to identify the bugs in system as early as possible, because fixing the defects early is less expensive. As per the numbers of a study, if bugs are found after release they become more expensive to fix and they also impact the end users confidence towards the application.

An IBM study shows that it is 100 times more expensive to fix defects that are found after the application has been released

  • To sum up, software quality assurance is important because it allows to:
  • Ensure that project meets requirements
  • Prevent, detect and fix defects early
  • Minimize project risks
  • Increase product reliability
  • Improve end user experience
  • Testing and standard compliance
  • Release management and Release Control
  • Reduced cost of development
  • Reduced cost of maintenance

Benefits of Testing

  • Reduced time to market
  • High Quality
  • State of the art testing resources
  • Flexible resourcing
  • Focus on Strategic Priorities

SQA activities take place at each stage of the development life-cycle. The stages are categorized into areas of requirements gathering, system design and coding and testing and finally release.

  1. Verification – The process of evaluating a system or component to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase.
  2. Validation – The process of evaluating a system or component during or at the end of the development process to determine whether it satisfies specific requirements

During the requirement analysis, design and coding stages of application development the outputs of each stage need to be measured, monitored and managed so that each output can be verified against its predefined exit criteria. When the final application has completed the coding and integration stages it must be validated against the original application requirements and signed off by senior management as passed validation testing. At each stage of this application development, the efforts during the development must be improved upon where possible in order to improve quality and remain competitive.

The difference between verification, validation and Software Quality measurement

An effective verification effort must show that all requirements have been carried out correctly, this is done by testing the requirements against the product delivery. These tests can be re-executed to achieve the same results should the system be changed at a later date.

Verification shows that a product meets its specified requirements at predefined milestones during the development life-cycle. Validation checks that the system meets the customer’s requirements at the completion of the development life cycle.

Validation is the process of evaluating the final product to check whether the application meets the customer expectations and requirements. It is a dynamic mechanism of validating and testing the actual product. The validation testing uses methods like black box (functional) testing, gray box testing, and white box (structural) testing, etc.

The quality of the software that is produced in each process or model is described in terms of the number of defects that are created. Typically the most common metrics for defects are:

  • Total number of test cases
  • Number of test cases passed
  • Number of test cases failed
  • Number of test cases blocked
  • Number of defects found
  • Number of defects accepted
  • Number of defects rejected
  • Number of defects deferred
  • Number of critical defects
  • Number of planned test hours
  • Number of actual test hours
  • Number of bugs found after delivery

Different activities of Quality Assurance are as follows:

  1. Maintaining the quality of the project as per the specifications and business requirements.
  2. Defect Prevention, and formal methods for other defect prevention techniques.
  3. Defect Reduction.
  4. Inspection, formal and informal reviews: Direct fault detection and removal without executing the project scenario.
  5. Testing the project for Failure observation and bug removal.
  6. Risk identification.
  7. Defect tracking techniques and methods.
  8. Software fault tolerance.
  9. Concluding Remarks and maintaining reports.

Why the software quality assurance is very important

  1. User Perspective: Quality assurance of Software application is good to see the application from end user perspective and create a scenario depending upon the same.
  2. Defect in testing phase: It’s good to find the issues in early stage and fix them before customer find them in production, for instance.
  3. Project Risk: QA at the beginning of a project plays a key role in mitigating the risks that have been identified during the specification phases.
  4. Reliability: Increases trust of end users when they find application working as per their expectations. Even a negative scenario grace full failure increases the trust of end-user and makes the application intelligent.
  5. Gives ease to End-user: It helps end user to perform business task without having any technical knowledge on the application. Easily understandable applications have more users than traditional applications.
  6. Security Breach Prevention:It help software developers to protect the user data in production environment and detect any data leak in testing environment.
  7. Load Understanding: It helps to understand the application working under simulation and fix the issues after understanding the real load on system in production environment.
  8. Automation: Testing the software with the goal of reducing testing efforts, delivering capability faster and in more affordable way. It helps in building better quality software with less effort.