Introduction to Software Testing

Reading Time: 5 minutes

What is Software Testing?

Software testing is an art of investigating software to ensure that its quality under test is in line with the requirement of the client. Software testing is carried out in a systematic manner with the intent of finding defects in a system before the system is live in production. It is required for evaluating the system. One small defect can cause a lot of financial loss. This is why software testing has emerged as a very powerful field in IT.

Software testing also helps to identify errors, gaps or missing requirements in contrary to the actual requirements. It can be either done manually or using automated tools. Some categorize Software testing as a White Box and Black Box Testing.

In simple terms, Software Testing means Verification of Application Under Test (AUT). The role of the tester requires the right skills suggested below:

introduction_to_software_testing

Why is Software Testing Important?

Testing is important because software bugs could be expensive or even dangerous.

  1. Software testing is required to check the reliability of the software
  2. Software testing ensures that the system is free from any bug that can cause any kind of failure
  3. Software testing ensures that the product is in line with the requirement of the client
  4. It is required to make sure that the final product is user friendly
  5. At the end software is developed by a team of human developers all having different viewpoints and approach. Even the smartest person has the tendency to make an error. It is not possible to create software with zero defects without incorporating software testing in the development cycle.
  6. No matter how well the software design looks on paper, once the development starts and you start testing the product you will definitely find lots of defects in the design.

Software bugs can potentially cause monetary and human loss, and history is full of such examples.

  • In 2021, Microsoft Exchange servers were prone to vulnerabilities and were hacked (CNBC article here)
  • Software update for the Nest ‘smart’ thermostat (owned by Google) went wrong and literally left users in the cold. When the software update went wrong, it forced the device’s batteries to drain out, which led to drop in the temperature. Consequently, the customers were unable to heat their homes or use any amenities.
  • Starbucks was forced to close about 60 percent of stores in the U.S and Canada due to software failure in its POS system. At one point store served coffee for free as they unable to process the transaction.
  • Some of the Amazon’s third party retailers saw their product price is reduced to 1p due to a software glitch. They were left with heavy losses.
  • In January 2016, HSBC suffered a major IT outage, and millions of bank customers were unable to access online accounts. The bank took almost 2 days to recover and get back to normal functioning. HSBC’s Chief Operating Officer (COO) declared that it was a result of a ‘complex technical issue’ within the internal systems.
  • In 2015 fighter plane F-35 fell victim to a software bug, making it unable to detect targets correctly.
  • China Airlines Airbus A300 crashed due to a software bug on April 26, 1994, killing 264 innocent live
  • 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
  • A glitch that occurred in December 2015 led to over 3,200 US prisoners being released before their declared date. The software was designed to monitor the behavior of prisoners and was introduced in 2002. The problem was occurring for about 13 years and on an average prisoners were released almost 49 days in advance. Source : Cio-asia.com

Types of Software Testing

Typically Testing is classified into three categories.

  • Functional Testing
  • Non-Functional Testing or Performance Testing
  • Maintenance (Regression and Maintenance)
Testing Category Types of Testing
Functional Testing
  • Unit Testing
  • Integration Testing
  • Smoke
  • UAT ( User Acceptance Testing)
  • Localization
  • Globalization
  • Interoperability
Non-Functional Testing
  • Performance
  • Endurance
  • Load
  • Volume
  • Scalability
  • Usability
Maintenance
  • Regression
  • Maintenance

Defects arise in software due to many reasons. As a matter of fact it is said that every software application has some defects embedded in it but not every defect is a threat to the system. There is a lot that can be accomplished with the help of software testing. Testing helps in evaluating the quality of software.

There are many reasons why software testing has gained so much of importance in the field of information technology. Firstly, testing helps in reducing the overall cost of the software development project. If testing is ignored in the initial development stages to save a small amount of money then it may turn out to be a very expensive matter later because as you move on with development process it becomes more and more difficult to trace back defects and rectifying one defect somewhere can introduce another defect in some other module.