An Overview of Software Quality Assurance

Do we, as human beings, make mistakes? The answer to that is an overwhelming yes. There are examples of failures in quality control and decision-making that have shaken the world and resulted in huge losses to the companies involved. For example, we all remember the tragic accident with the Challenger space shuttle that exploded on launch. Was this a case of simple oversight or was it possible to have adequately tested the systems to control the threat of failure and avoid the explosion?

To get to the bottom of such incidents, we need to learn from the very people who are involved in the design and production of such systems. Mistakes are generally unavoidable and can happen at any stage of production, due to reasons such as weak or unclear requirements, hurrying to meet deadlines, or insufficient knowledge about a system. What we can do, however, is follow a process that can help reduce making or introducing any new errors, while preventing known errors from being repeated. This calls for a change in thought processes and a reliance on crafting standard practices in order to produce more successful products. Let's first understand what quality means before we embark on our journey to rewire ourselves to create sustainable and repeatable best practices for delivering defect-free software.

In this chapter, we'll be covering the following topics:

  • What is quality?
  • How do we ensure quality?
  • Software testing thought process
  • Quality Management Systems
  • Software Development Life Cycle versus Software Testing Life Cycle
  • Types of testing
  • Preparing test data and managing test artifacts