Unit IV
Unit IV
Unit IV
.
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 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
Validation testing is also known as dynamic testing,
where we are ensuring that "we have developed the
product right."
And it also checks that the software meets the
business needs of the client.
It is the process of checking the validation of product
i.e., it checks what we are developing is the right
product.
Validation testing can be best demonstrated using V-
Model. The Software/product under test is evaluated
during this type of testing.
Validation Testing
Validation Testing
Activities involved in validation:
Black box testing
White box testing
Unit testing
Integration testing
Verification Testing
Verification is the process of evaluating work-
products of a development phase to determine
whether they meet the specified requirements.
Verification ensures that the product is built
according to the requirements and design
specifications.
It also answers to the question, Are we building the
product, right?
Validation Testing
Verification testing includes different activities such
as business requirements, system requirements,
design review, and code walkthrough while
developing a product.
It is also known as static testing, where we are
ensuring that "we are developing the right product
or not".
Verification Testing
Difference between Verification and
Validation Testing
Verification and Validation is the process of
investigating that a software system satisfies
specifications and standards, and it fulfills the
required purpose. Barry Boehm described
verification and validation as the following:
Verification: Are we building the product, right?
Validation: Are we building the right product?
Validation Testing
S. No. Verification Validation
1 It consists of checking of It consists of execution of
documents/files and is program and is performed by
performed by human. computer.
2 It comes before validation. It comes after verification
3 Quality assurance team does Validation is executed on
verification software code with the help of
testing team.
4 The goal of verification is The goal of validation is an
application and software actual product.
architecture and specification
5 It can find the bugs in the early It can only find the bugs that
stage of the development could not be found by the
verification process
Validation Testing
S. Verification Validation
No.
6 Verification is the static testing. Validation is the dynamic testing.
7 It does not include the execution Validation is the dynamic testing.
of the code
8 QA team does verification and With the involvement of testing
make sure that the software is as team validation is executed on
per the requirement in the SRS software code.
document.
9 Methods used in verification are Methods used in validation are
reviews, walkthroughs, Black Box Testing, White Box
inspections and desk-checking. Testing and non-functional
testing.
Classification of Manual Testing
In software testing, manual testing can be further
classified into three different types of testing, which
are as follows
White Box Testing
White Box Testing is a testing technique in which
software’s internal structure, design, and coding are
tested to verify input-output flow and improve
design, usability, and security.
In white box testing, code is visible to testers, so it is
also called Clear box testing, Open box testing,
Transparent box testing, Code-based testing, and
Glass box testing
White Box Testing
Working process of white box testing:
Input: Requirements, Functional specifications,
design documents, source code.
Processing: Performing risk analysis for guiding
through the entire process.
Proper test planning: Designing test cases so as to
cover entire code. Execute rinse-repeat until error-
free software is reached. Also, the results are
communicated.
Output: Preparing final report of the entire testing
process
White Box Testing
Black Box Testing
Black box testing is a type of software testing in
which the functionality of the software is not known.
The testing is done without the internal knowledge of
the products.
Black Box Testing mainly focuses on input and
output of software applications, and it is entirely
based on software requirements and specifications. It
is also known as Behavioral Testing.
Testing of Testing
Testing of Testing
The above Black-Box can be any software system
you want to test.
For Example, an operating system like Windows, a
website like Google, a database like Oracle or even
your own custom application.
Under Black Box Testing, you can test these
applications by just focusing on the inputs and
outputs without knowing their internal code
implementation.
How to do Black Box Testing
Initially, the requirements and specifications of the
system are examined.
Tester chooses valid inputs (positive test scenario) to
check whether SUT processes them correctly. Also,
some invalid inputs (negative test scenario) are
chosen to verify that the SUT can detect them.
Tester determines expected outputs for all those
inputs.
How to do Black Box Testing
Software tester constructs test cases with the selected
inputs.
The test cases are executed.
Software tester compares the actual outputs with the
expected outputs.
Defects if any are fixed and re-tested.
Types of Black Box Testing
Functional testing – This black box testing type is
related to the functional requirements of a system; it
is done by software testers.
Non-functional testing – This type of black box
testing is not related to testing of specific
functionality, but non-functional requirements such
as performance, scalability, usability.
Regression testing – Regression Testing is done after
code fixes, upgrades or any other system
maintenance to check the new code has not affected
the existing code.
Tools for Black Box Testing
Tools used for Black box testing largely depends on
the type of black box testing you are doing.
For Functional/ Regression Tests you can use – QTP,
Selenium
For Non-Functional Tests, you can use –
LoadRunner, Jmeter
Functional Testing
Functional testing is a type of testing which verifies
that each function of the software application
operates in conformance with the requirement
specification.
This testing mainly involves black box testing, and it
is not concerned about the source code of the
application.
Functional Testing
Every functionality of the system is tested by
providing appropriate input, verifying the output and
comparing the actual results with the expected
results.
This testing involves checking of User Interface,
APIs, Database, security, client/ server applications
and functionality of the Application Under Test.
The testing can be done either manually or using
automation
Non-Functional Testing
Non-functional testing is a type of testing to check
non-functional aspects (performance, usability,
reliability, etc.) of a software application.
It is explicitly designed to test the readiness of a
system as per nonfunctional parameters which are
never addressed by functional testing.
It verifies whether the behavior of the system is as
per the requirement or not.
Difference between Functional and Non-
fuctional Testing
Parameters Functional Non-Functional
It is performed before It is performed after the
Execution
non-functional testing. functional testing.
It is based on customer’sIt focusses on customer’s
Focus area
requirements. expectation.
It is difficult to define the
It is easy to define
Requirement requirements for non-functional
functional requirements.
testing.
Helps to validate the
Helps to validate the
Usage behavior of the
performance of the application.
application.
Carried out to validate It is done to validate the
Objective
software actions. performance of the software.
Difference between Functional and Non-
fuctional Testing
Parameters Functional Non-Functional
Functional testing is easy
It’s very hard to perform non-
Manual testing to execute by manual
functional testing manually.
testing.
It describes what the
Functionality It describes how the product works.
product does.
Example Test Check login The dashboard should load in 2
Case functionality. seconds.
Examples of Examples of Non-functional
Functional Testing Testing Types
Types Performance Testing
Unit testing Volume Testing
Testing Types
Smoke testing Scalability
User Acceptance Usability Testing
Integration Testing Load Testing
System Testing Portability Testing
Debugging
To launch an application into the market, it is very
necessary to cross-check it multiple times to deliver
an error-free product.
In the context of software engineering, debugging is
the process of fixing a bug in the software. In other
words, it refers to identifying, analyzing, and
removing errors.
Software programs undergo heavy testing, updating,
troubleshooting, and maintenance during the
development process.
Debugging
Debugging is a developer activity and effective
debugging is very important before testing begins to
increase the quality of the system.
Debugging is a developer activity and effective
debugging is very important before testing begins to
increase the quality of the system.
Debugging will not give confidence that the system
meets its requirements completely, but testing gives
confidence.
Why do we need Debugging
The process of debugging begins as soon as the code
of the software is written. Then, it continues in
successive stages as code is combined with other
units of programming to form a software product.
Debugging has many benefits such as:
It reports an error condition immediately. This
allows earlier detection of an error and makes the
process of software development stress-free and
unproblematic.
It also provides maximum useful information of
data structures and allows easy interpretation.
Why do we need Debugging
Debugging assists the developer in reducing useless
and distracting information.
Through debugging the developer can avoid
complex one-use testing code to save time and
energy in software development.
Steps involved in Debugging
Steps involved in Debugging
1) Identify the Error: A bad identification of an error
can lead, to wasted developing time. It is usual that
production errors reported by users are hard to
interpret and sometimes the information we receive
is misleading. It is import to identify the actual error.
2) Find the Error Location: After identifying the error
correctly, you need to go through the code to find the
exact spot where the error is located. In this stage,
you need to focus on finding the error instead of
understanding it.
Steps involved in Debugging
3) Analyze the Error: In the third step, you need to use a
bottom-up approach from the error location and
analyze the code. This helps you in understanding the
error.
4) Prove the Analysis: Once you are done analyzing the
original bug, you need to find a few more errors that
may appear on the application. This step is about
writing automated tests for these areas with the help
of a test framework.
Steps involved in Debugging
5) Cover Lateral Damage: In this stage, you need to
create or gather all the unit tests for the code where
you are going to make changes. Now, if you run
these unit tests, they all should pass.
6) Fix & Validate: The final stage is the fix all the errors
and run all the test scripts to check if they all pass.
Debugging Tools
Debugging tool is a computer program that is used to
test and debug other programs. A lot of public
domain software like gdb and dbx are available for
debugging. They offer console-based command-line
interfaces. Examples of automated debugging tools
include code-based tracers, profilers, interpreters,
etc. Some of the widely used debuggers are:
Radare2
WinDbg
Valgrind
Testing Conventional Applications
What is it?
Once source code has been generated, software must
be tested to uncover (and correct) as many errors as
possible before delivery to your customer.
Your goal is to design a series of test cases that have
a high likelihood of finding errors—but how?
That’s where software testing techniques enter the
picture.
Testing Conventional Applications
These techniques provide systematic guidance for
designing tests that
(1) exercise the internal logic and interfaces of every
software component and
(2) exercise the input and output domains of the
program to uncover errors in program function,
behavior, and performance
Testing Conventional Applications
Who does it?
During early stages of testing, a software engineer
performs all tests.
However, as the testing process progresses, testing
specialists may become involved
Testing Conventional Applications
What are the steps?
For conventional applications, software is tested
from two different perspectives:
(1) internal program logic is exercised using “white box”
test-case design techniques and
(2) software requirements are exercised using “black box”
test-case design techniques.
Use cases assist in the design of tests to uncover errors at
the software validation level.
In every case, the intent is to find the maximum number
of errors with the minimum amount of effort and time.
Testing Conventional Applications
What is the work product?
A set of test cases designed to exercise both internal
logic, interfaces, component collaborations, and
external requirements is designed and documented,
expected results are defined, and actual results are
recorded.
Testing Conventional Applications
How do you ensure that you’ve done it right?
When you begin testing, change your point of view.
Try hard to “break” the software! Design test cases in
a disciplined fashion and review the test cases you do
create for thoroughness.
In addition, you can evaluate test coverage and track
error detection activities.
Testing Conventional Applications
What is it?
Once source code has been generated, software must
be tested to uncover (and correct) as many errors as
possible before delivery to your customer.
Your goal is to design a series of test cases that have
a high likelihood of finding errors—but how?
That’s where software testing techniques enter the
picture.
Testing Conventional Applications
These techniques provide systematic guidance for
designing tests that
(1) exercise the internal logic and interfaces of every
software component and
(2) exercise the input and output domains of the
program to uncover errors in program function,
behavior, and performance
Testing Conventional Applications
Who does it?
During early stages of testing, a software engineer
performs all tests.
However, as the testing process progresses, testing
specialists may become involved
Testing Conventional Applications
What are the steps?
For conventional applications, software is tested
from two different perspectives:
(1) internal program logic is exercised using “white box”
test-case design techniques and
(2) software requirements are exercised using “black box”
test-case design techniques.
Use cases assist in the design of tests to uncover errors at
the software validation level.
In every case, the intent is to find the maximum number
of errors with the minimum amount of effort and time.
Testing Conventional Applications
What is the work product?
A set of test cases designed to exercise both internal
logic, interfaces, component collaborations, and
external requirements is designed and documented,
expected results are defined, and actual results are
recorded.
Testing Conventional Applications
How do you ensure that you’ve done it right?
When you begin testing, change your point of view.
Try hard to “break” the software! Design test cases in
a disciplined fashion and review the test cases you do
create for thoroughness.
In addition, you can evaluate test coverage and track
error detection activities.
Software Testing
Software Testing is a process of evaluating the
functionality of a software application to find any
software bugs.
It checks whether the developed software met the
specified requirements and identifies any defect in
the software in order to produce a quality product.
It is basically executing a system in order to identify
any gaps, errors, or missing requirements in contrary
to the actual requirements.
Software Testing
It is also stated as the process of verifying and
validating a software product. It checks whether the
software product:
Meets the business and technical requirements that
guided its design and development
Works as per the requirement
Can be implemented with the same characteristics
Software Testing
Testing includes an examination of code and the
execution of code in various environments,
conditions as well as all the examining aspects of the
code.
In the current scenario of software development, a
testing team may be separate from the development
team so that Information derived from testing can be
used to correct the process of software development.
Software Testing
The success of software depends upon acceptance of
its targeted audience, easy graphical user interface,
strong functionality load test, etc.
For example, the audience of banking is totally
different from the audience of a video game.
Therefore, when an organization develops a software
product, it can assess whether the software product
will be beneficial to its purchasers and other
audience.
Software Testing
Testing objective:
To find any defects or bugs that may have been
created when the software was being developed
To increase confidence in the quality of the software
To prevent defects in the final product
To ensure the product meets customer requirements
as well as the company specifications
To provide customers with a quality product and
increase their confidence in the company
Software Testing Principles
1) Software testing can help in detecting bugs: Testing
any software or project can help in revealing a few or
some defects that may or may not be detected by
developers. However, testing of software alone
cannot confirm that your developed project or
software is error free. Hence, it’s essential to devise
test cases and find out as many defects as possible.
Software TestingPrinciples
2) Error free or Bug-free software is a myth: Just
because when a tester tested an application and
didn’t detect any defects in that project, doesn’t
indicate or imply that your software is ready for
shipping
3) Testing must be performed in different ways and
cannot be tested in a similar way for all modules. All
testers have their own individuality, likewise the
system under test.
Software Testing Principles
4) Normally a defect is clustered around a set of
modules or functionalities. Once they are identified,
testing can be focused on the defective areas, and yet
continue to find defects in other modules
simultaneously.
5) Testing will not be as effective and efficient if the
same kinds of tests are performed over a long
duration.
Benefits of Software Testing
Cost-Effective: It is one of the important advantages
of software testing. Testing any IT project on time
helps you to save your money for the long term. In
case if the bugs caught in the earlier stage of
software testing, it costs less to fix.
Security: It is the most vulnerable and sensitive
benefit of software testing. People are looking for
trusted products. It helps in removing risks and
problems earlier.
Benefits of Software Testing
Product Quality: It is an essential requirement of any
software product. Testing ensures a quality product is
delivered to customers.
Customer Satisfaction: The main aim of any product
is to give satisfaction to their customers. UI/UX
Testing ensures the best user experience.
Software Testing Issues
Testing the Complete Application
It is not possible to test each combination in both
Manual as well as Automation Testing. If you try all
these combinations, you will never ship the product
Misunderstanding of Company Processes
There are some myths in testers that they should only
go with the company processes even if these
processes are not applicable for their current testing
scenario. This results in incomplete and inappropriate
Application Testing
Software Testing Issues
Inadequate schedule of testing:
Testing is a time-consuming affair. It must be so
since it is done to bring out the defects or
inadequacies of the system under different conditions
and not to show that it works. Testing needs to go
hand in hand with development.
Software Testing Issues
Insufficient testing environment and tools:
Tools and environments are backbones of proper
software testing. However, testing is often carried out
in inadequate testing environment. Moreover, some
of the environmental components themselves suffer
from defects.
Team managers must ensure that actual or close
enough hardware and software requirements are met
in a testing environment.
Software Testing Issues
Wrong testing mindset
Often the mindset of the software testing team
revolves around finding out functionality of the
system rather than finding defects in it. This itself
prohibits the team from finding out flaws in the
software.
It is the duty of team lead to instruct the idea that
testing is done to find fault with the system or
software under different conditions and not to prove
that it works
Types of Software Testing
Testing is an integral part of any successful software
project. The type of testing depends on various
factors, including project requirements, budget,
timeline, expertise, and suitability. Software testing
is a huge domain, but it can be broadly categorized
into two areas such as
Types of Software Testing
Manual Testing
Manual Testing is a type of Software Testing where
Testers manually execute test cases without using any
automation tools.
It means the application is tested manually by QA
testers.
Tests need to be performed manually in every
environment, using a different data set and the success
or failure rate of every transaction should be recorded.
This type of testing requires the tester’s knowledge,
experience, analytical/logical skills, creativity, and
intuition.
Types of Software Testing
Some of the tools used for Manual Testing are:Stryka
1. Bugzilla
2. Jira
3. Mantis
4. Trac
5. Redmine
6. Fogbuz
7. Lighthouse
Types of Software Testing
Automated Testing
Automation testing is an Automatic technique where
the tester writes scripts by own and uses suitable
software to test the software.
It is basically an automation process of a manual
process.
Like regression testing, Automation testing also used
to test the application from load, performance and
stress point of view
Types of Software Testing
Some of the tools used for Automated Testing are :
1. Selenium
2. TestingWhiz
3. Ranorex
4. Sahi
5. Waitir
6. WaitiN
7. Tosca TestSuite
Software Testing
Software Testing is a process of evaluating the
functionality of a software application to find any
software bugs.
It checks whether the developed software met the
specified requirements and identifies any defect in
the software in order to produce a quality product.
It is basically executing a system in order to identify
any gaps, errors, or missing requirements in contrary
to the actual requirements.
Software Testing
It is also stated as the process of verifying and
validating a software product. It checks whether the
software product:
Meets the business and technical requirements that
guided its design and development
Works as per the requirement
Can be implemented with the same characteristics
Software Testing
Testing includes an examination of code and the
execution of code in various environments,
conditions as well as all the examining aspects of the
code.
In the current scenario of software development, a
testing team may be separate from the development
team so that Information derived from testing can be
used to correct the process of software development.
Software Testing
The success of software depends upon acceptance of
its targeted audience, easy graphical user interface,
strong functionality load test, etc.
For example, the audience of banking is totally
different from the audience of a video game.
Therefore, when an organization develops a software
product, it can assess whether the software product
will be beneficial to its purchasers and other
audience.
Software Testing
Testing objective:
To find any defects or bugs that may have been
created when the software was being developed
To increase confidence in the quality of the software
To prevent defects in the final product
To ensure the product meets customer requirements
as well as the company specifications
To provide customers with a quality product and
increase their confidence in the company
Software Testing Principles
1) Software testing can help in detecting bugs: Testing
any software or project can help in revealing a few or
some defects that may or may not be detected by
developers. However, testing of software alone
cannot confirm that your developed project or
software is error free. Hence, it’s essential to devise
test cases and find out as many defects as possible.
Software TestingPrinciples
2) Error free or Bug-free software is a myth: Just
because when a tester tested an application and
didn’t detect any defects in that project, doesn’t
indicate or imply that your software is ready for
shipping
3) Testing must be performed in different ways and
cannot be tested in a similar way for all modules. All
testers have their own individuality, likewise the
system under test.
Software Testing Principles
4) Normally a defect is clustered around a set of
modules or functionalities. Once they are identified,
testing can be focused on the defective areas, and yet
continue to find defects in other modules
simultaneously.
5) Testing will not be as effective and efficient if the
same kinds of tests are performed over a long
duration.
Benefits of Software Testing
Cost-Effective: It is one of the important advantages
of software testing. Testing any IT project on time
helps you to save your money for the long term. In
case if the bugs caught in the earlier stage of
software testing, it costs less to fix.
Security: It is the most vulnerable and sensitive
benefit of software testing. People are looking for
trusted products. It helps in removing risks and
problems earlier.
Benefits of Software Testing
Product Quality: It is an essential requirement of any
software product. Testing ensures a quality product is
delivered to customers.
Customer Satisfaction: The main aim of any product
is to give satisfaction to their customers. UI/UX
Testing ensures the best user experience.
Software Testing Issues
Testing the Complete Application
It is not possible to test each combination in both
Manual as well as Automation Testing. If you try all
these combinations, you will never ship the product
Misunderstanding of Company Processes
There are some myths in testers that they should only
go with the company processes even if these
processes are not applicable for their current testing
scenario. This results in incomplete and inappropriate
Application Testing
Software Testing Issues
Inadequate schedule of testing:
Testing is a time-consuming affair. It must be so
since it is done to bring out the defects or
inadequacies of the system under different conditions
and not to show that it works. Testing needs to go
hand in hand with development.
Software Testing Issues
Insufficient testing environment and tools:
Tools and environments are backbones of proper
software testing. However, testing is often carried out
in inadequate testing environment. Moreover, some
of the environmental components themselves suffer
from defects.
Team managers must ensure that actual or close
enough hardware and software requirements are met
in a testing environment.
Software Testing Issues
Wrong testing mindset
Often the mindset of the software testing team
revolves around finding out functionality of the
system rather than finding defects in it. This itself
prohibits the team from finding out flaws in the
software.
It is the duty of team lead to instruct the idea that
testing is done to find fault with the system or
software under different conditions and not to prove
that it works
Types of Software Testing
Testing is an integral part of any successful software
project. The type of testing depends on various
factors, including project requirements, budget,
timeline, expertise, and suitability. Software testing
is a huge domain, but it can be broadly categorized
into two areas such as
Types of Software Testing
Manual Testing
Manual Testing is a type of Software Testing where
Testers manually execute test cases without using any
automation tools.
It means the application is tested manually by QA
testers.
Tests need to be performed manually in every
environment, using a different data set and the success
or failure rate of every transaction should be recorded.
This type of testing requires the tester’s knowledge,
experience, analytical/logical skills, creativity, and
intuition.
Types of Software Testing
Some of the tools used for Manual Testing are:Stryka
1. Bugzilla
2. Jira
3. Mantis
4. Trac
5. Redmine
6. Fogbuz
7. Lighthouse
Types of Software Testing
Automated Testing
Automation testing is an Automatic technique where
the tester writes scripts by own and uses suitable
software to test the software.
It is basically an automation process of a manual
process.
Like regression testing, Automation testing also used
to test the application from load, performance and
stress point of view
Types of Software Testing
Some of the tools used for Automated Testing are :
1. Selenium
2. TestingWhiz
3. Ranorex
4. Sahi
5. Waitir
6. WaitiN
7. Tosca TestSuite