Manual Testing Notes 2
Manual Testing Notes 2
Software testing is widely used technology because it is compulsory to test each and
every software before deployment.
What is Testing ?
Testing is a group of techniques to determine the correctness of the
application.
While performing the manual testing on any application, we do not need any specific
knowledge of any testing tool, rather than have a proper understanding of the
product so we can easily prepare the test document.
Manual testing can be further divided into three types of testing, which are as
follows:
● Less expensive.
● No coding is required.
Automation testing
Automation testing is a process of converting any manual test cases into the test
scripts with the help of automation tools.
We can enhance the speed of our test execution because here, we do not require
any human efforts. We need to write a test script and execute those scripts.
2. Types of Software :
○ System software
○ Programming software
○ Application Software
○ It should be maintainable.
6. Project Vs Product
PROJECTS PRODUCTS
Develop the application for a particular Develop the application for Global
client. clients.
Example: Banking projects like ICICI, Example: Gmail, Drive (Free sources)
HDFC and e-commerce projects like and Oracle products like Databases etc
flipkart.com and bigbasket.com. These are
specific to clients.
○ Changing Requirements
○ Miscommunication or No communication
○ Software complexity
○ Overconfident people
○ Poorly documented
10. Ends…
Software Development Life Cycle (SDLC)
SDLC is a process used by the software industry to design, develop and test the
softwares.
OR
Each phase requires deliverables (output from each phase) from the previous phase
in a life cycle of software development.
P - People
P - Process
P - Product
● Requirement Phase
● Design Phase
● Testing Phase
● Maintenance
1. Requirement Phase -
During this phase, the client explains the requirements, specifications,
expectations, and any other special requirement related to the product or software.
All these are gathered by the business manager or project manager or business
analyst of the service providing company.
2. Design Phase
The design phase includes the logical designing of the system and is converted
into physical designing.
HLD – gives the architecture of the software product to be developed and is done by
architects and senior developers.
LLD – done by senior developers. It describes how each and every feature in the
product should work and how every component should work.
Here, only the design will be there and not the code.
3. Development Phase
In this phase, work is divided into small units, and coding starts by the team of
developers according to the design discussed in the previous phase.
The decision required all essential tools such as programming languages like
Java, JavaScript, TypeScripts .NET, PHP, a database like Oracle, MySQL.
Back-end developers start their back-end work to fetch the details from
database/API.
Since this is the coding phase, it takes the longest time and more focused approach
for the developer in the software development life cycle.
- this is the process where we start building the software and start writing the
code for the product.
4. Testing Phase
In this phase, after getting the developed GUI (Graphical user interface) and
back-end combination.
● integration testing,
○ Integration testing is of four types:
○ (i) Top-down (ii) Bottom-up (iii) Sandwich (iv) Big-Bang
● unit testing,
● acceptance testing
● Regression testing, and
● system testing.
Non-functional testing is also done in this phase (Ex: Performance, Security, etc..)
If there are any defects in the software or it is not working as per expectations,
Then the testing team logged the bug/defect in JIRA or some other tools which are
used by the organisation.
As soon as customers receive the product, they are recommended first to do the
beta testing.
In beta testing, customers can require any changes which are not present in the
software but mentioned in the requirement document or any other GUI changes to
make it more user-friendly.
Besides this, if any type of defect is encountered while a customer is using the
software; it will be informed to the development team of that particular software to
sort out the problem.
If it is a server issue, then the development team solves it in a short time; otherwise,
it will wait for the next version.
After the solution of all types of bugs and changes, the software finally deployed to
the end-user.
6. Maintenance
The maintenance phase is the last and long-lasting phase of SDLC because it is the
process which continues until the software's life cycle comes to an end.
When a customer starts using software, then actual problems start to occur, and at
that time there's a need to solve these problems.
They provide software which is and specified as per the client company’s
requirement and never keep the code of the developed product and does not provide
the software to any other company other than the client company.
They develop software products and sell it to many companies which may need
the software and make profits for themselves.
They are the sole owners of the product they develop and the code used and sell it
to other companies which may need the software.
Ex – Oracle, Microsoft
1. Waterfall model
It is a traditional model.
It is a sequential design process, often used in SDLC, in which the progress is seen
as flowing steadily downwards (like a waterfall), through the different phases as
shown in the figure.
Requirements Collection :-
- gathering requirements
Feasibility Study :-
- architect – is the person who tells whether the product can be developed
and if yes, then which technology is best suited to develop it.
- technical feasibility
- financial feasibility
- resource feasibility
Design :-
developers
LLD – done by senior developers. It describes how each and every feature in
the product should work and
how every component should work. Here, only the design will be there and
not the code.
Coding / Programming :-
- this is the process where we start building the software and start writing the code
for the product.
Testing :-
Installation :-
- to install the product at a client’s place for use after the software has been
developed and tested.
- here as the customer uses the product, he finds certain bugs and defects
and sends the product back for
- minor changes like adding, deleting or modifying any small feature in the
software product
100 % testing is not possible – because the way testers test the product is
different from the way customers use the product.
but now in the present time, the waterfall models are replaced by other models such
as Iterative models and Agile Methodology, etc.
In the Waterfall model, the This model has no parallel deliverable, which
requirement should be clear. means that two teams can work together.
It is suitable for a smaller The waterfall model doesn't provide the
project where needs are requirement changes and requirement review.
well understood.
It will allow us to arrange the In between, changes are not allowed because one
tasks efficiently. phase is dependent on another stage.
2. Spiral Model
The spiral model is a software process model that couples the iterative feature of
prototyping with the controlled and systematic aspects of the linear sequential model.
It implements the potential for rapid development of new versions of the software.
During later iterations, more and more complete versions of the engineered system
are produced.
Objective setting: Each cycle in the spiral starts with the identification of purpose
for that cycle, the various alternatives that are possible for achieving the targets, and
the constraints that exist.
Risk Assessment and reduction: The next phase in the cycle is to calculate these
various alternatives based on the goals and constraints.
The focus of evaluation in this stage is located on the risk perception for the project.
Development and validation: The next phase is to develop strategies that resolve
uncertainties and risks.
Planning: Finally, the next step is planned. The project is reviewed, and a choice
made whether to continue with a further period of the spiral.
If it is determined to keep, plans are drawn up for the next step of the project.
For example, if performance or user-interface risks are treated more essential than
the program development risks, the next phase may be an evolutionary development
that includes developing a more detailed prototype for solving the risks.
The risk-driven feature of the spiral model allows it to accommodate any mixture of
a specification-oriented, prototype-oriented, simulation-oriented, or another type of
approach.
An essential element of the model is that each period of the spiral is completed by a
review that includes all the products developed during that cycle, including plans for
the next cycle.
Advantages
3. Prototype Model
The prototype model requires that before carrying out the development of actual
software, a working prototype of the system should be built.
In many instances, the client only has a general view of what is expected from the
software product.
2. Quick Decision
3. Build a Prototype
5. Prototype Refinement
6. Engineer Product
Advantage of Prototype Model
6. Errors can be detected much earlier as the system is made side by side.
4. Easy to fall back into the code and fix without proper requirement analysis,
design, customer evaluation, and feedback.
7. It is a time-consuming process.
*****************************************************************
4. V-Model
V-Model also referred to as the Verification and Validation Model.
In this, each phase of SDLC must complete before the next phase starts.
It follows a sequential design process same as the waterfall model but it looks like in
V shape as you can see in the figure below.
So V-Model contains Verification phases on one side of the Validation phases on the
other side.
The Verification and Validation process is joined by a coding phase in V-shape. Thus
it is known as V-Model.
2. System Design: In this stage system engineers analyse and interpret the
business of the proposed system by studying the user requirements
document.
4. Module Design: In the module design phase, the system breaks down into
small modules.
5. Coding Phase: After designing, the coding phase is started. Based on the
requirements, a suitable programming language is decided.
a. There are some guidelines and standards for coding. Before checking
in the repository, the final build is optimised for better performance, and
the code goes through many code reviews to check the performance.
1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during
the module design phase.
a. These UTPs are executed to eliminate errors at code level or unit level.
A unit is the smallest entity which can independently exist, e.g., a
program module.
b. Unit testing verifies that the smallest entity can function correctly when
isolated from the rest of the codes/ units.
a. These tests verify that groups created and tested independently can
coexist and communicate among themselves.
3. System Testing: System Tests Plans are developed during System Design
Phase. Unlike Unit and Integration Test Plans, System Tests Plans are
composed by the client's business team.
● The V-shaped model should be chosen when sample technical resources are
available with essential technical expertise.
1. Easy to Understand.
2. Testing Methods like planning, test designing happens well before coding.
3. This saves a lot of time. Hence a higher chance of success over the waterfall
model.
5. Works well for small plans where requirements are easily understood.
4. If any changes happen in the midway, then the test documents along with the
required documents, have to be updated.
*****************************************************************
Software Testing Life Cycle (STLC)
The procedure of software testing is also known as STLC (Software Testing Life
Cycle).
Which includes phases of the testing process.All activities are done to improve the
quality of the software product.
1. Requirement Analysis
3. Environment setup
5. Defect/Bug Logging
In this phase, the tester analyses the requirement document of SDLC (Software
Development Life Cycle) to examine requirements stated by the client.
After examining the requirements, the tester makes a test plan to check whether the
software is meeting the requirements or not.
Test plan creation is the important phase of STLC where all the testing strategies are
defined.
Tester determines the estimated effort and cost of the entire project.
3. Environment setup:
Setup of the test environment is an independent activity and can be started along
with Test Case Development.
The testing team is not involved in setting up the testing environment, its senior
developers who create it.
Test case Execution takes place after the successful completion of test planning.
In this phase, the testing team starts case development and execution activity.
The testing team writes down the detailed test cases, also prepares the test data if
required.
The prepared test cases are reviewed by peer members of the team or Test Lead.
RTM (Requirement Traceability Matrix) is also prepared in this phase (used for
tracking requirements).
5.Bug/Defect logging:
Testers and developers evaluate the completion criteria of the software based on test
coverage, quality, time consumption, cost, and critical business objectives.
Test cases and bug reports are analysed in depth to detect the type of defect and its
severity.
Defect logging analysis mainly works to find out defect distribution depending upon
severity and types.
If any defect is detected, then the software is returned to the development team to fix
the defect, then the software is re-tested on all aspects of the testing.
The test cycle closure report includes all the documentation related to software
design, development, testing results, and defect reports.
This phase evaluates the strategy of development, testing procedure, and possible
defects in order to use these practices in the future if there is software with the same
specification.
We have some different status of bugs like new/open, assigned, fix, re-open, and
closed.
This new bug needs to be reported to the concerned Developer by changing the
status as Assigned so that the responsible person should take care of the bug.
Then the Developer first goes through the bug, which means that the Developers
read all the navigation steps to decide whether it is a valid bug or not.
if the bug is valid, the Developer starts reproducing the bug on the application, once
the bug is successfully reproduced.
The Developer will analyse the code and do the necessary changes, and change the
status as Fixed.
Once the code changes are done, and the bug is fixed, the test engineer re-test the
bug.
which means that the test engineer performs the same action once again, which is
mentioned in the bug report, and changes the status accordingly:
Close, if the bug fixes properly, and functionally working according to the
requirement.
OR
Re-open, if the bug still exists or is not working properly as per the requirement, then
the bug sends it back to the Developer once again.
This process is going on continuously until all the bugs are fixed and closed.
Note 1: Test Engineer can not tell the bug orally to the developer because of the
following reasons.
● Developers
● Developers lead
● Test lead
Developer lead: If we don't know the Developer who has developed the particular
module.
Test lead: When we don't have any interaction with the development team.
When the bug is fixed and closed or if it is having any impact on the other module,
then we go for a new bug report.
OR
When the status of the bug is Re-open (not fixed) and affecting another module,
then we have to prepare the new bug report.
● Whenever we find a bug and Developers fix it, we have to check one round of
impact areas.
● And if we find a bug in the impact area, then it is reported as a new bug.
● If the old bug is not fixed properly, then change the status to Re-open.
● Or, if we find a bug impact area, then change the status to New or reported as
a new bug.
There may be several conditions where Developers may not do the necessary code
changes and depend on the situation, which becomes a negative flow or status of
the bug life cycle.
Following are the different status of the bug life cycle:
● Invalid/rejected
● Duplicate
● Postpone/deferred
● Can't fix
● Not reproducible
Invalid / rejected
When the Test Engineer wrote an incorrect Bug Report because of misunderstanding
the requirements,
then the Developer will not accept the bug, and give the status as Invalid and send it
back. (Sometimes developers can also misunderstand the requirements).
- Any bug which is not accepted by the developer is known as an invalid
bug.
The invalid status of the bug is happened because of the following reasons:
Let's see one example where the test engineer and developer misunderstood the
requirements as we can see in the below image:
Duplicate
When the same bug has been reported multiple times by the different test
engineers are known as a duplicate bug.
● Common features.
● Dependent Modules
As we can see in the below image, the test engineer wants to compose a
mail, so first, the test engineer needs to login, then only he/she is able to
compose the mail.
If the bug is found in the login module, the test engineer cannot do further
process because the composing module is dependent on the login module.
Not Reproducible
The Developer accepts the bug, but is not able to Reproduce due to some
reasons.
These are the bugs where the developer is not able to find it, after going
through the navigation step given by the test engineer in the bug report.
Reasons for the not reproducible status of the bug are as follows:
● Environment mismatch
Environment mismatch can be described in two ways:
○ Server mismatch
○ Platform mismatch
Server mismatch: Test Engineer is using a different server (Test Server), and the
Developer is using the different server (Development Server) for reproducing the
bug as we can see in the below image:
● Data mismatch
Different Values used by test engineers while testing & Developer uses
different values.
For example:
The requirement is given for admin and user.
I.e., both are using a different value for the same login module.
● Build mismatch
The test engineer will find the bug in one Build, and the Developer is
reproducing the same bug in another build. The bug may be automatically
fixed while fixing another bug.
● Inconsistent bug
The Bug is found at some time, and sometime it won't happen.
Solution for inconsistent bug:
As soon as we find the bug, first, take the screenshot, then developer will
re-confirm the bug and fix it if exists.
Can't fix
When the Developer accepts the bug and is also able to reproduce, but can't do
the necessary code changes due to some constraints.
Following are the constraints or reasons for the can't fix bug:
● If any bug is minor, but the Developer can't fix it, which means that the
Developer can fix, but the bug is affecting the existing technology because it
was present in the core of the code.
● Each can't fix bugs are the minor bugs.
Deferred / postponed
The deferred/postpone is a status in which the bugs are postponed to the future
release due to time constraints.
These are the suggestions given by the test engineer towards the enhancement of
the application in the form of a bug report. The RFE stands for Request for
Enhancement.
*****************************************************************
Bug Report Template (excel)
The bug report template is as follows:
Bug ID PROJECT_NAME_0001
Module Login
Requirement 1
Release delta
Version 3.0
Status assigned
Date 02-12-2023
Assign to YY developer
Priority P2
Brief description
Additional ------
comments
Test case name: When we find a bug, we send a bug report, not the test case to
the concerned developer. It is used as a reference for the test engineer.
Priority: In this, we have to decide which bug has to be fixed first. It could be
P1/P2/P3/P4, urgent, high, medium, and low.
Status: The different status of the bug which could be assigned, invalid, duplicate,
deferred, and so on.
Reporter: In this, we will mention the name of the person who found the bug. It
could be the test engineer, and sometime it may be a developer, business analyst,
customer, etc.
Date: It provides the date when the bug is found.
Release/Build Version: It provides the release number in which the bug occurs,
and also the build version of the application.
Platform: Mention the platform details, where we exactly find the bug.
Description: In this, we will explain the navigation steps, expected and actual
results of the particular bug.
● Time consuming
While searching every bug in the bug report, it will be a time taken process.
● No security
Anyone can change it or delete it.
● Tedious process
● No centralised repository
***********************************************
White Box Testing
Here we will be discussing here white box testing which is also known as glass
box testing, structural testing, clear box testing, open box testing and
transparent box testing.
The primary goal of white box testing is to focus on the flow of inputs and outputs
through the software.
Developers do white box testing. In this, the developer will test every line of the
code of the program.
The developers perform the White-box testing and then send the application or the
software to the testing team.
Where they will perform the black box testing and verify the application along with
the requirements and identify the bugs and send it to the developer.
Here, the test engineers will not include in fixing the defects for the following
reasons:
● Therefore, the test engineer should always find the bugs, and developers
should still be doing the bug fixes.
● If the test engineers spend most of the time fixing the defects, then they
may be unable to find the other bugs in the application.
The white box testing contains various tests, which are as follows:
● Path testing
● Loop testing
● Condition testing
Path testing
In the path testing, we will write the flow graphs and test all independent paths.
Here writing the flow graph implies that flow graphs are representing the flow of the
program and also show how every program is added with one another as we can
see in the below image:
Loop testing
In the loop testing, we will test the loops such as while, for, and do-while, etc.
and also check for ending conditions if working correctly and if the size of the
conditions is enough.
For example: we have one program where the developers have given about
50,000 loops.
1. {
2. while(50,000)
3. ……
4. ……
5. }
We cannot test this program manually for all the 50,000 loop cycles.
So we write a small program that helps for all 50,000 cycles, as we can see in the
below program.
That test P is written in the similar language as the source code program, and this
is known as a Unit test. And it is written by the developers only.
Therefore, if there is any requirement of modification or bug in the code, then the
developer makes the adjustment both in the main program and the test program
and then executes the test program.
Condition testing
In this, we will test all logical conditions for both true and false values; that is, we
will verify for both if and else conditions.
For example:
1. if(condition) - true
2. {
3. …..
4. ……
5. ……
6. }
7. else - false
8. {
9. …..
10. ……
11. ……
12. }
The above program will work fine for both the conditions, which means that if the
condition is accurate, and then else should be false and conversely.
● The reuse of code is not there: let us take one example, where we have
four programs of the same application, and the first ten lines of the program
are similar. We can write these ten lines as a discrete function, and it should
be accessible by the above four programs as well. And also, if any bug is
there, we can modify the line of code in the function rather than the entire
code.
● The developers use the logic that might be modified. If one programmer
writes code and the file size is up to 250 kb, then another programmer could
write a similar code using the different logic, and the file size is up to 100kb.
1. Int a=15;
2. Int b=20;
3. String S= "Welcome";
4. ….
5. …..
6. …..
7. ….
8. …..
9. Int p=b;
10. Create user()
11. {
12. ……
13. ……
14. ….. 200's line of code
15. }
In the above code, we can see that the integer a has never been called anywhere
in the program, and also the function Create user has never been called anywhere
in the code. Therefore, it leads us to memory consumption.
● This testing is more thorough than other testing approaches as it covers all
code paths.
● White box testing is too much time consuming when it comes to large-scale
programming applications.
In this method, the tester selects a function and gives input value to examine its
functionality, and checks whether the function is giving expected output or not.
If the function produces correct output, then it is passed in testing, otherwise
failed.
The test team reports the result to the development team and then tests the next
function.
After completing testing of all functions if there are severe problems, then it is
given back to the development team for correction.
● In the second step, the tester creates a positive test scenario and an
adverse test scenario by selecting valid and invalid input values to check
that the software is processing them correctly or incorrectly.
● In the third step, the tester develops various test cases such as decision
table, all pairs test, equivalent division, error estimation, cause-effect graph,
etc.
● In the fifth step, the tester compares the expected output against the actual
output.
● In the sixth and final step, if there is any flaw in the software, then it is cured
and tested again.
Test procedure
The test procedure of black box testing is a kind of process in which the tester has
specific knowledge about the software's work, and it develops test cases to check
the accuracy of the software's functionality.
It does not require programming knowledge of the software. All test cases are
designed by considering the input and output of a particular function.A tester
knows about the definite output of a particular input, but not about how the result is
arising. There are various techniques used in black box testing for testing like
decision table technique, boundary value analysis technique, state transition,
All-pair testing, cause-effect graph technique, equivalence partitioning technique,
error guessing technique, use case technique and user story technique. All these
techniques have been explained in detail within the tutorial.
Test cases
These test cases are generally created from working descriptions of the software
including requirements, design parameters, and other specifications.
For the testing, the test designer selects both positive test scenarios by taking valid
input values and adverse test scenarios by taking invalid input values to determine
the correct output.
Test cases are mainly designed for functional testing but can also be used for
non-functional testing.
Test cases are designed by the testing team, there is not any involvement of the
development team of software.
All-pair All-pair testing Technique is used to test all the possible discrete
Testing combinations of values. This combinational method is used for
Technique testing the application that uses checkbox input, radio button input,
list box, text box, etc.
Cause-Effe Cause-Effect Technique underlines the relationship between a
ct given result and all the factors affecting the result.It is based on a
Technique collection of requirements.
Use Case Use case Technique used to identify the test cases from the
Technique beginning to the end of the system as per the usage of the system.
By using this technique, the test team creates a test scenario that
can exercise the entire software based on the functionality of each
function from start to end.
The developers can perform The test engineers perform the black
white box testing. box testing.
In this, we will look into the In this, we will verify the functionality
source code and test the logic of of the application based on the
the code. requirement specification.
It is a combination of black box and white box testing because it involves access
to internal coding to design test cases as white box testing and testing practices are
done at functionality level as black box testing.
For example, while testing, if a tester encounters any defect then he makes changes
in code to resolve the defect and then tests it again in real time.
It concentrates on all the layers of any complex software system to increase testing
coverage.
It gives the ability to test both the presentation layer as well as the internal coding
structure.
● It includes the user point of view rather than designer or tester point of view.
To perform this testing, test cases can be designed on the base of, knowledge
of architectures, algorithm, internal states or other high -level descriptions of
the program behaviour.
It uses all the straightforward techniques of black box testing for function testing. The
test case generation is based on requirements and preset all the conditions before
testing the program by assertion method.
Generic Steps to perform Grey box Testing are:
1. Select and identify inputs from BlackBox and WhiteBox testing inputs.
3. Identify all the major paths to traverse through during the testing period.
The test cases designed for Gray Box testing includes Security related, Browser
related, GUI related, Operational system related and Database related testing.
Matrix Testing
This testing technique comes under Grey Box testing. It defines all the used
variables of a particular program.
In any program, variables are the elements through which values can travel inside
the program.
Regression Testing
Regression testing is used to verify that modification in any part of software has not
caused any adverse or unintended side effect in any other part of the software.
During confirmation testing, any defect got fixed, and that part of software started
working as intended, but there might be a possibility that the fixed defect may have
introduced a different defect somewhere else in the software.
So, regression testing takes care of these type of defects by testing strategies like
retest risky use cases, retest within a firewall, retest all, etc.
S.No Black Box Testing White Box Testing Grey Box Testing
2 Black Box Testing is also White Box Testing is also Grey Box Testing is
known as functional known as structural also known as
testing, data-driven testing, testing, clear box testing, translucent testing
and closed box testing. code-based testing, and as the tester has
transparent testing. limited knowledge of
coding.
4 The testing space of tables The testing space of The testing space of
for inputs (inputs to be tables for inputs (inputs tables for inputs
used for creating test to be used for creating (inputs to be used
cases) is pretty huge and test cases) is less as for creating test
largest among all testing compared to Black Box cases) is smaller
spaces. testing. than Black Box and
White Box testing.
7 Time consumption in Black White Box testing takes a Test cases designing
Box testing depends upon long time to design test can be done in a
the availability of the cases due to lengthy short time period.
functional specifications. code.
11 The base of this testing is The base of this testing Testing based on
external expectations is coding which is high-level database
internal behavior is responsible for internal diagrams and
unknown. working. dataflow diagrams.