Manual Testing Notes
Manual Testing Notes
SOFTWARE TESTING
Software
Software is a set of instructions, data or programs used to operate computers and
execute specific tasks.
Driver software. Also known as device drivers, this software is often considered a
type of system software. Device drivers control the devices and peripherals connected
to a computer, enabling them to perform their specific tasks. Every device that is
connected to a computer needs at least one device driver to function. Examples
include software that comes with any nonstandard hardware, including special game
controllers, as well as the software that enables standard hardware, such as USB
storage devices, keyboards, headphones and printers.
What is Testing
Testing is the process of determining how effective something is.
2. It’s essential since it makes sure that the customer finds the
organization reliable and their satisfaction in the application is
maintained.
o Users are not inclined to use software that has bugs. They
may not adopt a software if they are not happy with the
stability of the application.
What is a bug?
In software testing , a bug is the informal name of defects, which means that
software or application is not working as per the requirement. When we have
some coding error, it leads a program to its breakdown, which is known as a bug.
The test engineers use the terminology Bug.
If a QA(quality analyst) detect a bug, they can reproduce the bug and record it
with the help of the bug report template.
JAI ENTERPRISES
What is a Defect?
When the application is not working as per the requirement is knows as defects.
It is specified as the aberration from the actual and expected result of the
application or software.
In other words, we can say that the bug announced by the programmer and
inside the code is called a defect.
What is Error?
The Problem in code leads to errors, which means that a mistake can occur due
to the developer's coding error as the developer misunderstood the requirement
or the requirement was not defined correctly. The developers use the
term error.
Business analyst and Project organizer set up a meeting with the client to gather
all the data like what the customer wants to build, who will be the end user, what
is the objective of the product. Before creating a product, a core understanding or
knowledge of the product is very necessary.
Once the required function is done, an analysis is complete with auditing the
feasibility of the growth of a product. In case of any ambiguity, a signal is set up
for further discussion.
Once the requirement analysis is done, the next stage is to certainly represent
and document the software requirements and get them accepted from the
project stakeholders.
JAI ENTERPRISES
This is accomplished through "SRS"- Software Requirement Specification
document which contains all the product requirements to be constructed and
developed during the project life cycle.
The next phase is about to bring down all the knowledge of requirements,
analysis, and design of the software project.
In this phase of SDLC, the actual development begins, and the programming is
built. The implementation of design begins concerning writing code. Developers
have to follow the coding guidelines described by their management and
programming tools like compilers, interpreters, debuggers, etc. are used to
develop and implement the code.
Stage5: Testing
After the code is generated, it is tested against the requirements to make sure
that the products are solving the needs addressed and gathered during the
requirements stage.
During this stage, unit testing, integration testing, system testing, acceptance
testing are done.
Stage6: Deployment
Once the software is certified, and no bugs or errors are stated, then it is
deployed.
Stage7: Maintenance
Once when the client starts using the developed systems, then the real issues
come up and requirements to be solved from time to time.
This procedure where the care is taken for the developed product is known as
maintenance.
TYPES OF MODEL:-
JAI ENTERPRISES
WATERFALL MODEL
ADVATAGES:-
Simple and easy to understand and use
Easy to manage due to the rigidity of the model. Each phase has specific
deliverables and a review process.
Phases are processed and completed one at a time.
Works well for smaller projects where requirements are very well
understood.
Clearly defined stages.
Well understood milestones.
Easy to arrange tasks.
Process and results are well documented.
DISADVATAGES:-
SPIRAL MODEL:-
Spiral Model
It implements the potential for rapid development of new versions of the
software. Using the spiral model, the software is developed in a series of
incremental releases. During the early iterations, the additional release may be a
JAI ENTERPRISES
paper model or prototype. 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 exists.
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.
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.
Advantages
o High amount of risk analysis
o Useful for large and mission-critical projects.
Disadvantages
o Can be a costly model to use.
o Risk analysis needed highly particular expertise
o Doesn't work well for smaller projects.
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. Testing of the device is planned in
parallel with a corresponding stage of development.
JAI ENTERPRISES
1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during
the module design phase. 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. Unit testing verifies that the
smallest entity can function correctly when isolated from the rest of the
codes/ units.
2. Integration Testing: Integration Test Plans are developed during the
Architectural Design Phase. 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. System Test ensures that
expectations from an application developer are met.
4. Acceptance Testing: Acceptance testing is related to the business
requirement analysis part. It includes testing the software product in user
atmosphere. Acceptance tests reveal the compatibility problems with the
different systems, which is available within the user atmosphere. It
JAI ENTERPRISES
conjointly discovers the non-functional problems like load and performance
defects within the real user atmosphere.
Requirement specifications
Design document
Source Code
Test Plans
Test Cases
Test Scripts
Help or User document
Web Page content
The main objective of this testing is to confirm that the software product works in
conformance with the business requirements. This testing is also called an Execution
technique or validation testing.
Dynamic testing executes the software and validates the output with the expected
outcome. Dynamic testing is performed at all levels of testing and it can be either black
or white box testing.
It is a way of software testing in which the It is a way of testing the software in which
internal structure or the program or the the tester has knowledge about the internal
code is hidden and nothing is known structure or the code or the program of the
1. about it. software.
JAI ENTERPRISES
S.
No. Black Box Testing White Box Testing
No knowledge of implementation is
4. needed. Knowledge of implementation is required.
This testing can be initiated based on the This type of testing of software is started
7. requirement specifications document. after a detail design document.
9. It is the behaviour testing of the software. It is the logic testing of the software.
11. It is also called closed testing. It is also called as clear box testing.
Can be done by trial and error ways and Data domains along with inner or internal
14. methods. boundaries can be better tested.
JAI ENTERPRISES
S.
No. Black Box Testing White Box Testing
1. Walkthrough:
To present the documents both within and outside the software discipline
in order to gather the information regarding the topic under
documentation.
To explain or do the knowledge transfer and evaluate the contents of the
document
JAI ENTERPRISES
To achieve a common understanding and to gather feedback.
To examine and discuss the validity of the proposed solutions
2. Technical review:
To ensure that an early stage the technical concepts are used correctly
To access the value of technical concepts and alternatives in the product
To have consistency in the use and representation of technical concepts
To inform participants about the technical content of the document
3. Inspection:
It helps the author to improve the quality of the document under inspection
It removes defects efficiently and as early as possible
It improve product quality
It create common understanding by exchanging information
It learn from defects found and prevent the occurrence of similar defects
It does not include the execution of the It always includes the execution of
program. the program.
The aim of quality assurance is to prevent The aim of quality control is to identify
defects. and improve the defects.
All team members of the project are Generally, the testing team of the
involved. project is involved.
Quality engineer(QE) -it is automation tester .he writes the code to test
system automatically.
In this testing, we test each module individually in unit testing phase, and then
modules are integrated incrementally and tested to ensure smooth interface and
interaction between modules.
In this approach, every module is combined incrementally, i.e., one by one till all
modules or components are added logically to make the required application, instead
of integrating the whole system at once and then performing testing on the end
product. Integrated modules are tested as a group to ensure successful integration
and data flow between modules.
As in integration testing, the primary focus of doing this testing is to check interface,
integrated links, and flow of information between modules. This process is repeated
till the modules are combined and tested successfully.
Fig2
Fig3
Fig4
Testing Approach
A middle layer is identified from which bottom-up and top-down testing
are done. This middle layer is also known as target layer
Target layer is identified as per Heuristic approach, i.e., select a layer
which allows minimal use of Stubs and drivers
Top-down testing starts from middle layer and moves downwards
towards lower level modules. This layer below middle layer is known as
Bottom layer
JAI ENTERPRISES
Bottom-up testing also starts from middle layer and move up towards
top layer modules. This layer above middle layer is known as Top layer
With use of stubs and drivers, user interface and functions of lower level
modules are tested respectively
In the end, only middle layer is left for the execution of the final test
System testing
JAI ENTERPRISES
What is GUI Testing?
GUI Testing is a software testing type that checks the Graphical User Interface of the
Software. The purpose of Graphical User Interface (GUI) Testing is to ensure the
functionalities of software application work as per specifications by checking screens
and controls like menus, buttons, icons, etc.
It is based on
requirements of It is based on expectations
customer. of customer.
Examples: Examples:
1. Unit Testing 1. Performance
2. Smoke Testing Testing
3. Integration 2. Load Testing
Testing 3. Stress Testing
4. Regression 4. Scalability
Testing Testing
JAI ENTERPRISES
REGRESSION TESTING CHECKS FOR RE-TESTING MAKES SURE THAT THE ORIGINAL
UNEXPECTED SIDE-EFFECTS FAULT HAS BEEN CORRECTED
REGRESSION TESTING IS ONLY DONE RE-TESTING EXECUTES A DEFECT WITH THE SAME
WHEN THERE IS ANY MODIFICATION OR
JAI ENTERPRISES
CHANGES BECOME MANDATORY IN AN DATA AND THE SAME ENVIRONMENT
EXISTING PROJECT WITH DIFFERENT INPUTS WITH A NEW BUILD
Positive Testing
Positive testing ensures that software performs as it is expected to do. When writing test
cases for positive testing, only legitimate (valid) inputs are provided as inputs.
In other words, positive testing is the process of evaluating a system or application using
accurate input data.
The primary goal of positive testing is to validate if a software program does what it is
intended to do.
Simply put, a positive test is conducted by providing an expected set of values as inputs to
the test cases.
Negative Testing
It is vice versa for positive testing. In Negative testing, a software program is evaluated
against false or incorrect data.
Negative testing is also known as error path testing or failure.
It is best to check if the computer program reacts as expected to false or invalid user inputs.
Negative testing ensures the software program does not crash and continues running even
with wrong data inputs.
A software tester most likely starts by considering the positive inputs when considering the
test scenarios. Still, it is equally important to know that understanding the importance of
negative tests is always crucial. It is seen as being essential to the execution of test cases.
Negative testing ensures that the software program displays an error when it should and
does not display an error when it should not. Additionally, it helps software developers find
more flaws and improve the software program being tested.
JAI ENTERPRISES
Non functional
testing is just as important as functional testing. Both ensure that your product is working as
it should. But non functional testing checks aspects of your product that aren’t covered in
functional tests. And it helps ensure a high level of product quality, performance, and
usability - all of which lead to higher user satisfaction.
In this blog post we'll define what non-functional testing is, look at some examples of non
functional tests, and show you the best way to manage all types of non-functional testing.
Continue reading or jump ahead to the section that interests you most:
1. Performance Tests
2. Load Tests
3. Stress Tests
4. Volume Tests
JAI ENTERPRISES
5. Security Tests
7. Recovery Tests
All of these non functional test types help to ensure that your product is fast, stable, scalable,
reliable, and secure.
1. Performance Tests
Performance testing checks how well software components work. These tests can find issues
in software design and architecture performance.
• Identifying bottlenecks
Performance tests ensure several elements of software quality. They validate that it’s fast,
scalable, stable, and reliable.
2. Load Tests
Load testing checks how the software behaves under both normal and peak conditions. This is
done to determine how much work load the software can handle before performance is
negatively affected.
You can perform load tests by running multiple applications simultaneously, subjecting a
server to a high amount of traffic, or downloading a large quantity of files.
3. Stress Tests
Stress testing checks how the software behaves under abnormal conditions. This determines
the limit at which the software will break.
JAI ENTERPRISES
It’s important to find out what happens when the system is under stress. Does the right error
message display? Does the system fail? How will it recover?
Stress tests help testers analyze what happens when a system fails. This ensures that
software is recoverable, stable, and reliable.
4. Volume Tests
Volume testing serves to verify what happens to system performance when a huge volume of
data is added to the database. This is done to identify what problems may occur with
increasing volumes of data. It’s also known as flood testing.
You can use volume tests to check if there’s any data loss, warning or error messages, or data
storage issues when massive amounts of data are added to the product.
Volume tests verify that systems respond as expected to certain volumes of data. This is
important for ensuring performance and stability.
5. Security Tests
Security testing checks software to find flaws or vulnerabilities that may compromise data.
The goal of security testing is to identify any potential security risks or threats and to ensure
that the product is not vulnerable to hacking, data breaches, or other types of security issues.
• Vulnerability scans
• Security scans
• Penetration testing
• Risk assessment
• Security audits
• Posture assessment
• Ethical hacking
Both of these types of functional tests are important for user satisfaction. After all, no matter
how great your product is, if a user runs into problems installing or upgrading it, they'll never
know how good it is!
7. Recovery Tests
Recovery tests determine how quickly software can rebound after a crash or failure. This is
done by forcing the system to fail.
It is generally seen that a large number of errors occur at the boundaries of the defined
input values rather than the center. It is also known as BVA and gives a selection of test
cases which exercise bounding values.
This black box testing technique complements equivalence partitioning. This software
testing technique base on the principle that, if a system works well for these particular
values then it will work perfectly well for all values which comes between the two
boundary values.
Example:
Input condition is valid between 1 to 10
The concept behind this Test Case Design Technique is that test case of a representative
value of each class is equal to a test of any other value of the same class. It allows you to
Identify valid as well as invalid equivalence classes.
Example:
The first task is to identify functionalities where the output depends on a combination
of inputs. If there are large input set of combinations, then divide it into smaller subsets
which are helpful for managing a decision table.
For every function, you need to create a table and list down all types of combinations of
inputs and its respective outputs. This helps to identify a condition that is overlooked by
the tester.
Example: A submit button in a contact form is enabled only when all the inputs are
entered by the end user.
JAI ENTERPRISES
State Transition
In State Transition technique changes in input conditions change the state of the
Application Under Test (AUT). This testing technique allows the tester to test the
behaviour of an AUT. The tester can perform this action by entering various input
conditions in a sequence. In State transition technique, the testing team provides
positive as well as negative input test values for evaluating the system behaviour.
State transition should be used when a testing team is testing the application for
a limited set of input values.
The Test Case Design Technique should be used when the testing team wants to
test sequence of events which happen in the application under test.
Example:
In the following example, if the user enters a valid password in any of the first three
attempts the user will be able to log in successfully. If the user enters the invalid
password in the first or second try, the user will be prompted to re-enter the password.
When the user enters password incorrectly 3rd time, the action has taken, and the
account will be blocked.
JAI ENTERPRISES
State Transition Diagram
In this diagram when the user gives the correct PIN number, he or she is moved to
Access granted state. Following Table is created based on the diagram above-
S1) Start S5 S2
Error Guessing
Error Guessing is a software testing technique based on guessing the error which can
prevail in the code. The technique is heavily based on the experience where the test
analysts use their experience to guess the problematic part of the testing application.
Hence, the test analysts must be skilled and experienced for better error guessing.
The technique counts a list of possible errors or error-prone situations. Then tester
writes a test case to expose those errors. To design test cases based on this software
testing technique, the analyst can use the past experiences to identify the conditions.
The test should use the previous experience of testing similar applications
Understanding of the system under test
Knowledge of typical implementation errors
Remember previously troubled areas
Evaluate Historical data & Test results
STLC Phases
There are following six major phases in every Software Testing Life Cycle Model (STLC
Model):
Each of these stages has a definite Entry and Exit criteria, Activities & Deliverables
associated with it.
You have Entry and Exit Criteria for all levels in the Software Testing Life Cycle (STLC)
In an Ideal world, you will not enter the next stage until the exit criteria for the previous
stage is met. But practically this is not always possible. So for this tutorial, we will focus
on activities and deliverables for the different stages in STLC life cycle. Let’s look into
them in detail.
RTM
Automation feasibility report. (if applicable)
Test cases/scripts
JAI ENTERPRISES
Test data
Test Plan
A test plan is a detailed document which describes software testing areas and
activities. It outlines the test strategy, objectives, test schedule, required
resources (human resources, software, and hardware), test estimation and test
deliverables.
The test plan is a base of every software's testing. It is the most crucial activity
which ensures availability of all the lists of planned activities in an appropriate
sequence.
The test plan is a template for conducting software testing activities as a defined
process that is fully monitored and controlled by the testing manager. The test
plan is prepared by the Test Lead (60%), Test Manager(20%), and by the test
engineer(20%).
JAI ENTERPRISES
How to write a Test Plan
Making a test plan is the most crucial task of the test management process.
According to IEEE 829, follow the following seven steps to prepare a test plan.
Test bed or test environment is configured as per the need of the Application Under
Test. On a few occasion, test bed could be the combination of the test environment and
the test data it operates.
Setting up a right test environment ensures software testing success. Any flaws in this
process may lead to extra cost and time to the client.
Defects are classified from the QA team perspective as Priority and from the
development perspective as Severity (complexity of code to fix it). These are
two major classifications that play an important role in the timeframe and the
amount of work that goes in to fix defects.
What is Priority?
Priority is defined as the order in which the defects should be resolved. The
priority status is usually set by the QA team while raising the defect against the
dev team mentioning the timeframe to fix the defect. The Priority status is set
based on the requirements of the end users.
For example, if the company logo is incorrectly placed in the company's web
page then the priority is high but it is of low severity.
Priority Listing
A Priority can be categorized in the following ways −
Low − This defect can be fixed after the critical ones are fixed.
Medium − The defect should be resolved in the subsequent builds.
High − The defect must be resolved immediately because the defect
affects the application to a considerable extent and the relevant
modules cannot be used until it is fixed.
Urgent − The defect must be resolved immediately because the
defect affects the application or the product severely and the product
cannot be used until it has been fixed.
What is Severity?
Severity is defined as the impishness of defect on the application and complexity
of code to fix it from development perspective. It is related to the development
aspect of the product. Severity can be decided based on how bad/crucial is the
defect for the system. Severity status can give an idea about the deviation in the
functionality due to the defect.
Example − For flight operating website, defect in generating the ticket number
against reservation is high severity and also high priority.
Severity Listing
Severity can be categorized in the following ways −
Critical /Severity 1 − Defect impacts most crucial functionality of
Application and the QA team cannot continue with the validation of
JAI ENTERPRISES
application under test without fixing it. For example, App/Product
crash frequently.
Major / Severity 2 − Defect impacts a functional module; the QA
team cannot test that particular module but continue with the
validation of other modules. For example, flight reservation is not
working.
Medium / Severity 3 − Defect has issue with single screen or
related to a single function, but the system is still functioning. The
defect here does not block any functionality. For example, Ticket# is a
representation which does not follow proper alpha numeric characters
like the first five characters and the last five as numeric.
Low / Severity 4 − It does not impact the functionality. It may be a
cosmetic defect, UI inconsistency for a field or a suggestion to
improve the end user experience from the UI side. For example, the
background colour of the Submit button does not match with that of
the Save button.
Defect Resolution
Defect Resolution in software testing is a step by step process of fixing the defects.
Defect resolution process starts with assigning defects to developers, then developers
schedule the defect to be fixed as per priority, then defects are fixed and finally
developers send a report of resolution to the test manager. This process helps to fix and
track defects easily.