Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
4 views

software_testing

Software testing is the process of verifying and validating software to ensure it is bug-free and meets both technical and user requirements. It includes various testing types such as unit testing, integration testing, validation testing, and system testing, each serving to identify and resolve issues at different stages of development. Effective testing not only prevents costly defects but also enhances software efficiency, accuracy, and usability.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

software_testing

Software testing is the process of verifying and validating software to ensure it is bug-free and meets both technical and user requirements. It includes various testing types such as unit testing, integration testing, validation testing, and system testing, each serving to identify and resolve issues at different stages of development. Effective testing not only prevents costly defects but also enhances software efficiency, accuracy, and usability.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Software testing can be stated as the process of verifying and validating whether

a software or application is bug-free, meets the technical requirements as guided


by its design and development, and meets the user requirements effectively and
efficiently by handling all the exceptional and boundary cases.
The process of software testing aims not only at finding faults in the existing
software but also at finding measures to improve the software in terms of
efficiency, accuracy, and usability. It mainly aims at measuring the specification,
functionality, and performance of a software program or application.

Why software testing is important

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

Software testing can be divided into two steps:


1. Verification: it refers to the set of tasks that ensure that the software correctly
implements a specific function.
2. Validation: it refers to a different set of tasks that ensure that the software that
has been built is traceable to customer requirements.

Verification: “Are we building the product right?”


Validation: “Are we building the right product?”

What is Unit Testing?


Unit Testing is a type of software testing where individual units or components of
a software are tested. The purpose is to validate that each unit of the software code
performs as expected. Unit Testing is done during the development (coding phase)
of an application by the developers. Unit Tests isolate a section of code and verify
its correctness. A unit may be an individual function, method, procedure, module,
or object.
In SDLC, STLC, V Model, Unit testing is first level of testing done before
integration testing. Unit testing is a WhiteBox testing technique that is usually
performed by the developer. Though, in a practical world due to time crunch or
reluctance of developers to tests, QA engineers also do unit testing.

Why perform Unit Testing?


Unit Testing is important because software developers sometimes try saving time
doing minimal unit testing and this is myth because inappropriate unit testing leads
to high cost Defect fixing during System Testing, Integration Testing and even
Beta Testing after application is built. If proper unit testing is done in early
development, then it saves time and money in the end.
Here, are the key reasons to perform unit testing in software engineering:

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.

3. Top-Down Integration Testing – Top-down integration testing technique


is used in order to simulate the behavior of the lower-level modules that are
not yet integrated. In this integration testing, testing takes place from top to
bottom. First, high-level modules are tested and then low-level modules
and finally integrating the low-level modules to a high level to ensure the
system is working as intended.

4. Mixed Integration Testing – A mixed integration testing is also called


sandwiched integration testing. A mixed integration testing follows a
combination of top down and bottom-up testing approaches. In top-down
approach, testing can start only after the top-level module have been coded
and unit tested. In bottom-up approach, testing can start only after the
bottom level modules are ready. This sandwich or mixed approach
overcomes this shortcoming of the top-down and bottom-up approaches. It
is also called the hybrid integration testing. also, stubs and drivers are
used in mixed integration testing.

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.

It answers to the question, Are we building the right product?


Validation Testing - Workflow:

Validation testing can be best demonstrated using V-Model. The Software/product


under test is evaluated during this type of testing.

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.

Developers can perform validation testing themselves, or collaborate with quality


assurance professionals, external validation testing professionals or clients to
identify elements of the code to improve. Developers can also combine this type of
testing with other useful techniques like product verification, debugging and
certification to help ensure the product is ready for the market.

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.

System Testing Process: System Testing is performed in the following steps:


 Test Environment Setup: Create testing environment for the better quality
testing.
 Create Test Case: Generate test case for the testing process.
 Create Test Data: Generate the data that is to be tested.
 Execute Test Case: After the generation of the test case and the test data, test
cases are executed.
 Defect Reporting: Defects in the system are detected.
 Regression Testing: It is carried out to test the side effects of the testing
process.
 Log Defects: Defects are fixed in this step.
 Retest: If the test is not successful then again test is performed.

Types of System Testing:


 Performance Testing: Performance Testing is a type of software testing that
is carried out to test the speed, scalability, stability and reliability of the
software product or application.
 Load Testing: Load Testing is a type of software Testing which is carried out
to determine the behavior of a system or software product under extreme load.
 Stress Testing: Stress Testing is a type of software testing performed to check
the robustness of the system under the varying loads.
 Scalability Testing: Scalability Testing is a type of software testing which is
carried out to check the performance of a software application or system in
terms of its capability to scale up or scale down the number of user request
load.

You might also like