Unit 4
Unit 4
and Testing
Concepts
MODULE IV
Testing is a set of activities that can be planned in advance and
conducted systematically.
Testing Strategy provides a road map that describes the steps to
be conducted as part of testing. It should incorporate test planning,
test case design, test execution and resultant data collection and
execution.
Strategic It has following generic characteristics:
Approach to 1. To perform effective testing, you should conduct effective
Software technical reviews. By doing this, many errors will be eliminated
before testing commences.
Testing 2. Testing begins at the component level and works “outward”
toward the integration of the entire computer-based system.
3. Different testing techniques are appropriate for different software
engineering approaches and at different points in time.
4. Testing is conducted by the developer of the software and (for
large projects) an independent test group.
Verification
Verification is the process of checking whether the software is
being built correctly. It ensures that the software meets its
specified requirements and design specifications.
Key Questions: Are we building the software right?
Testing Moving inward along the spiral, you come to design and finally to
coding. To develop computer software, you spiral inward
Strategy— (counterclockwise).
The Big
Picture
A strategy for software testing may also be viewed in the context of
the spiral.
Unit testing begins at the vortex of the spiral and concentrates on
each unit (e.g., component, class, or WebApp content object) of the
software as implemented in source code.
Testing progresses by moving outward along the spiral to
integration testing, where the focus is on design and the
construction of the software architecture.
Taking another turn outward on the spiral, you encounter
validation testing, where requirements established as part of
requirements modeling are validated against the software that has
been constructed.
Finally, you arrive at system testing, where the software and other
system elements are tested as a whole.
To test computer software, you spiral out in a clockwise direction
There are many strategies that can be used to test software.
At one extreme, you can wait until the system is fully constructed and
then conduct tests on the overall system in hopes of finding errors.
This approach, although appealing, simply does not work. It will
Test result in buggy software that disappoints all stakeholders.
At the other extreme, you could conduct tests on a daily basis,
strategies whenever any part of the system is constructed. This approach,
for although less appealing to many, can be very effective.
It includes the following types:
Conventiona 1. Unit testing
l Software 2. Integration testing
3. Validation testing
4. System testing
5. Software testing fundamentals
Unit Testing Unit testing is a way to check if small parts of a software program
(called modules or components) work correctly on their own.
Developers test these individual parts based on their design to find
errors before combining them with other parts of the system.
Since unit tests focus on one small piece of the software at a time,
they are easier to run and debug.
However, because they test only a single module, they may not
catch issues that happen when multiple modules work together.
Despite this limitation, unit testing is important because it helps
find and fix errors early in the development process, making the
overall software more reliable.
Unit-test considerations
In unit testing, the first step is to check whether the module
interface works correctly, meaning that data can flow in and out of
the module without issues.
Next, the internal data structures are tested to ensure that
temporary data remains accurate and does not get corrupted during
execution.
Every possible path in the module’s logic is also tested to make
sure that each line of code runs at least once.
Finally, boundary testing is done, which means testing the limits
of input values (such as the highest, lowest, or unexpected values)
to ensure the module handles them correctly.
This helps catch errors and makes the software more reliable.
Unit-test procedures
Unit testing is usually done alongside the coding process. It can be
planned before writing the code (test-driven development) or after
the code is written.
To create effective tests, developers review the software design to
understand how the code should work and identify potential
problem areas.
Based on this, they create test cases—specific scenarios to check if
the module functions correctly.
Each test case comes with expected results, so when the test runs,
the actual output can be compared to the expected output to find
any errors.
This helps ensure the software works as intended.
Integration testing is the process of combining different unit-tested
components of a software program and checking if they work together
correctly.
Even if individual modules work fine on their own, problems can occur
when they interact.
The goal of integration testing is to find and fix errors in the
connections between components, such as incorrect data flow,
Integration communication issues, or unexpected behavior.
This testing follows the software design structure, ensuring that all
Testing parts integrate smoothly as intended. It helps ensure that the entire system
functions properly before moving to full system testing.
There are two types of Integrating Testing
1. Incremental Integrating Testing
Top Down Testing
Bottom-Up Testing
2. Non-Incremental Integrating Testing
1. Top-down integration - Top-down integration testing technique is
used in order to simulate the behaviour 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. Suppose
M1 and M3 are fully developed module and M7 is not developed, we
Categories use dummy model called as studs.
of
Integration
Testing
2. Bottom-up integration - 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. Low-level components are combined into clusters. If one
particular module/components are not developed we use dummy
models called as Driver.
Validation
Validation testing happens after all the individual parts of the
Testing software have been tested and combined into a complete system.
It is 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.
The goal is to check if the software meets all requirements and is
ready for real-world use.
Software validation is done by running different tests to make
sure the software meets all the required standards. A test plan is
like a guide that lists the types of tests that need to be performed. A
test procedure is more detailed—it includes specific test cases to
check if the software works correctly in every way.
These tests make sure that all features function as expected, the
software behaves as it should, the content is correct and well-
Validation- organized, and performance is up to standard.
They also verify that the documentation is accurate and that the
Test Criteria software is easy to use.
After each validation test, there are two possible outcomes.
1. Either the software works as expected and meets the required
standards, so it is approved, or
2. There is a problem that does not match the specifications. If a
problem is found, it is recorded in a list of issues that need to be
fixed before the software can be accepted.
An important element of the validation process is a configuration
review.
Configuration The intent of the review is to ensure that all elements of the
software configuration have been properly developed, are
Review cataloged, and have the necessary detail to bolster the sup port
activities.
The configuration review, sometimes called an audit
System testing is a type of software testing that checks the entire
system as a whole to ensure it works correctly. It is done after
integration testing and before acceptance testing. The goal is to
verify that all components work together as expected and meet the
specified requirements.
In system testing, testers check the software for functionality,
System performance, security, and reliability. They use real-world scenarios
to see how the software behaves under different conditions. This
Testing helps identify bugs, missing features, or performance issues before
the software is released to users.
System testing is important because it ensures that the software
works properly in a real environment, just like how users will use
it.
System testing is a set of different tests designed to check if the
entire system works correctly. Each test has a specific purpose, but
they all help ensure that different parts of the system are properly
connected and functioning as expected. The goal is to make sure
the software meets its requirements and performs all its tasks
correctly before it is released to users.
1. Recovery Testing - Many computer systems need to recover
quickly from errors and continue working without much delay.
Some systems must be fault-tolerant, meaning that even if
something goes wrong, the system should keep running without
stopping.
In other cases, if a system fails, it must be fixed within a certain
time to avoid serious financial losses. This is especially important
for businesses, banks, and critical services like hospitals, where
downtime can cause big problems.
2. Security Testing – It is a type of software testing that checks if a
system is safe from hackers and other security threats.
It helps find weaknesses in the system that could allow
unauthorized access, data theft, or other attacks.
In security testing, testers look for issues like weak passwords, data
leaks, and protection against viruses or hacking attempts.
The goal is to make sure that only the right people can access the
system and that all sensitive information stays safe.
This is especially important for banking, healthcare, and online
shopping systems, where security is critical.
3. Stress Testing – It is a type of software testing that checks how
a system performs under extreme conditions.
It is done to see if the system can handle high loads, such as many
users using it at the same time or a large amount of data being
processed.
The goal is to find out when the system slows down, crashes, or
stops working.
For example, if a website is tested with millions of users at once,
stress testing helps check if it can handle the traffic or if it breaks.
4. Performance Testing – It is the process of
checking how well a software or system performs
under certain conditions.
It tests things like how fast the system works, how
much traffic it can handle, and whether it can
manage a large number of users or data without
slowing down or crashing.
The goal of performance testing is to make sure the
software can handle real-world usage and continue to
perform well even under stress.
It helps identify areas that might need improvement
to ensure the system runs smoothly and efficiently.
5. Deployment Testing - In many cases, software must execute on
a variety of platforms and under more than one operating system
environment.
Deployment testing, sometimes called configuration testing.
It is the process of testing a software application in its actual
working environment before it is fully released.
It checks if the software can be installed, set up, and run smoothly
on the intended hardware or servers.
The goal is to make sure the software works properly when it’s
deployed, and that there are no issues with installation,
configuration, or compatibility.
This type of testing helps avoid problems when the software is
launched for users.
ALPHA AND BETA
TESTING
White Box
Testing
Black Box
Testing