software_testing
software_testing
Few can argue against the need for quality control when developing software. Late
delivery or software defects can damage a brand’s reputation — leading to
frustrated and lost customers. In extreme cases, a bug or defect can degrade
interconnected systems or cause serious malfunctions.
Consider Nissan having to recall over 1 million cars due to a software defect in the
airbag sensor detectors. Or a software bug that caused the failure of a USD 1.2
billion military satellite launch. 2 The numbers speak for themselves. Software
failures in the US cost the economy USD 1.1 trillion in assets in 2016. What’s
more, they impacted 4.4 billion customers. 3
Though testing itself costs money, companies can save millions per year in
development and support if they have a good testing technique and QA processes
in place. Early software testing uncovers problems before a product goes to
market. The sooner development teams receive test feedback, the sooner they can
address issues such as:
Architectural flaws
Poor design decisions
Invalid or incorrect functionality
Security vulnerabilities
Scalability issues
1. Unit tests help to fix bugs early in the development cycle and save costs.
2. It helps the developers to understand the testing code base and enables them
to make changes quickly
3. Good unit tests serve as project documentation
4. Unit tests help with code re-use. Migrate both your code and your tests to
your new project. Tweak the code until the tests run again.
Integration testing
Integration testing is the process of testing the interface between two software
units or modules. It focuses on determining the correctness of the interface. The
purpose of integration testing is to expose faults in the interaction between
integrated units. Once all the modules have been unit tested, integration testing is
performed.
Integration testing is a software testing technique that focuses on verifying the
interactions and data exchange between different components or modules of a
software application. The goal of integration testing is to identify any problems or
bugs that arise when different components are combined and interact with each
other. Integration testing is typically performed after unit testing and before system
testing. It helps to identify and resolve integration issues early in the development
cycle, reducing the risk of more severe and costly problems later on.
There are four types of integration testing approaches. Those approaches are the
following:
1. Big-Bang Integration Testing – It is the simplest integration testing
approach, where all the modules are combined and the functionality is
verified after the completion of individual module testing. In simple words,
all the modules of the system are simply put together and tested. This
approach is practicable only for very small systems. If an error is found
during the integration testing, it is very difficult to localize the error as the
error may potentially belong to any of the modules being integrated. So,
debugging errors reported during big bang integration testing is very
expensive to fix.
2. Bottom-Up Integration Testing – In bottom-up testing, each module at
lower levels are tested with higher modules until all modules are tested.
The primary purpose of this integration testing is that each subsystem tests
the interfaces among various modules making up the subsystem. This
integration testing uses test drivers to drive and pass appropriate data to the
lower-level modules.
Validation Testing
The process of evaluating software during the development process or at the end of
the development process to determine whether it satisfies specified business
requirements.
Validation Testing ensures that the product actually meets the client's needs. It can
also be defined as to demonstrate that the product fulfills its intended use when
deployed on appropriate environment.
Validation testing is the process of assessing a new software product to ensure that
its performance matches consumer needs. Product development teams might
perform validation testing to learn about the integrity of the product itself and its
performance in different environments.
System testing
System testing is a type of software testing that evaluates the overall functionality
and performance of a complete and fully integrated software solution. It tests if
the system meets the specified requirements and if it is suitable for delivery to the
end-users. This type of testing is performed after the integration testing and
before the acceptance testing.
System Testing is a type of software testing that is performed on a complete
integrated system to evaluate the compliance of the system with the
corresponding requirements. In system testing, integration testing passed
components are taken as input. The goal of integration testing is to detect any
irregularity between the units that are integrated together. System testing detects
defects within both the integrated units and the whole system. The result of
system testing is the observed behavior of a component or a system when it is
tested. System Testing is carried out on the whole system in the context of either
system requirement specifications or functional requirement specifications or in
the context of both.