Software Testing is an infinite process of comparing the invisible to the ambiguous in order to avoid the unthinkable happening to the anonymous. Say you want to transfer 10K INR to your friend via Net banking. You make the transaction & inform your friend. But when you check your SMS, it says 11K INR has been debited from your account. How do you feel? Frustrated? Angry? Resolution to change your Bank? I.e. if you don’t like testing your product, most likely your customers won’t like to test it either.
- China Airlines Airbus A300 crashed due to a software bug on April 26, 1994, killing 264 innocent lives.
- In 1985, Canada’s Therac-25 radiation therapy machine malfunctioned due to software bug and delivered lethal radiation doses to patients, leaving 3 people dead and critically injuring 3 others.
- In April of 1999, a software bug caused the failure of a $1.2 billion military satellite launch, the costliest accident in history.
- In May of 1996, a software bug caused the bank accounts of 823 customers of a major U.S. bank to be credited with 920 million US dollars.
Software bugs can potentially cause monetary and human loss, history is full of such examples. To make it right, you first need to identify what’s wrong. And when it’s about finding the wrong in software, we call it “Software Testing”! Testers don’t break software, software is already broken. As simple as that. To tell somebody that they are wrong is called criticism. To do so officially is called Software Testing 🙂 it’s the software analysis in order to find defects to be corrected. Software Testing provides customers, client, and stakeholders with information about the quality of the product or service under test – whether it meets the requirements that guided its design and development.
“Software testing is a process used to identify the correctness, completeness, and quality of developed computer software. It includes a set of activities conducted with the intent of finding errors in software so that it could be corrected before the product is released to the end users.”
Software testing is primarily a broad process that is composed of several interlinked processes – verifying software completeness in regards to functional/business requirements, identifying technical defects and assessing software usability, performance, security, localization, compatibility, installation, etc. As the number of possible tests for even simple software components is practically infinite, all software testing uses some strategy to select tests that are feasible for the available time and resources.
What if you follow the best practices during design & implementation of a software, in order to prevent defects once it is released in production? That’s called ‘Software Quality Assurance’ – a set of administrative and procedural activities (e.g. process implementation, training, auditing, etc.) implemented in software engineering processes so that requirements and goals for a software will be fulfilled. This defect prevention in quality assurance differs subtly from defect detection and rejection in quality control, and has been referred to as a shift left as it focuses on quality earlier in the process. A quality assurance system is said to increase customer confidence and a company’s credibility, to improve work processes and efficiency, and to enable a company to better compete with others. The quality management system under which the software system is created is normally based on one or more of the following models/standards:
Note: There are many other models/standards for quality management but the ones mentioned above are the most popular.
Fun Fact: Quality assurance was initially introduced in World War II when munitions were inspected and tested for defects after they were made. Today’s quality assurance systems emphasize catching defects before they get into the final product.
Quality is not an act, it is a habit!!