2. • What is Software Testing?
• Software testing is the process of identifying bugs in the software and
evaluating whether it meets the business requirement specifications.
It is a continuous process referred to as the software testing life cycle
(STLC) which runs alongside the software development life cycle
(SDLC). Besides delivering bug-free software, it helps to improve the
overall functionality and usability of software applications.
3. • Why Software Testing?
Software testing is crucial because faulty software can cause both monetary loss and loss of human
life. Here are a few examples of some of the biggest software failures in history:
• In April 2015, Bloomberg terminal in London crashed due to software glitch 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.
4. • 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 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.
5. 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.
10. • 1. Unit Testing
• Unit testing focuses on the smallest unit of the software. An individual unit of software or a group of interrelated units are tested
using sample inputs and the outputs are observed. It is usually done by the developers themselves to see if individual units of
source code are fit for use.
• 2. API Testing
• API testing is similar to Unit Testing as it targets the code level. However, it is done by the testers and not the developers. It is used
to check the functionality, reliability, security and performance of the application programming interfaces.
• 3. Acceptance Testing
• Acceptance testing is a formal testing method used to determine whether the software meets the acceptance criteria. It is usually
performed by the customers or end users to determine whether or not to accept the software before moving it to the production
environment. It is one of the final phases of testing and is done after functional, integration and system testing.
• 4. Functional Testing
• Functional testing is used to validate the software against all the functional requirements specified beforehand. Each and every
function of the software is tested using sample inputs and the outputs are verified against the functional requirements. It is not
concerned with the source code of the application and is performed by testing teams.
• 5. Integration Testing
• Integration testing is used to expose the defects of the software modules when they are integrated together. The individual
software modules are grouped together and tested as one. It is also known as string testing, thread testing or I&T (Integration and
Testing).
11. • 6. System Testing
• System testing is used to validate the fully completed and integrated software. It is used to verify
that the software meets all the specified requirements. It is usually done by both the
development and testing teams in a targeted environment.
• 7. Accessibility Testing
• Accessibility testing is done to make sure that people with disabilities like color blindness, hearing
problems and other disadvantaged groups are able to operate the software. Examples of such
software are speech recognition software, special keyboard and screen reader software.
• 8. Ad-hoc Testing
• Ad-hoc testing is performed without proper planning and documentation, and is randomly done
on any part of the software application. It aims to find possible errors or bugs as early as possible.
It is performed by the testing team.
• 9. User Interface Testing
• User interface testing is used to test whether the UI of the software application has been
developed according to the specifications document. By running multiple UI tests, you can make
the software more user-friendly and easy on the eyes.
• 10. Alpha Testing
• Alpha testing is used to look for errors and software in the entire software under a virtual
environment. It is performed at the last phase of development by the developers. It is usually
followed by beta testing.
12. • 11. Beta Testing
• Beta testing is done after alpha testing and right before the launch of the product. It is performed in a real user environment by a
limited number of users. For example, Instagram Reels’ beta feature was launched to a few users before it became publicly
available to everyone. The feedback and constructive criticism is collected from the users and the changes are implemented to
make the software better.
• 12. Compatibility Testing
• Compatibility testing is used to check the compatibility of the software with different operating systems, hardware, web browsers
and so on. If the software is an Android app, it is checked with all the commonly used versions of Android OS. If it is a web
application, it is checked with all the different versions of widely used web browsers.
• 13. Load Testing
• Load Testing is used to check how much load a software can take before it begins to fail. It helps to gauge the load capacity of the
system.
• 14. Recovery Testing
• Recovery testing is used to check whether the software can recover from a crash and how well it recovers. Even if the software is
of exceptional quality, crashes can happen anytime. Hence, there are several mechanisms that need to be put in place to ensure
that the software runs smoothly again after a crash.
• 15. Black Box Testing
• Black box testing is performed by the testing or QA team of the company to check the functionality of the software. The people
involved in the testing should have no knowledge of the logic and internal structure of the code. This test can be applied at any
level of the software testing life cycle.
• 16. White Box Testing
• White box testing is performed by the development team who have a good understanding of the internal workings of the code.
The internal structure, design and overall code are tested to verify and improve its input-output flow, design, usability and security.