A brief that includes the following:
- Software Testing
- Quality Assurance
- Quality Control
- Types of Testing
- Levels of Software Testing
- Types of Performance Testing
- API
- Verification & Validation
- Test Plan & Testing Strategy
- Agile & Waterfall
- Software Development Life Cycle
- Career Path
2. History
• In the 1980s, bugs in the code controlling the machine
called Therac-25, used for radiation therapy, lead to
patient deaths.
• In 1996, the $1.0 billion rocket called Ariane 5 was
destroyed a few seconds after launch due to a bug in the
on-board guidance computer program.
3.
4. What is Bug?
• In IT, a bug refers to an error, fault or flaw in
any computer program or a hardware system.
• A bug produces unexpected results or causes a
system to behave unexpectedly.
5. What is Software Testing
• Software testing is a process of executing a program
or application with the intent of finding the software
bugs.
• It can also be stated as the
process of validating and
verifying that a software
program or application or
product meets the business
and technical requirements
that guided it's design and
development.
6. Why is Software testing necessary?
• Point out the defects and
errors that were made during
the development phases.
• It makes sure of the
Customer’s reliability and their
satisfaction in the application.
• Quality product delivered to
the customers helps in gaining
their confidence.
7. Why is Software testing necessary?
• Testing is required for an
effective performance of
software application or product.
• To ensure that the application
should not result into any
failures because it can be very
expensive in the future or in the
later stages of the development.
• It’s required to stay in the
business.
8. Software Testing Growth
• With the growth in IT and Software, demand for software
testers has increased around the world.
• In past few years, Software Testing has become an
extremely good career choice in terms of professional
growth, learning experience and income.
• Behind every great software developer, there is endless
effort and hard work of an equally talented software
tester.
• It is the software tester who ensures the proper
functioning of a program or tool being designed and
checks their security/functional loopholes.
9.
10. What is Quality Assurance
• Quality Assurance is known as QA and focuses on
preventing defect.
• Quality Assurance ensures that the approaches,
techniques, methods and processes that are
designed for the projects are implemented correctly.
• Quality assurance activities monitor and verify that
the processes used to manage and create the
deliverables have been followed and are operative.
11. What is Quality Control
• Quality Control is known as QC and focuses on
identifying defect.
• QC ensures that the approaches, techniques,
methods and processes that are designed in the
project are following correctly.
• QC activities monitor and verify that the project
deliverables meet the defined quality standards.
12. Quality Assurance Quality Control
Goal The goal of QA is to improve
development and test processes so
that defects do not arise when the
product is being developed.
The goal of QC is to
identify defects after a
product is developed and
before it's released.
Responsibility Everyone on the team involved in
developing the product is
responsible for quality assurance.
Quality control is usually
the responsibility of a
specific team that tests the
product for defects.
Example Verification is an example of QA Validation/Software
Testing is an example of
QC
As a tool QA is a managerial tool QC is a corrective tool
Orientation QA is process oriented QC is product oriented
14. Types of Testing
Functional Non-Functional Maintenance
Smoke / Sanity
Unit Testing
Integration Testing
User Acceptance
System Testing
ADHOC Testing
Negative Testing
Positive Testing
Black, White &
Gray Box Testing
Exploratory Testing
So on…
Performance Testing
Load Testing
Stress Testing
Endurance Testing
Volume Testing
Stress Testing
Spike Testing
Reliability Testing
Usability Testing
Efficiency Testing
API
So on…
Maintenance Testing
Regression Testing
15. • You may find some differences in this classification
in different resources as per the requirement, but
the general theme remains the same.
• There are more than 30 type of testing and still
adding.
• No need to bother or worry, you will pick them up as
you age in the testing industry.
• Not all testing types are applicable to all projects but
depend on nature & scope of the project.
Three General Testing Types
17. Maintenance Testing
• Usually maintenance testing is consisting of two parts:
▫ First one is, testing the changes that has been made
because of the correction in the system or if the system
is extended or because of some additional features
added to it.
▫ Second one is regression
testing to prove that the rest
of the system has not been
affected by the maintenance
work.
18. Regression Testing
• Regression testing is a type of software testing which
verifies that software which was previously developed
and tested still performs correctly after it was changed
or interfaced with other software.
• Regression Testing is required when there is a
▫ Change in requirements and code is modified according to the
requirement
▫ New feature is added to the software
▫ Defect fixing
▫ Performance issue fix
20. Smoke Testing
• Smoke Testing is a kind of Software Testing
performed after software build to ascertain that the
critical functionalities of the program is working
fine.
• It is executed "before" any detailed functional or
regression tests are executed on the software build.
• The purpose is to reject a badly broken application,
so that the QA team does not waste time installing
and testing the software application.
21. Sanity Testing
• Sanity testing, a software testing technique
performed by the test team for some basic tests.
• Sanity Testing makes
sure that the main
functionality of the
software is working as
expected and that
nothing is affected after
any releases.
24. Black Box Testing
• Black Box testing is a software testing
technique that focuses on the analysis of
software functionality, versus internal system
mechanisms.
• Black box testing was developed as a method of
analyzing client requirements, specifications and
high-level design strategies.
25. White Box Testing
• White Box Testing (also known as Code-
Based Testing) is a software testing method in
which the internal structure, design,
implementation of the item being tested is
known to the tester.
• The tester chooses inputs to exercise paths
through the code and determines the
appropriate outputs.
26. Gray Box Testing
• Gray Box testing is a software testing
methodology that involves the combination of
white box and black box testing.
• It makes use of the straightforward technique of
black box testing, as well as the approach for
code targeted systems, as in the case of white
box testing.
• Gray box testing is geared toward finding defects
based on improper structure or application use.
29. Unit Testing
• Unit Testing is a level of software testing where
individual units/ components of a software are
tested.
• The purpose is to validate that each unit of the
software performs as designed.
• Unit Testing is normally performed by software
developers themselves or their peers.
• Unit testing increases confidence in changing/
maintaining code.
30. • Unit Testing is the first level of testing and is
performed prior to Integration Testing.
31. Integration Testing
• Integration Testing is a level of software
testing where individual units are combined and
tested as a group.
• The purpose of this level of testing is to expose
faults in the interaction between integrated
units.
• Either Developers themselves or independent
Testers perform Integration Testing.
34. System Testing
• System Testing is a level of the software
testing where a complete and integrated
software is tested.
• The purpose of this test is to evaluate the
system’s compliance with the specified
requirements.
• Normally, independent Testers perform System
Testing.
35. • System Testing is performed after Integration
Testing and before Acceptance Testing.
37. Acceptance Testing
• Acceptance Testing is a level of the software
testing where a system is tested for acceptability.
• The purpose of this test is to evaluate the
system’s compliance with the business
requirements and assess whether it is acceptable
for delivery.
• Who performs it?
38.
39. Internal Acceptance Testing (Alpha Testing)
• Internal Acceptance Testing (Also known
as Alpha Testing) is performed by members of
the organization that developed the software but
who are not directly involved in the project
(Development or Testing).
• Usually, it is the members of Product
Management, Sales and/or Customer Support.
40. External Acceptance Testing
• External Acceptance Testing is performed by people
who are not employees of the organization that
developed the software.
• Customer Acceptance Testing is performed by
the customers of the organization that developed the
software. They are the ones who asked the
organization to develop the software.
• User Acceptance Testing (Also known as Beta
Testing) is performed by the end users of the
software. They can be the customers themselves or
the customers’ customers.
41. AD HOC Testing (Random/Monkey Testing)
• AD HOC testing is a method of software
testing without any planning and documentation.
• Very interesting defects
are found in adhoc testing
which would never have
been found if written test
cases existed and were
strictly followed.
• The success of ad hoc testing depends on the
creativity and tenacity of the tester
42. Negative & Positive Testing
• Negative Testing is Testing the system or application
using negative data (Invalid Data).
• Positive Testing is testing process where the system
validated against the valid input data.
43.
44. Exploratory Testing
• Exploratory testing, is all about discovery, investigation
and learning.
• Testers may note down ideas about what to test before
test execution. The focus of exploratory testing is more on
testing as a "thinking" activity.
45. End-To-End Testing
• End-to-end testing is a technique used to test whether
the flow of an application right from start to finish is
behaving as expected.
• The purpose of performing
end-to-end testing is to
identify system dependencies
and to ensure that the data
integrity is maintained
between various system
components and systems.
47. Performance Testing
• Performance testing is the process of determining the speed
or effectiveness of a computer, network, software program or
device.
• The focus of Performance testing is checking a software
program's
▫ Speed - Determines whether the application responds
quickly.
▫ Scalability - Determines maximum user load the software
application can handle.
▫ Stability - Determines if the application is stable under
varying loads.
50. Load Testing
• Load testing is a kind of performance testing which
determines a system's performance under real-life
load conditions.
• This testing helps determine
how the application behaves
when multiple users access it
simultaneously.
• An Airline website was not able to handle 10000+
users during a festival offer.
• $ 4.4 Billion Lost annually due to poor performance
51. Goal of Load Testing
• Loading testing identifies the following problems
▫ Response time for each transaction
▫ Performance of System components under various loads
▫ Performance of Database components under different loads
▫ Network delay between the client and the server
▫ Server configuration issues like Web server, application
server, database server…etc
▫ Hardware limitation issues like CPU maximization, memory
limitations, network bottleneck, etc.
52. Stress Testing
• Stress testing is used to test the stability & reliability of
the system.
• This test mainly determines
the system on its robustness
and error handling under
extremely heavy load
conditions.
• The goal of stress testing is
to analyze the behavior of
the system after failure.
53. Load Testing Stress Testing
Load Testing is to test the system
behavior under normal workload
conditions, and it is just testing
or simulating with the actual
workload
Stress testing is to test the
system behavior under extreme
conditions and is carried out till
the system failure.
Load testing does not break the
system
stress testing tries to break the
system by testing with
overwhelming data or resources.
54. Spike Testing
• The testing process in which the system or software is
sometimes overloaded and yet at other times the load is
decreased tremendously is known as Spike Testing.
• Spike testing is mainly done to see how the system reacts
with unexpected rise and fall of the load.
55. Purpose of Spike Testing
• How Well The System Performs
▫ The main aim of Spike Testing is to access how
well the load is managed by the software when it
oscillates between two opposite spectrums.
• Recovery Time
▫ The software has to recover between two
subsequent spikes or peaks as it impacts the
performance.
56. Endurance Testing
• It simply means testing of enduring capability of the
software product.
• This type of testing is done
with the purpose of
examining the software's
competency to perform
consistently and accurately,
over a longer period of time,
along with the continuous
increment in a load.
57. Volume Testing
• Volume testing is a non-functional performance testing,
where the software is subjected to a huge volume of data.
It is also referred as flood testing.
• Volume testing is done to
analyze the system performance
by increasing the volume of data
in the database.
• Usually, the volume of data being
considered is large. The data can
either be the size of an interface
file that is being tested or the size
of the database.
58. What to Test in Volume Testing
• In volume testing, following things need to be tested
▫ Test to check if there is any data loss
▫ Check the system's response time
▫ Check if the data is stored correctly or not
▫ Verify if the data is overwritten without any notification
▫ Check for warning and error messages, whether it comes at
all for volume problems
▫ Check whether high volume data affects the speed of
processing
59. Scalability Testing
• Scalability testing is a performance
testing parameter that investigates a
system's ability to grow by increasing
the workload per user, or the number
of concurrent users, or the size of a
database.
• Scalability testing ensures that an application can handle
the projected increase in user traffic, data volume,
transaction counts frequency, etc.
• It tests the system, processes and databases ability to
meet a growing need.
60. Reliability Testing (Probability)
• Reliability testing is a type of testing to verify that
software is capable of performing a failure-free operation
for a specified period of time in a specified environment.
• Reliability testing in software
assures that the product is
fault free and is reliable for
its intended purpose.
• Example:- The probability
that a PC in a store is up and
running for eight hours with-
out crashing is 99%; this is
referred as reliability.
61. Usability Testing
• Usability Testing is a type
of software testing where, a
small set of target end-
users, of a software system,
"use" it to expose usability
defects.
• This testing mainly focuses
on the user's ease to use the
application, flexibility in
handling controls and
ability of the system to meet
its objectives.
63. Efficiency Testing
• Efficiency testing test the amount of code and
testing resources required by a program to perform a
particular function.
• Software Test Effectiveness
covers three aspects:
▫ How much the customer’s
requirements are satisfied by
the system.
▫ How well the customer specifications are achieved by
the system.
▫ How much effort is put in developing the system.
64.
65. API (Application Programming Interface)
• It enables communication and data exchange
between two separate software systems.
• A software system implementing an API
contains functions/sub-routines which can be
executed by another software system.
67. API Testing
• API testing uses software to send calls to the API
and get the output.
• API testing treats the component under test as a
black box.
• The goal of API testing is to verify correct
performance and error handling of the
component prior to its integration into an
application.
69. HTTP Response Codes
• 200 OK: – This code indicates that the request was made successful.
• 201 Created: – This code indicates that request was successful and
a resource was created and it validated the success of a PUT or POST
request.
• 400 Bad Request: – This error code happens with POST and PUT
requests, when the data does not pass validation or the passed data is
in the wrong format.
• 404 Not Found: – This code indicates that the required resource
could not be found or not available.
• 401 Unauthorized: – This error code indicates that you need to
provide authentication before accessing the resource.
• 405 Method Not Allowed: – Method Not Allowed error indicates
that the requested HTTP method is not supported for this resource.
• 409 Conflict: – This code indicates that the user create the same
resource twice by which conflict occurs.
• 500 Internal Server Error: – Due to server side issue this error
code occurs.
70. Common Issues in API
• Delayed in API Response time
• To verify when API doesn’t return any response data.
• Difficulty in connecting and getting response from API
• Output response should be checked on the basis of
provided input request.
• Verification of the API whether it triggers some other
event or request another API
• Verification of the API whether it is updating any data
structure
75. Test Plan
• A test plan is a detailed document that outlines
the test strategy, Testing objectives, resources
required for testing, test
schedule, test estimation
and test deliverables.
• The test plan serves as
a blueprint to conduct
software testing activities as a defined process
which is minutely monitored and controlled by
the test manager.
76. Importance of Test Plan
• Test Plan helps us determine the effort needed
to validate the quality of the application under
test.
• Help people outside the test team such as
developers, business managers, customers
understand the details of testing.
• Test Plan guides our thinking. It is like a rule
book, which needs to be followed.
• Important aspects like test estimation, test
scope, test strategy are documented in Test
Plan, so it can be reviewed by Management
Team and re-used for other projects.
78. Test Strategy
• Test strategy is a plan for defining the testing
approach, and it answers to questions like what
you want to get done and how you are going to
accomplish it.
• Test strategy is a guideline to be followed to
achieve the test objective and execution of test
types mentioned in the testing plan.
• It deals with test objective, test environment,
test approach, automation tools and strategy,
contingency plan, and risk analysis
79. Test Strategy Components
Test Strategy
Test
Environment
Scope &
ObjectivesTest
Management
Test
Execution
Defect
Management
Team &
Resources
Test Process
Test
Methodology
80. What is Agile Methodology
• AGILE methodology is a practice
that promotes continuous
iteration of develop-
ment and testing
throughout the
software develop-
ment lifecycle of the
project.
• Both development and
testing activities are con-
current unlike the Waterfall
model
81. What is Waterfall Methodology
• The waterfall model is a sequential (non-
iterative) design process.
• Used in software development processes, in
which progress is seen as flowing steadily
downwards (like a waterfall) through the
phases of conception, initiation, analysis,
design, construction, testing, production
/implementation and maintenance.
83. Software Development LifeCycle
Foundation of the
requirement
analysis.
Defining project
goals as functions.
Design the
product’s optimal
architecture.
Build the product
and create
programming code
Check for errors,
bugs and other
issues.
Release into the
marketplace.