You are on page 1of 33

INDEX

 ABSTRACT
 INTRODUCTION
 UNIT TESTING
 INTEGRATION TESTING
 USER ACCEPTANCE TESTING(UTA)
ABSTRACT
The development of large software systems is a
complex and error prone process. Faults might occur
at any development stage and they must be identified
and removed as early as possible to stop their
propagation and reduce verification costs. Quality
engineers must be involved in the development
process since the very early phases to identify
required qualities and estimate their impact on the
development process. Their tasks span over the
whole development cycle and go beyond the product
deployment through maintenance and post mortem
analysis. Developing and enacting an effective quality
process is not a simple task, but it requires that we
integrate many quality-related activities with product
characteristics, process organization, available
resources and skills, and budget constraints. so level
of testing are four types , we’ll see it further.
INTRODUCTION
Tests are grouped together based on where they
are added in SDLC or the by the level of detailing
they contain. In general, there are four levels of
testing: unit testing, integration testing, system
testing, and acceptance testing. The purpose of
Levels of testing is to make software testing
systematic and easily identify all possible test
cases at a particular level.
There are many different testing levels which
help to check behavior and performance for
software testing. These testing levels are
designed to recognize missing areas and
reconciliation between the development
lifecycle states. In SDLC models there are
characterized phases such as requirement
gathering, analysis, design, coding or execution,
testing, and deployment. All these phases go
through the process of software testing levels.

Levels of Testing
There are mainly four Levels of Testing in software
testing :
1. Unit Testing : checks if software components are
fulfilling functionalities or not.
2. Integration Testing : checks the data flow from
one module to other modules.
3. System Testing : evaluates both functional and
non-functional needs for the testing.
4. Acceptance Testing : checks the requirements of a
specification or contract are met as per its
delivery.
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.
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.
DIAGRAM
How to do Unit Testing
In order to do Unit Testing, developers write a section
of code to test a specific function in software
application. Developers can also isolate this function
to test more rigorously which reveals unnecessary
dependencies between function being tested and
other units so the dependencies can be eliminated.
Developers generally use UnitTest framework to
develop automated test cases for unit testing.
Unit Testing is of two types
 Manual
 Automated
Unit testing is commonly automated but may still be
performed manually. Software Engineering does not
favor one over the other but automation is preferred.
A manual approach to unit testing may employ a step-
by-step instructional document.
Under the automated approach-
 A developer writes a section of code in the
application just to test the function. They would
later comment out and finally remove the test
code when the application is deployed.
 A developer could also isolate the function to test
it more rigorously. This is a more thorough unit
testing practice that involves copy and paste of
code to its own testing environment than its
natural environment. Isolating the code helps in
revealing unnecessary dependencies between the
code being tested and other units or data
spaces in the product. These dependencies can
then be eliminated.
 A coder generally uses a UnitTest Framework to
develop automated test cases. Using an
automation framework, the developer codes
criteria into the test to verify the correctness of
the code. During execution of the test cases, the
framework logs failing test cases. Many
frameworks will also automatically flag and
report, in summary, these failed test cases.
Depending on the severity of a failure, the
framework may halt subsequent testing.
 The workflow of Unit Testing is 1) Create Test
Cases 2) Review/Rework 3) Baseline 4) Execute
Test Cases.

 Unit tests help to fix bugs early in the


development cycle and save costs.
 It helps the developers to understand the testing
code base and enables them to make changes
quickly
 Good unit tests serve as project documentation
Unit Testing Advantage
 Developers looking to learn what functionality is
provided by a unit and how to use it can look at
the unit tests to gain a basic understanding of the
unit API.
 Unit testing allows the programmer to refactor
code at a later date, and make sure the module
still works correctly (i.e. Regression testing). The
procedure is to write test cases for all functions
and methods so that whenever a change causes a
fault, it can be quickly identified and fixed.
 Due to the modular nature of the unit testing, we
can test parts of the project without waiting for
others to be completed.

Unit Testing Disadvantages


 Unit testing can’t be expected to catch every
error in a program. It is not possible to evaluate
all execution paths even in the most trivial
programs
 Unit testing by its very nature focuses on a unit of
code. Hence it can’t catch integration errors or
broad system level errors.
It’s recommended unit testing be used in conjunction
with other testing activities.
INTEGRATION TESTING
INTEGRATION TESTING is defined as a type of testing
where software modules are integrated logically and
tested as a group. A typical software project consists
of multiple software modules, coded by different
programmers. The purpose of this level of testing is to
expose defects in the interaction between these
software modules when they are integrated
Integration Testing focuses on checking data
communication amongst these modules. Hence it is
also termed as ‘I & T’ (Integration and Testing), ‘String
Testing’ and sometimes ‘Thread Testing’.
DIAGRAM
Example of Integration Test Case
Integration Test Case differs from other test cases in
the sense it focuses mainly on the interfaces & flow of
data/information between the modules. Here priority
is to be given for the integrating links rather than the
unit functions which are already tested.
Sample Integration Test Cases for the following
scenario: Application has 3 modules say ‘Login Page’,
‘Mailbox’ and ‘Delete emails’ and each of them is
integrated logically.
Here do not concentrate much on the Login Page
testing as it’s already been done in Unit Testing. But
check how it’s linked to the Mail Box Page.
Similarly Mail Box: Check its integration to the Delete
Mails Module.

Advantages of Integration testing


 As discussed above, it helps in identifying
integration issues between the modules.
 It helps in ensuring that the integrated modules
work properly before moving to the system
testing of the complete application.
 Bugs found at this level are easier to resolve as
compared to the one found at later stages of
testing – system and acceptance testing.
 It improves test coverage and provides an
additional level of reliability.
Integration Testing Types
Big-bang Integration
In big bang integration, all the modules are first
required to be completed and then integrated. After
integration, testing is carried out on the integrated
unit as a whole. It is different from system testing as
here we focus testing on the
interfacing/communication between the modules.

Advantage – It is suitable for smaller projects where


we can have all the modules developer before
starting with integration testing.
Disadvantage – It is very difficult to incorporate as it is
not practical or advisable to have all the modules
prepared before starting integration testing.
Top-down Integration Testing
Top-down integration is an incremental approach of
integration testing where the testing flow starts from
top-level modules (modules higher in the hierarchy)
towards the lower-level modules. As there is very
much possible that the lower level modules might not
have been developed while beginning with top-level
modules. So, in those cases, stubs are used.
Stubs are dummy modules that simulate the
functioning of a module by accepting the parameters
received by the module and giving an acceptable
result. Generally, stubs have hard-coded input and
output that helps in testing the other modules
integrated with it.
Advantage – We don’t have to wait for all the
modules to get developed with the use of stubs. Also,
we can prioritize the testing of critical integrated
modules first.
Disadvantage – This technique requires the creation
of many stubs for the simulating the lower-level
modules. Also, the lower-level modules might not get
tested adequately.
Bottom-up Integration Testing
Bottom-up integration is also based on an
incremental approach and starts from lower-level
modules, moving upwards to the higher-level
modules. Again the higher-level modules might not
have been developed by the time lower modules are
tested. So, in those cases, Drivers are used. These
drivers simulate the functionality of higher-level
modules in order to test lower-level modules.

Advantage – Similar to top-down testing, we don’t


have to wait for all the modules to get developed
before starting testing.
Disadvantage – The top-level modules that are tested
at the later stages, might not get tested adequately
and can have bugs.
Hybrid Integration Testing
The hybrid integration approach is also called the
Sandwich approach. This approach is a combination of
both top-down and bottom-up integration testing. In
this approach, the integration starts from the middle
layer, and testing is carried out in both the directions
– towards higher-level modules(upwards) and
towards lower-level modules (downwards). This way
includes benefits of both top-down and bottom-up
approaches and helps in faster testing of the module’s
interfaces.

Advantage – Since we can move both upwards and


downwards. So, it is the most time-efficient method
with the option to prioritize the modules on the top
or bottom level.
Disadvantage – It is difficult to implement this
approach as we have integrate and move in both the
directions of the module to be tested.
SYSTEM TESTING
.
System Testing is a level of testing that validates the
complete and fully integrated software product. The
purpose of a system test is to evaluate the end-to-end
system specifications. Usually, the software is only
one element of a larger computer-based system.
Ultimately, the software is interfaced with other
software/hardware systems. System Testing is
actually a series of different tests whose sole purpose
is to exercise the full computer-based system.
 Testing the fully integrated applications including
external peripherals in order to check how
components interact with one another and with
the system as a whole. This is also called End to
End testing scenario.
 Verify thorough testing of every input in the
application to check for desired outputs.
 Testing of the user’s experience with the
application. 

DIAGRAM
Advantages of System Testing
 Verifies the system against the business,
functional and technical requirements of the end
users.
 It helps in getting maximum bugs before
acceptance testing.
 System testing increases the confidence level of
the team in the product before the product goes
for acceptance testing.
 It is the first testing level in which the whole
system is under test from end to end. So, it helps
in finding important defects which, unit and
integration testing could not detect.
 This testing phase uses the test environment
which is similar to the real business environment
or production environment. Consequently, it
helps in boosting the confidence of users into the
product.
 It is a black box testing hence testers do not need
programming knowledge to perform it.

Types of System Testing


There are various techniques for performing System
testing. In short, each type of system testing
technique differs in its objectives and its way of
accomplishing them. Thus, the type of testing
technique of the project depends on projects size,
complexity, timeline, and goals. Basically, any testing
which tests by combining all the individual modules to
form the complete system is system testing.

Some of the common System testings are:


 Functional Testing: In this type, tests are run to
validate the functionality of the system.
 Regression Testing: This testing verifies whether
or not the existing system works properly after
the change.
 Security Testing: In this type of system testing,
tests uncover the security vulnerabilities of the
system.
 Performance Testing: This testing assesses the
performance parameters like reliability, the
stability and stability of the system under various
conditions.
 Usability Testing: In usability testing, tests
evaluate if the system is usable by the end user.
 Recovery Testing: It validates if the system is
recoverable after common close down conditions.
 Documentation Testing: Verifies the available
documentation of the product and its usability.
Challenges of System Testing
 System test strategy is very crucial to the success
of the testing.
 System testing starts late when all the
components are ready. Hence, the cost of fixing
bugs is higher.
 Also, the localization of the bugs is difficult as the
entire system is participating in the testing.

ACCEPTANCE TESTING
Acceptance Testing is a type of testing performed by
the end user or the client to verify/accept the
software system before moving the software
application to the production environment. UAT is
done in the final phase of testing after functional,
integration and system testing is done.

Purpose of UAT
The main Purpose of UAT is to validate end to end
business flow. It does not focus on cosmetic errors,
spelling mistakes or system testing. User Acceptance
Testing is carried out in a separate testing
environment with production-like data setup. It is
kind of black box testing where two or more end-
users will be involved.

Acceptance Testing is a method of software testing


where a system is tested for acceptability. The major
aim of this test is to evaluate the compliance of the
system with the business requirements and assess
whether it is acceptable for delivery or not.
Types of Acceptance Testing:
1. 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 the testing purpose. 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 that the current
implementation may have to being changed which
result in extra budgets.
3. Contract Acceptance Testing (CAT):
CAT is a contract which 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 as 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 a non-functional testing. It
mainly includes testing of recovery, compatibility,
maintainability, reliability etc.
6.
OAT assures the stability of the product before it is
released to the production.
7. Alpha Testing:
Alpha testing is used to determine the product in
the development testing environment by a
specialized testers team usually called alpha
testers.
8. Beta Testing:
Beta testing is used to assess the product by
exposing it to the real end-users, usually 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:
 To find the defects missed during the functional
testing phase.
 How well the product is developed.
 A product is what actually the customers need.
 Feedbacks help in improving the product
performance and user experience.
 Minimize or eliminate the issues arising from the
production
Advantages of Acceptance Testing
 It enhances the requirement definition and
satisfaction of the system users as the users carry out
this testing.
 Outlining the quality criteria of the software at
the beginning of the software development life cycle
(SDLC) makes carrying out acceptance tests much
more straightforward.
 Executing acceptance tests gives some experience
and knowledge about the application to the user.
Disadvantages of Acceptance Testing
 Sometimes the users do not want to participate
in acceptance test processes.
 The users cannot comprehend the test cases
defined by a software tester. Hence a software tester
must assist the users by translating them to carry out
the testing.
REFRENCE
 The Art of Software Testing
 https://en.wikipedia.org/wiki/Software_testing
 https://www.guru99.com/levels-of-testing.html
CONCLUSION

Hence, we learned different types of


testing such as unit testing, intregration
testing , system testing, acceptance
testing. We got information about this
testing by their diagrams and points.
CONCLUSION

You might also like