0% found this document useful (0 votes)
33 views

Levels of Testing

.

Uploaded by

Madhavan K
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views

Levels of Testing

.

Uploaded by

Madhavan K
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 38

Levels of Testing

In this section, we are going to understand the various levels of


software testing.
As we learned in the earlier section of the software testing tutorial
that testing any application or software, the test engineer needs to
follow multiple testing techniques.
In order to detect an error, we will implement software testing;
therefore, all the errors can be removed to find a product with
more excellent quality.
What are the levels of Software Testing?
Testing levels are the procedure for finding the missing areas and
avoiding overlapping and repetition between the development life
cycle stages. We have already seen the various phases such
as Requirement collection, designing, coding testing,
deployment, and maintenance of SDLC (Software Development
Life Cycle).
In order to test any application, we need to go through all the
above phases of SDLC. Like SDLC, we have multiple levels of
testing, which help us maintain the quality of the software.
Different Levels of Testing
The levels of software testing involve the different methodologies,
which can be used while we are performing the software testing.
In software testing, we have four different levels of testing, which
are as discussed below:
1. Unit Testing
2. Integration Testing
3. System Testing
4. Acceptance Testing
As we can see in the above image that all of these testing levels
have a specific objective which specifies the value to the software
development lifecycle.
For our better understanding, let's see them one by one:
Level1: Unit Testing
Unit testing is the first level of software testing, which is used to
test if software modules are satisfying the given requirement or
not.
The first level of testing involves analyzing each unit or an
individual component of the software application.
Unit testing is also the first level of functional testing. The
primary purpose of executing unit testing is to validate unit
components with their performance.
A unit component is an individual function or regulation of the
application, or we can say that it is the smallest testable part of
the software. The reason of performing the unit testing is to test
the correctness of inaccessible code.
Unit testing will help the test engineer and developers in order to
understand the base of code that makes them able to change
defect causing code quickly. The developers implement the unit.
Level2: Integration Testing
The second level of software testing is the integration
testing. The integration testing process comes after unit testing.
ADVERTISEMENT
It is mainly used to test the data flow from one module or
component to other modules.
In integration testing, the test engineer tests the units or
separate components or modules of the software in a group.
The primary purpose of executing the integration testing is to
identify the defects at the interaction between integrated
components or units.
When each component or module works separately, we need to
check the data flow between the dependent modules, and this
process is known as integration testing.
We only go for the integration testing when the functional testing
has been completed successfully on each application module.
In simple words, we can say that integration testing aims to
evaluate the accuracy of communication among all the modules.
Level3: System Testing
The third level of software testing is system testing, which is
used to test the software's functional and non-functional
requirements.
It is end-to-end testing where the testing environment is parallel
to the production environment. In the third level of software
testing, we will test the application as a whole system.
To check the end-to-end flow of an application or the software as
a user is known as System testing.
In system testing, we will go through all the necessary modules of
an application and test if the end features or the end business
works fine, and test the product as a complete system.
In simple words, we can say that System testing is a sequence of
different types of tests to implement and examine the entire
working of an integrated software computer system against
requirements.
Level4: Acceptance Testing
The last and fourth level of software testing is acceptance
testing, which is used to evaluate whether a specification or the
requirements are met as per its delivery.
The software has passed through three testing levels (Unit
Testing, Integration Testing, System Testing). Some minor
errors can still be identified when the end-user uses the system in
the actual scenario.
In simple words, we can say that Acceptance testing is
the squeezing of all the testing processes that are previously
done.
The acceptance testing is also known as User acceptance testing
(UAT) and is done by the customer before accepting the final
product.
Usually, UAT is done by the domain expert (customer) for their
satisfaction and checks whether the application is working
according to given business scenarios and real-time scenarios.
Conclusion
we have learned all the levels of testing. And we can conclude that
tests are grouped based on where they are added in the Software
development life cycle.
A level of software testing is a process where every unit or
component of a software or system is tested.
The main reason for implementing the levels of testing is to
make the software testing process efficient and easy to find all
possible test cases at a specific level.
Unit Testing
Unit testing involves the testing of each unit or an individual
component of the software application. It is the first level of
functional testing. The aim behind unit testing is to validate unit
components with its performance.
A unit is a single testable part of a software system and tested
during the development phase of the application software.
The purpose of unit testing is to test the correctness of isolated
code. A unit component is an individual function or code of the
application. White box testing approach used for unit testing and
usually done by the developers.
Whenever the application is ready and given to the Test engineer,
he/she will start checking every component of the module or
module of the application independently or one by one, and this
process is known as Unit testing or components testing.
Why Unit Testing?
In a testing level hierarchy, unit testing is the first level of testing
done before integration and other remaining levels of the testing.
It uses modules for the testing process which reduces the
dependency of waiting for Unit testing frameworks, stubs, drivers
and mock objects are used for assistance in unit testing.
Generally, the software goes under four level of testing: Unit
Testing, Integration Testing, System Testing, and Acceptance
Testing but sometimes due to time consumption software testers
does minimal unit testing but skipping of unit testing may lead to
higher defects during Integration Testing, System Testing, and
Acceptance Testing or even during Beta Testing which takes place
after the completion of software application.
Some crucial reasons are listed below:
o Unit testing helps tester and developers to understand the
base of code that makes them able to change defect causing
code quickly.
o Unit testing helps in the documentation.
o Unit testing fixes defects very early in the development
phase that's why there is a possibility to occur a smaller
number of defects in upcoming testing levels.
o It helps with code reusability by migrating code and test
cases.
Example of Unit testing
Let us see one sample example for a better understanding of the
concept of unit testing:

For the amount transfer, requirements are as follows:

1. Amount transfer

1.1 From account number (FAN)→ Text Box

1.1.1 FAN→ accept only 4 digit

1.2 To account no (TAN)→ Text Box

1.2.1 TAN→ Accept only 4 digit

1.3 Amount→ Text Box

1.3.1 Amount → Accept maximum 4 digit


1.4 Transfer→ Button

1.4.1 Transfer → Enabled

1.5 Cancel→ Button

1.5.1 Cancel→ Enabled

Below are the application access details, which is given by the


customer
o URL→ login Page
o Username/password/OK → home page
o To reach Amount transfer module follow the below
Loans → sales → Amount transfer
While performing unit testing, we should follow some rules,
which are as follows:
o To start unit testing, at least we should have one module.
o Test for positive values
o Test for negative values
o No over testing
o No assumption required
When we feel that the maximum test coverage is achieved, we
will stop the testing.
Now, we will start performing the unit testing on the different
components such as
o From account number(FAN)
o To account number(TAN)
o Amount
o Transfer
o Cancel

For the FAN components

Values Description

1234 Accept

4311 Error message→ account valid or not

Blank Error message→ enter some values

5 digit/ 3 digit Error message→ accept only 4 digit

Alphanumeric Error message → accept only digit

Blocked account no Error message


Copy and paste the value Error message→ type the value

Same as FAN and TAN Error message

For the TAN component


o Provide the values just like we did in From account
number (FAN) components
For Amount component
o Provide the values just like we did in FAN and TAN
components.
For Transfer component
o Enter valid FAN value
o Enter valid TAN value
o Enter the correct value of Amount
o Click on the Transfer button→ amount transfer
successfully( confirmation message)
For Cancel Component
o Enter the values of FAN, TAN, and amount.
o Click on the Cancel button → all data should be cleared.
Unit Testing Tools
We have various types of unit testing tools available in the market,
which are as follows:
o NUnit
o JUnit
o PHPunit
o Parasoft Jtest
o EMMA
Unit Testing Techniques:
Unit testing uses all white box testing techniques as it uses the
code of software application:
o Data flow Testing
o Control Flow Testing
o Branch Coverage Testing
o Statement Coverage Testing
o Decision Coverage Testing
How to achieve the best result via Unit testing?
Unit testing can give best results without getting confused and
increase complexity by following the steps listed below:
o Test cases must be independent because if there is any
change or enhancement in requirement, the test cases will
not be affected.
o Naming conventions for unit test cases must be clear and
consistent.
o During unit testing, the identified bugs must be fixed before
jump on next phase of the SDLC.
o Only one code should be tested at one time.
o Adopt test cases with the writing of the code, if not doing so,
the number of execution paths will be increased.
o If there are changes in the code of any module, ensure the
corresponding unit test is available or not for that module.
Advantages and disadvantages of unit testing
The pros and cons of unit testing are as follows:
Advantages
o Unit testing uses module approach due to that any part can
be tested without waiting for completion of another parts
testing.
o The developing team focuses on the provided functionality
of the unit and how functionality should look in unit test
suits to understand the unit API.
o Unit testing allows the developer to refactor code after a
number of days and ensure the module still working without
any defect.
Disadvantages
o It cannot identify integration or broad level error as it works
on units of the code.
o In the unit testing, evaluation of all execution paths is not
possible, so unit testing is not able to catch each and every
error in a program.
o It is best suitable for conjunction with other testing
activities.

Test Harness
A test harness is also called an automated test framework.
In software testing, a test harness is a group of software and test
data designed to test a program element by operating it under
different situations and supervising its practices and results. A
test harness is a software designed to ease integration testing.
Here test stubs are common units of the software under progress
and are restored by operating units as the software is developed.
What is Test Harness?
The test harness is a collection of stubs, drivers, and other
supporting tools that are required to automate test execution.
Test harnesses are exterior to the software being under test and
replicate resources or performance which are not available in a
test environment. Suppose, when trying to design software that
needs to combine with the software on a mainframe computer,
but if no mainframe is there during the development phase, then a
test harness should be created to use as a replacement.
 A test harness has two important parts, a test execution
engine, and a test script repository.
 The test execution engine is the software that is used to
perform the test and the test script repository is the location
where test scripts and test cases are stored.
 It contains all information that is needed to compile and run
a test like test cases, target deployment port, etc.
 Test harnesses are used in two main areas, automation
testing, and integration testing.
 One of the benefits of test harnesses includes the automation
of the testing process, support of debugging modes, etc.
Features of Test Harness
 Support test automation: Test harnesses support the
automation of tests. They can call functions with donated
limits and compare the output to the estimated result.
 The test harness is a holder to the developed code: It can
be tested by an automation framework. It should permit
particular tests to work, adapt a run-time condition, and
provide a capacity to scan output.
 Test harness may be a portion of deliverable software: It
is distinguished from the application source code and may
be replicated on various projects.
 Test harness replicates software operation: It will not
have awareness of test suites, test cases, or test reports.
Those things are given by a testing framework and
corresponding automated testing tools. The test harness task
is to arrange the right test matches.
 Integrate test harness for composite frameworks: The
test harness will normally be particular to a development
environment like Java. But, integration test harnesses have
been developed for use in more composite frameworks.
Why Use Test Harness?
 Automate testing process: Test Harness helps automate the
testing procedures and thus increases the productivity of the
system through automation.
 Execute test suites: Test cases and test suites execution.
 Print test results: The test harness is useful in generating
test reports.
 Helps to measure code coverage: It helps developers to
measure the cove coverage at a code level.
 Helps to simulate complex conditions: It helps to simulate
and handle complex conditions that testers find difficult to
handle.
 Support debugging: Test harness helps to support
debugging activities.
 Analyze test results: A test harness helps to analyze test
results.
 Enhance software quality: It helps to enhance the quality
of the software components and applications.
 Increased productivity: Test harness helps to increase
productivity through automation.
How is the Test Harness Done?
Test Harness is a procedure to do all the testing works, like test
execution through test libraries and generating results. Below are
steps that outline the procedure for the test harness:
1. Read test cases: Developers and testers need to create
certain test scripts to manage specific test scenarios and test
data. It starts with the preparation of data, a procedure to
collect essential data.
2. Invokes applications: After the execution of the test
harness, testers need to make sure that they can execute all
tests and generate results through a single command.
3. Collects actual results: Results are collected from the
execution.
4. Compare expected results: Expected results are compared
with the actual test results to observe the discrepancies and
report them.
5. Writes test reports: Test reports are created and submitted
for further analyses.

Test Harness vs Test Framework


Parameters Test Harness Test Framework

The test harness is


A test framework is a
a collection of
set of procedures,
stubs, drivers, and
processes, and
other supporting
Definition environments through
tools that are
which the tester can
required to
design and implement
automate test
automated tests.
execution.

It consists of
information such as It consists of
test cases, and the information such as test
Composition target deployment library, automation
port that is testing, testing tools,
required to compile testing platform, etc.
and execute tests.

Record and The tester cannot The tester can manually


playback use the record and record and playback
feature playback feature. scripts.

Data-driven testing,
Code-driven testing,
Module driven testing,
Automation testing
Behavior-driven testing,
Examples and Integration
Keyword driven testing,
testing.
Hybrid testing, and
Modularity driven
testing.
Parameters Test Harness Test Framework

Example Cucumber, Robot


JUnit, NUnit, etc.
tools Framework, etc.

Settings Where Test Harness is Utilized


There are two settings where the test harness is utilized:
1. Automation Testing: In the world of automation testing, the
Test Harness is defined as a framework and software system
that contains the test scripts. It also includes the essential
parameters required to run those test scripts. After
obtaining the test results, testers differentiate them from
other data and supervise the results.
2. Integration Testing: Integration Testing is defined as a
process in which independent units and components are
connected together and are tested to check whether they are
behaving as expected or not. The purpose of integration
testing is to identify defects when modules are integrated
and communicate with each other. Integration testing can be
done only when the software is unit tested and the modules
are 100% ready for testing. But, this does not happen often
because some modules meant for integration testing may
not be ready at that time. In such cases, you can use test
stubs and test drivers.
Test Harness Tools
Test Harness tools fall under automation software and test
management software. Implementing a test harness with one tool
is not possible. It can be done through a combination of tools like
QTP, HP ALM, JUnit, and NUnit.
1. JUnit: JUnit is a unit testing framework. It is for the Java
programming language. It is an open-source testing framework. It
is essential in test-driven development. It is from the family of
unit testing frameworks which is collectively known as xUnit that
originated with SUnit.
Features of Junit:
 It is an open-source network.
 It provides Annotations, Assertions, and Test runners.
 It improves the quality of code.
 It supports automated test running.
 The results are easily analyzed.
2. NUnit: It is an open-source unit testing framework. It is for
the .NET Framework and Mono. Its purpose is the same as JUnit in
the Java world. NUnit is one of several programs in the xUnit
family.
Features of NUnit:
 Here, tests can be run from a console runner, in Visual Studio
by a Test Adapter, or third-party runners.
 Parallel running of tests is also possible.
 .It provides support for data-driven tests.
 It supports multiple platforms like .NET Core, Xamarin
Mobile, Compact Framework, and Silverlight.
 All test cases can be added to one or more categories, to
permit careful operation.
Benefits of Test Harness
 Increases productivity: As the testing procedure is
automated, productivity is increased.
 Automate testing process: A test harness helps to automate
the testing process to the maximum extent.
 Support code debugging: Test harnesses are composed of
drivers and stubs and thus are capable of support code
debugging.
 Helps in early bug detection: Test harness helps
developers in the early identification of the defect in the
code.
 Improves software quality: It helps to enhance the overall
quality of the software application.
 Helps to measure code coverage: It helps developers to
measure the code coverage at the elementary level during
application development.
 Cover complex test scenarios: Test harness helps to cover
complex test scenarios which are difficult to handle using
traditional testing approaches.
 Increases confidence in the robustness of the
application: As the application is well-tested at the unit
level so it helps to increase the confidence in the robustness
of the application.
Limitations of Test Harness
 No support for record and play: Test harness tools provide
no support for record and play features.
 Programming knowledge required: Testers using test
harness tools are expected to have programming language
knowledge such as Java, .NET, etc.
 Incurs cost: Test harness incurs the cost for writing
automated test suites through skilled developers.

What is Integration Testing?


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.

Integration Testing
 Integration testing can be done by picking module by
module. This can be done so that there should be a proper
sequence to be followed.
 And also if you don’t want to miss out on any integration
scenarios then you have to follow the proper sequence.
 Exposing the defects is the major focus of the integration
testing and the time of interaction between the integrated
units.
Why is Integration Testing Important?
Integration testing is important because it verifies that individual
software modules or components work together correctly as a
whole system. This ensures that the integrated software functions
as intended and helps identify any compatibility or
communication issues between different parts of the system. By
detecting and resolving integration problems early, integration
testing contributes to the overall reliability, performance, and
quality of the software product.
Integration test approaches
There are four types of integration testing approaches. Those
approaches are the following:

Integration test approaches


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.
 Big-bang integration testing is a software testing approach in
which all components or modules of a software application
are combined and tested at once.
 This approach is typically used when the software
components have a low degree of interdependence or when
there are constraints in the development environment that
prevent testing individual components.
 The goal of big-bang integration testing is to verify the
overall functionality of the system and to identify any
integration problems that arise when the components are
combined.
 While big-bang integration testing can be useful in some
situations, it can also be a high-risk approach, as the
complexity of the system and the number of interactions
between components can make it difficult to identify and
diagnose problems.
Advantages of Big-Bang Integration Testing
 It is convenient for small systems.
 Simple and straightforward approach.
 Can be completed quickly.
 Does not require a lot of planning or coordination.
 May be suitable for small systems or projects with a low
degree of interdependence between components.
Disadvantages of Big-Bang Integration Testing
 There will be quite a lot of delay because you would have to
wait for all the modules to be integrated.
 High-risk critical modules are not isolated and tested on
priority since all modules are tested at once.
 Not Good for long projects.
 High risk of integration problems that are difficult to identify
and diagnose.
 This can result in long and complex debugging and
troubleshooting efforts.
 This can lead to system downtime and increased
development costs.
 May not provide enough visibility into the interactions and
data exchange between components.
 This can result in a lack of confidence in the system’s
stability and reliability.
 This can lead to decreased efficiency and productivity.
 This may result in a lack of confidence in the development
team.
 This can lead to system failure and decreased user
satisfaction.
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.
Advantages of Bottom-Up Integration Testing
 In bottom-up testing, no stubs are required.
 A principal advantage of this integration testing is that
several disjoint subsystems can be tested simultaneously.
 It is easy to create the test conditions.
 Best for applications that uses bottom up design approach.
 It is Easy to observe the test results.
Disadvantages of Bottom-Up Integration Testing
 Driver modules must be produced.
 In this testing, the complexity that occurs when the system is
made up of a large number of small subsystems.
 As Far modules have been created, there is no working
model can be represented.
3. Top-Down Integration Testing
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.
Advantages of Top-Down Integration Testing
 Separately debugged module.
 Few or no drivers needed.
 It is more stable and accurate at the aggregate level.
 Easier isolation of interface errors.
 In this, design defects can be found in the early stages.
Disadvantages of Top-Down Integration Testing
 Needs many Stubs.
 Modules at lower level are tested inadequately.
 It is difficult to observe the test output.
 It is difficult to stub design.
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.
Advantages of Mixed Integration Testing
 Mixed approach is useful for very large projects having
several sub projects.
 This Sandwich approach overcomes this shortcoming of the
top-down and bottom-up approaches.
 Parallel test can be performed in top and bottom layer tests.
Disadvantages of Mixed Integration Testing
 For mixed integration testing, it requires very high cost
because one part has a Top-down approach while another
part has a bottom-up approach.
 This integration testing cannot be used for smaller systems
with huge interdependence between different modules.
Applications of Integration Testing
1. Identify the components: Identify the individual
components of your application that need to be integrated.
This could include the frontend, backend, database, and any
third-party services.
2. Create a test plan: Develop a test plan that outlines the
scenarios and test cases that need to be executed to validate
the integration points between the different components.
This could include testing data flow, communication
protocols, and error handling.
3. Set up test environment: Set up a test environment that
mirrors the production environment as closely as possible.
This will help ensure that the results of your integration
tests are accurate and reliable.
4. Execute the tests: Execute the tests outlined in your test
plan, starting with the most critical and complex scenarios.
Be sure to log any defects or issues that you encounter
during testing.
5. Analyze the results: Analyze the results of your integration
tests to identify any defects or issues that need to be
addressed. This may involve working with developers to fix
bugs or make changes to the application architecture.
6. Repeat testing: Once defects have been fixed, repeat the
integration testing process to ensure that the changes have
been successful and that the application still works as
expected.
Test Cases For Integration Testing
 Interface Testing : Verify that data exchange between
modules occurs correctly. Validate input/output parameters
and formats. Ensure proper error handling and exception
propagation between modules.
 Functional Flow Testing : Test end-to-end functionality by
simulating user interactions. Verify that user inputs are
processed correctly and produce expected outputs. Ensure
seamless flow of data and control between modules.
 Data Integration Testing : Validate data integrity and
consistency across different modules. Test data
transformation and conversion between formats. Verify
proper handling of edge cases and boundary conditions.
 Dependency Testing : Test interactions between dependent
modules. Verify that changes in one module do not adversely
affect others. Ensure proper synchronization and
communication between modules.
 Error Handling Testing : Validate error detection and
reporting mechanisms. Test error recovery and fault
tolerance capabilities. Ensure that error messages are clear
and informative.
 Performance Testing : Measure system performance under
integrated conditions. Test response times, throughput, and
resource utilization. Verify scalability and concurrency
handling between modules.
 Security Testing : Test access controls and permissions
between integrated modules. Verify encryption and data
protection mechanisms. Ensure compliance with security
standards and regulations.
 Compatibility Testing : Test compatibility with external
systems, APIs, and third-party components. Validate
interoperability and data exchange protocols. Ensure
seamless integration with different platforms and
environments.
Difference between Manual Testing and Automated Testing

Automation
Parameters Manual Testing Testing

Definition In manual testing, In automated


the test cases are testing, the test
executed by the cases are executed
Automation
Parameters Manual Testing Testing

by the software
human tester.
tools.

Automation testing
Manual testing is
Processing Time is faster than
time-consuming.
manual testing.

Automation testing
Manual testing takes up
Resources
takes up human automation tools
requirement
resources. and trained
employees.

Exploratory testing Exploratory testing


Exploratory
is possible in is not possible in
testing
manual testing. automation testing.

Automation testing
Manual testing
Framework uses frameworks
doesn’t use
requirement like Data Drive,
frameworks.
Keyword, etc.

Automated testing
Manual testing is
is more reliable
not reliable due to
Reliability due to the use of
the possibility of
automated tools
manual errors.
and scripts.
Automation
Parameters Manual Testing Testing

In automated
In manual testing,
testing, investment
investment is
Investment is required for tools
required for human
and automated
resources.
engineers.

In automated
In manual testing,
testing, the test
the test results are
results are readily
Test results recorded in an
available to all the
availability excel sheet so they
stakeholders in the
are not readily
dashboard of the
available.
automated tool.

Unit Testing vs Integration Testing

S.
No. Unit Testing Integration Testing

In unit testing, each In integration testing, all


1. module of the software is modules of the software are
tested separately. tested combined.

In unit testing tester Integration testing doesn’t


2. knows the internal design know the internal design of
of the software. the software.

3. Unit testing is performed Integration testing is


first of all testing performed after unit testing
S.
No. Unit Testing Integration Testing

processes. and before system testing.

Unit testing is white box Integration testing is black


4.
testing. box testing.

Unit testing is performed Integration testing is


5.
by the developer. performed by the tester.

What is Scenario Testing?


Scenario Testing is a Software Testing Technique that uses
scenarios i.e. speculative stories to help the tester work through a
complicated problem or test system. The ideal scenario test is a
reliable, complicated, convincing or motivating story the outcome
of which is easy to assess. It is performed to ensure that the end to
end functioning of software and all the process flow of the
software are working properly.
In scenario testing:
1. The testers assume themselves to be the end users and find
the real world scenarios or use cases which can be carried
out on the software by the end user.
2. The testers take help from clients, stakeholders and
developers to create test scenarios. A test scenario is a story
which describes the usage of the software by an end user.
Characteristics of Scenario Testing
A scenario test has five key characteristics:
1. Story
Scenario tests are sometimes given as stories or narratives that
outline a certain circumstance or environment in which the
application is expected to function. Stakeholders may more easily
relate to the testing method and understand how the product will
function in real-world scenarios when stories are used.
2. Motivating
Scenario tests need to inspire and relate to stakeholders or end
users. A compelling scenario motivates stakeholders to actively
participate, which improves teamwork and results in a greater
understanding of user requirements and expectations.
3. Credible
Since stakeholders can see that the scenarios are meaningful and
representative of actual circumstances, credible scenarios boost
stakeholder’s trust in the testing process.
4. Complex
Since they include a variety of inputs, conditions and interactions,
scenario tests are intended to be complex. The complicated nature
of the scenarios guarantees a deeper analysis of the software’s
capabilities and it’s capacity to manage complex, multiple
circumstances.
5. Easy to evaluate
Even if situations could be complex, they should be designed so
that evaluation is simple. Simple evaluation speeds up decision-
making and feedback, enabling effective problem-solving and
identification.
Scenario Testing Process

Methods in Scenario Testing


There are various methods in scenario testing:
1. System scenarios: Scenario tests used in this method are
only those sets of realistic, user activities that cover various
components in the system.
2. Use-case and role-based scenarios In the use-case and
role-based scenario method the focus is specifically on how
the system is used by a user with different roles and
environment.
3. Recovery Scenarios: Test scenarios for data backup,
restoration and recovery are called recovery scenarios.
Additionally, it assesses how the system would function in
the case of a server or component failure.
4. Positive Scenarios: Examining the system in conditions that
are common and expected.
5. Negative Scenarios: Assessing the way the system responds
to incorrect or unexpected inputs and circumstances.
6. Boundary Scenarios: Testing the system at the boundaries
of its inputs and outputs is known as boundary scenario.
7. Error scenarios: These involve generating error scenarios
and testing that the system reacts correctly.
Risks of Scenario Testing
1. Limited Scenario Reporting: Inadequate coverage may
result from not identifying or testing every case that could
arise.
2. Little In-depth Analysis of Edge Cases: If edge situations
or extreme possibilities are disregarded, there could be
problems when using them in the actual world.
3. High Maintenance Costs: Maintaining a big number of
situations can get expensive and time-consuming.
4. Dependency on Data: Since scenarios could rely heavily on
particular data sets, simulating differences in real life might
be difficult.
5. A Lost Feeling of Security: If other crucial testing kinds, like
unit or integration testing, are disregarded, relying just on
scenario testing could provide a false sense of security.
6. Excessive Focus on Positive Situations: Over focusing
on favorable possibilities can cause one to overlook bad or
extraordinary scenarios, which are more likely to cause
problems for the system.
7. The complexity of executing a scenario: Complex scenario
execution might be prone to errors, making it challenging to
replicate problems or interpret test findings.
What is Acceptance Testing?
It is formal testing according to user needs, requirements, and
business processes conducted to determine whether a system
satisfies the acceptance criteria or not and to enable the users,
customers, or other authorized entities to determine whether to
accept the system or not.
Acceptance Testing is the last phase of software
testing performed after System Testing and before making the
system available for actual use.
Types of Acceptance Testing
Here are the Types of Acceptance Testing
1. User Acceptance Testing (UAT)
2. Business Acceptance Testing (BAT)
3. Contract Acceptance Testing (CAT)
4. Regulations Acceptance Testing (RAT)
5. Operational Acceptance Testing (OAT)
6. Alpha Testing
7. Beta Testing

. User Acceptance Testing (UAT)


 User acceptance testing is used to determine whether the
product is working for the user correctly.
 Specific requirements which are quite often used by the
customers are primarily picked for testing purposes. This is
also termed as End-User Testing.
2. Business Acceptance Testing (BAT)
 BAT is used to determine whether the product meets the
business goals and purposes or not.
 BAT mainly focuses on business profits which are quite
challenging due to the changing market conditions and new
technologies, so the current implementation may have to
being changed which results in extra budgets.
3. Contract Acceptance Testing (CAT)
 CAT is a contract that specifies that once the product goes
live, within a predetermined period, the acceptance test
must be performed, and it should pass all the acceptance use
cases.
 Here is a contract termed a Service Level Agreement (SLA),
which includes the terms where the payment will be made
only if the Product services are in-line with all the
requirements, which means the contract is fulfilled.
 Sometimes, this contract happens before the product goes
live.
 There should be a well-defined contract in terms of the
period of testing, areas of testing, conditions on issues
encountered at later stages, payments, etc.
4. Regulations Acceptance Testing (RAT)
 RAT is used to determine whether the product violates the
rules and regulations that are defined by the government of
the country where it is being released.
 This may be unintentional but will impact negatively on the
business. Generally, the product or application that is to be
released in the market, has to go under RAT, as different
countries or regions have different rules and regulations
defined by its governing bodies.
 If any rules and regulations are violated for any country then
that country or the specific region then the product will not
be released in that country or region.
 If the product is released even though there is a violation
then only the vendors of the product will be directly
responsible.
5. Operational Acceptance Testing (OAT)
 OAT is used to determine the operational readiness of the
product and is non-functional testing.
 It mainly includes testing of recovery, compatibility,
maintainability, reliability, etc. OAT assures the stability of
the product before it is released to production.
6. Alpha Testing
 Alpha testing is used to determine the product in the
development testing environment by a specialized testers
team usually called alpha testers.
7. Beta Testing
 Beta testing is used to assess the product by exposing it to
the real end-users, typically called beta testers in their
environment.
 Feedback is collected from the users and the defects are
fixed. Also, this helps in enhancing the product to give a rich
user experience.
Use of Acceptance Testing
1. To find the defects missed during the functional testing
phase.
2. How well the product is developed.
3. A product is what actually the customers need.
4. Feedback help in improving the product performance and
user experience.
5. Minimize or eliminate the issues arising from the
production.
Advantages of Acceptance Testing
1. This testing helps the project team to know the further
requirements from the users directly as it involves the users
for testing.
2. Automated test execution.
3. It brings confidence and satisfaction to the clients as they are
directly involved in the testing process.
4. It is easier for the user to describe their requirement.
5. It covers only the Black-Box testing process and hence the
entire functionality of the product will be tested.
Disadvantages of Acceptance Testing
1. Users should have basic knowledge about the product or
application.
2. Sometimes, users don’t want to participate in the testing
process.
3. The feedback for the testing takes a long time as it involves
many users and the opinions may differ from one user to
another user.
4. Development team is not participated in this testing process.

You might also like