Software Testing
Software Testing is a method to check whether the actual software product matches expected requirements and to ensure that the software product is Defect free. It involves the execution of software/system components using manual or automated tools to evaluate one or more properties of interest. The purpose of software testing is to identify errors, gaps, or missing requirements in contrast to actual requirements.

Some prefer saying Software testing as a White Box and Black Box Testing. In simple terms, Software Testing means the Verification of Application Under Test (AUT). This tutorial introduces testing software to the audience and justifies its importance.

Why Software Testing is Important?
Software Testing is Important because if there are any bugs or errors in the software, they can be identified early and can be solved before delivery of the software product. Properly tested software product ensures reliability, security, and high performance which further results in time-saving, cost-effectiveness, and customer satisfaction.

Testing is important because software bugs could be expensive or even dangerous. Software bugs can potentially cause monetary and human loss, and history is full of such examples.

In April 2015, the Bloomberg terminal in London crashed due to a software glitch that affected more than 300,000 traders on financial markets. It forced the government to postpone a 3bn pound debt sale.
Nissan cars recalled over 1 million cars from the market due to software failure in the airbag sensory detectors. There has been reported two accident due to this software failure.
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, the store served coffee for free as they were unable to process the transaction.
Some of Amazon’s third-party retailers saw their product price is reduced to 1p due to a software glitch. They were left with heavy losses.
Vulnerability in Windows 10. This bug enables users to escape from security sandboxes through a flaw in the win32k system.
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 innocents live
In 1985, Canada’s Therac-25 radiation therapy machine malfunctioned due to a 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.

What are the benefits of Software Testing?
Here are the benefits of using software testing:

Cost-Effective: It is one of the important advantages of software testing. Testing any IT project on time helps you to save your money for the long term. In case if the bugs caught in the earlier stage of software testing, it costs less to fix.
Security: It is the most vulnerable and sensitive benefit of software testing. People are looking for trusted products. It helps in removing risks and problems earlier.
Product quality: It is an essential requirement of any software product. Testing ensures a quality product is delivered to customers.
Customer Satisfaction: The main aim of any product is to give satisfaction to their customers. UI/UX Testing ensures the best user experience.
Types Of Testing

Functional Testing
Unit Testing

Integration Testing

Smoke

UAT ( User Acceptance Testing)

Localization

Globalization

Interoperability

Non-Functional TestingPerformance


Endurance

Load

Volume

Scalability

Usability

Maintenance

Maintenance
Regression

Applications of Software Testing

  1. Cost Effective Development – Early testing saves both time and cost in many aspects, however reducing the cost without testing may result in improper design of a software application rendering the product useless.
  2. Product Improvement – During the SDLC phases, testing is never a time-consuming process. However diagnosing and fixing the errors identified during proper testing is a time-consuming but productive activity.
  3. Test Automation – Test Automation reduces the testing time, but it is not possible to start test automation at any time during software development. Test automaton should be started when the software has been manually tested and is stable to some extent. Moreover, test automation can never be used if requirements keep changing.
  4. Quality Check – Software testing helps in determining following set of properties of any software such as
    1. Functionality
    2. Reliability
    3. Usability
    4. Efficiency
    5. Maintainability
    6. Portability

Who does Testing?

It depends on the process and the associated stakeholders of the project(s). In the IT industry, large companies have a team with responsibilities to evaluate the developed software in context of the given requirements. Moreover, developers also conduct testing which is called Unit Testing. In most cases, the following professionals are involved in testing a system within their respective capacities −

  1. Software Tester
  2. Software Developer
  3. Project Lead/Manager
  4. End User

Different companies have different designations for people who test the software on the basis of their experience and knowledge such as Software Tester, Software Quality Assurance Engineer, QA Analyst, etc.

It is not possible to test the software at any time during its cycle. The next two sections state when testing should be started and when to end it during the SDLC.