0 ratings0% found this document useful (0 votes) 40 views33 pagesModule 1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here.
Available Formats
Download as PDF or read online on Scribd
DEVELOPMENT
You will learn about the ‘Software Testing’, best practices and Automation Testing
Module Objectives
At the end of this module, you will be able to learn:
+ Define seven principles of Software testing
+ Differentiate between SDLC vis STLC
+ Explain software testing life cycle
Describe various types testing
‘You will be informed about the module objectives.
+ Atthe end of this module, you will be able to learn:
+ Define seven principles of Software testing
+ Differentiate between SDLC vis STLC
+ Explain software testing life cycle
+ Describe usability testing
+ Describe functional testing
+ Describe end to end testing+ Describe compatibility testing
+ Explain GUI testing
+ Explain API testing
Module Topics
Let us take a quick look at the topics that we will cover in this module:
+ Seven principles of Software Testing
+ SDLC vs STLC
+ Testing Life Cycle
+ Usability Testing
+ Functional Testing
+ End to End Testing
+ Compatibility Testing
+ GUI testing
+ API testing
Facilitator Notes:
Inform the participants about the topics that they will be learning in this module.
You will learn about the following topics in this module:
+ Seven principles of Software Testing
+ SDLC vs STLC
+ Testing Life Cycle
+ Usability Testing
+ Functional Testing
+ End to End Testing
+ Compatibility Testing
+ GUI testing
+ API testingTesting shows presence of Defects
Exhaustive Testing is Impossible
Defect Clustering
Context Dependent
esticide Paradox
‘Seven principles try to cover the concept eosaxie Pores
of Software Testing as a whole
‘Absence-of-errors fallacy
Fa
itor Notes:
Discuss with participants what they understand by these seven principles before moving
forward.
Software Testing as any other technology has evolved quite a lot. And it is growing at an
exponential rate. But in a nutshell these 7 pointers define the core principles of Software
Testing. Let's learn about them in detail
11.1.1 Testing shows presence of Defects
Here are some of the reasons why testing plays important role in development life-cycle:
Primary objective is Re-Testing the Defect
to find defects ‘once it is marked fixed
Determining the Keeping track of the Defect Life
severity of defect, Cycle from its origin till end
Keeping a noteftab of the
Prioritization of the Defect’ impact area(s),
defect occurrence frequency
Necessary mitigations to
Following up with the handle Defects of the same.
Defect’ Status Quo genre in future releases
Facilitator Notes:
Explain to participants that testing is way beyond just finding defects now. Gone are the days
when testers were considered as Defect Finders.If we actually go with the basic definition of testing it says “Operation carried out to find Defects”
. However, a more mature definition would be “Operation carried out to find Defects along
with their impact severity’ . But the modern definition of testing is “It is a qualitative approach
to determine the deviation of a system's behavior from its intended behavior resulting in
formulation of quantitative data describing the severity of the impact and mitigations needed
to resolute the impediments"
So testing is way beyond just finding defects now. Gone are the days when testers were
considered as Defect Finders. Software Testing in more reform terms is called Quality Control
when it is related to the Product under test. And it is called Quality Assurance when it is
related to the complete Process as whole. So testing is finding defects but there is lot to
testing that meets the general norm.
eS ET RS
Impossible
Listed below are some reasons why test coverage can be 100% but testing cannot be 100%:
Follow-up of all pre, intra and post - requisites in a Testing Lite
Cycle still does not guarantee complete testing
Defects or deviations can creep in even after the product is
delivered to the client and running successfully for years.
Performance and security parameters can never be hard-coded as full
proof, 50 these forms of testing keep evolving over a period of time
Facilitator Notes:
Tell the participants that they will be retrospecting the possibility of actual Test Coverage in
a real time scenario. Jokingly “The day anyone can get 100% marks in English Writing
where the evaluator is an about to retire Strict English Doctorate Holder Professor,
that day any damn tester can say 100% testing is done” — looks steep.
Exhaustive Testing as the name suggests is like trying to do maximum coverage of testing
but 100% testing is not possible. There can always be a scenario which might exist and
might not have been even comprehended. No tester can ever say “Testing stands 100%
complete”. There is always room for improvement in testing and scope of testing. A certain
testing approach might fail to identify any defect or deviation in behavior as intended but a
certain other testing approach might get to do that. So comprehending various approaches
for one particular event is quite a standard practice these days. In-spite of trying everything,
sometimes still there are certain deviations which skip even the most knowledgeable minds
So complete testing is not possibleIn today's world of Continuous Integration / Continuous Development with shorter time
frames and vivacious rebuilds and version changes, the probability of finding defects just has.
increased. The applications are more robust and more secure and defect free but softwares
have different life cycles these days where in they carry a baggage of certain defects and
deviations to the next iteration and that is quite a norm these days.
New Testing techniques have evolved, testing artifacts have evolved, testing tools which
cover the aspects of Automation, Performance, Security have evolved but still there is always
some gap. However small there always is. Might not be even visible to the most trained and
experienced eye but stil there is.
Software Testers, Testing Leads, Testing Managers, Testing Architects do their level best to
get the software completely bug free but it is never 100%.
oe a4
Reasons why early testing is much better than delayed testing
Era es
Teer a
Berean |g Sa fete Aeros
51 Less pressure on developers during bug prone
Unit Testing © More pressure on Developers during
> Goes eas
Cost Effective 0 Bug Density is high
Not eost effective
Timelines take a hit
© Timelines are met
Facilitator Notes:
List the most Inform the participants the necessity of introducing Testing from the very
beginning of SDLC
Adecade and half or probably 2 decades ago, Testing Methodologies were not that advanced,
and testing was considered a process which shall follow suit as development comes to an end
but those processes failed and failed handsomely as there was too much re-work, application
became cumbersome, too many iterations without proper testing carried recurring defects
which kind of became too stubborn and affected the application's operation as a whole.
Sometimes, the application's tell of the tale was so complicated to resolve, buggy applications
were given a green from the production team and it resulted in serious failures, violation of
contracts and preposterous business declines. Hence testing methodologies were deduced
by industry experts which made testing to begin in tandem with development. The earlier you
test, the secure you are. Simple.
Software industry even up to mid 1990's was following the trend of one task complete, then
doors shall open for the subsequent task. In simple terms, once requirement analysis got over,
then only High Level Architectural Design was formulated. Once High-Level Design module
got over, it opened doors for Low Level Design and subsequently Unit Testing, Integration
Testing, System Testing, User Acceptance Testing, Operational Readiness Testing and so on.The above scenario is concrete but it is concrete if every stage which precedes the other is
completely bug free and non-ambiguous which we all know is impossible. For simple and
basic application which did not involve too much Design and Coding, it worked fine. But when
applications got larger, implementations got complicated and required extensive intelligent
logic- then the above approach failed and it failed astoundingly. Statistically speaking software
Industry suffers losses worth billions of dollars for such failures. The re-work as toomuch.
In 2020, even when testing was done from the very beginning of a product life cycle, stil
there were certain loophole which crept in one form or the other but it can be contained in a
more organized manner. The re-work will be less, the cost incurred will be less and timelines
can be still met if planning for buffer is good. So early testing will allow the fixation to happen
within the same stage. And the defect will not be carried forwarded to the next stage.
er ate
Defect Clustering follows an extended idea of the Law of the Vital few which states that, for
many events, roughly 80% of the effects come from 20% of the causes.
© Majority ofthe defects are found in few module(s)
[© Distribution of defects isnot aoross the whole
application
ee {@ Partoulanty vai for largeappications
Clustering
= (© Proddetermining this or a brand new project starting
from seratch is quite eiicult,
@ CWves 2 good insight forthe next iterations of release
{@ Rearession Testing helps to mitigate detect clustering
Facilitator Notes:
Give an example to the students - an application which is mostly failing in ‘add to cart’
page.
Defect Clustering can be true for applications of gargantuan proportions. With so many
inter-dependent modules in any application these days, it is virtually impossible to say
which particular module will have these many defects and when the next version comes out,
that count will increase to certain number. So defect clustering at a certain module and its
‘occurrence to be a predetermined is bit tricky.
Of course, there is a historical data but it is historical that means such an occurrence has
been a thing of the past, so development and testing team will be more careful while working
on that module or any upgrade of that module. But determining something like this for a
Project which is brand new and beginning from scratch is very difficult. It shall however, give
an insight to focus on areas with more precision and attention in the iterative releases.ig
1.15 Testing - Context Deps
Testing is better if the tester understands the context:
Testing approach
depends on subject
matter in which the
software isdeveloped
Testing as per the
platform/application
under test,
Facilitator Notes:
Give a small example of two types of application. Let's say for example a banking application
and an E-Commerce application and explain briefly how different testing approaches and
techniques need to be used.
Let's say for example you are an Automobile Engineer and all you know is about Engines,
Gearboxes, Suspension Setup, Braking System, Air Conditioning and out of certain constraints
in your engineering college you get a job in software industry and you land up becoming a
Test Engineer. The project assigned to you is related to automobiles. Just imagine the speed
up and enthusiasm which will creep into you - the point being if you know something or may
be know quite a bit about something or maybe you are an SME (Subject Matter Expert), then
Testing around the knowledge becomes an easier and more enjoyable affair.
Similarly in Software Testing also, there are different domains to be tested, different testing
approaches which are followed and different techniques related to those domains. To put
it more simplistically, an E-Commerce application cannot be tested like a Flight Simulation
application, or may be a Health Domain application cannot be treated like a Retail Market
application.
The knowledge of the Context is very important. Learning the Functionality of the context and
all scenarios to test might take weeks or in some cases even months.
So testing is Context Dependent. Certain set of skills to master that domain becomes
imperative eventually with passage of time.116 Pesticide Paradox
Pesticide Paradox can be defined as Software undergoing the same repetitive tests eventually
builds up resistance to them :
Same test inputs to
determine outputs
Predefined steps to
test the application
Weightage remains the same
Focus and concentration depth
remains the same
Facilitator Notes:
Explain to the students by giving an example of an application which has been evolving over a
period of time and testing has improved substantially but the minuscule room for improvement
which does exist and it can induce some change but is not practiced by the testing team - this is
Pesticide Paradox.
Let's understand this with a lifetime example. “You are a gym goer and you go to gym and
do the same weight training for the same muscle groups over and over again and neither do
you change the weights nor change the repetitions nor change any workout pattern. So what
happens ?”
There is no muscle growth, there is no further change in your body's strength, stamina,
muscle outlook. So technically your body has become immune to the same old fashioned
routine. Similarly if any application under test undergoes the same kind of testing over and
over again then finding defects will become redundant after some point of time. So a tester
should keep evolving and use different testing techniques and try to break the system with an
intent to find defect(s) or any deviation in behavior.
Let's say you have an application which has evolved over a period of time and initial releases
there were lot of bugs and testers found those bugs and reported those bugs which got fixed
and now with multiple releases of the same application, the Development team has done a
commendable job to ensure the defect density is too low and on a daily test sanity run, no
defectis encountered. So does this mean the application is totally error free ?
‘Answer is NO. Need to change the approach of testing. May be add more negative test
cases, purposefully try to break the application using lot of negative scenarios. Get more
understanding about the application by interaction with the architects and finding areas of
vulnerability which are stable with current Test cases but they might break with introduction
of something new.We can also implement these changes in the Requirement Traceability Matrix, introduce
a TCER [Test Conditions and Expected Results] sheet dedicated only to negative testing,
for each and every functionality that can render a negative outcome — prepare some test
scenarios Test the Security and Performance aspects of the application too.
AN deed
Even a
successful
running product
can stil be error
prone
A-100% error Even a 99% bug
free application {ree application
tant peace might na be
° usable
Facilitator Notes:
Explainhow even a99% bug free application mightstill not be usable if the userrequirements
are not met.
Absence-of-errors fallacy — Ok let's learn this with an example again. Let's say there is an
application which has been released in the market and the market has accepted the same
and millions are coming. Does this guarantee that the application is totally bug free ?? Answer
is : NO and that too an astounding NO because nothing is 100% bug proof.
Some scenario —let it be security, performance or functional can come up which will induce or
find a certain deviation in the application. So 100% error free application is next to impossible.
1. E-Commerce Software Testing approach ws Gaming
Soltware Testing approach — so which ofthe software
testing principle is followed
Answers:
: Context Dependent22 Which ofthe following statement is true?
{A) Exhaustive testing is impossible but practicable
'8) Exhaustive testing is possible but impracticable
©) Exhaustive testing is impossible and impracticable
) Exhaustive testing is possible and practicable
2 Software tester focuses more on complex pat of the
software. Which ofthe folowing testing principle implies
this?
A) Tosting shows prosonce of defects
B) Pesticide paradox
©) Testing is context dependent
D) Defect Clustering
Answers: Ans 3 : (d)
bE he Ke
SDLC is different from STLC as STLC focuses completely on testing:
SDLC is Software Development
Life Cycle. Testing is a phase in
SDLC
STLC is Software Testing Life
Cycle. Development is not a
hase in STLC
Both are designed keeping in
mind that business requirments
are met with high industry ie
Sandards
Both play pivotal ole in pre-intra-post
Development and Testing of a Software
Product.
Facilitator Notes:
Explain participants bit about what SDLC is and what STLC is and then explain the
difference.
Let's understand word by word
S - Software Application.
D - Development (as the word suggests a certain software following a certain ArchitecturalDesign is being developed)
L- Life (starting from day 1 till its closure date)
C - Cycle (the software can have multiple iterations, versions, updates and total end to end
responses)
So what does SDLC do or if we ask the right question why is it even deduced. In simple
terms, it is kind of a process to consolidate all the necessary phases and understand the
individuality of each phase and integrate them then see how they work together. And then
prepare the best systematic way to produce a high quality product keeping in mind the end
user’ requirements.
Reviews/Inspections/Walkthroughs are important practices before and after completion of
every stage that provides optimum management [Link] plays a pivotal role in giving
structured, editable. reusable documentation with different Version [Link] and Entry
Criteria for each Stage is well defined.
S - Software Application
T - Testing (as the word suggests the software will be undergoing testing as it is developed -
kind of in tandem)
L - Life (testing activity day 1 till end of testing)
C- Cycle (the software like its development phase will undergo a lot of phases of testing - so
this defines all its phases and behavior)
STLC gives end to end ideas of what, how and when testing activities needs to be carried
out. Estimation plays a pivotal role in STLC .Each module of the project is tested before the
beginning of the another module.
eRe he
=
al
t
Se
«a
Facilitator Notes:
Explain briefly as per the image in the slide+ SDLC is predominantly related to Software Development and has Testing as a High Level
Design Phase whereas STLC is predominantly related to Software Testing and Quality
Assurance.
+ Participating members in SDLC includes more of Developers and Participating members
in STLC includes more of Testers.
+ InSDLC, Business Analysts gather the requirements from the Clientand Development Plan
is generally designed by the Development Architect while in STLC, test analysts create
the Test Integration Plan and Test Architect designs the end-to-end testing framework.
+ SDLC phase also includes post-deployment supports and updates while STLC phase
follows any escalation which is encountered and does mitigation.
+ In SDLC, Low Level Designfactual coding] is developed as per the BRD (business
requirement document) or FRS(functional requirement specification) while in STLC, the
testing team prepares the test environment and executes them.
What did you Grasp?
Ans: (e)
113 Testing Life Cycle
Testing Life Cycle is an overall operation comprising of testing activities from planning,
execution, deployment and maintenance
The various phases in Software Testing Life Cycle are as follows:-
> Requirement Analysis
res Planning
Test Case Designing and
Development
Test Environment Setup /
Configuration
> Test Execution
Dd Test ClosureFacilitator Notes:
Explain the participants in a litle bit more elaborate way about STLC
Let us understand in the form of an example:- “There is a team of developers and testers
working on a Project. from the very first phase of SDLC, simultaneously the testing
activities have started. The Development team is designing a certain module and
testing team is ready with the testing layer ready to test once the development team
hands over the developed software module to them. The developers are bound to
make mistakes. So the main role of STLC is to identify those mistakes and report
them adequately and get them fixed. Hence, the ultimate intent of STLC is to maintain
quality and maintain Agreed Contract Level Standards”.
13.1 Testing Life Cycle —- Requirement Analysi
Understanding of Requirements thoroughly is very important hence,
at
require
Peer
Coane eee) roo
Point enue Testing
Facilitator Notes:
Explain the participants about the requirement analysis by giving a small example of a
real time scenario from routine life and then transferring the same into software testing
example.
Requirements can be received in various stages — from the very beginning or in the middle of
a project in the form of a CR (Change Request). Understanding of Requirements thoroughly
is very important. In case, there is a certain gap, then there is a risk of compromising on the
quality and reverting the same will be a complicated effort which might lead to escalation.
So understanding requirements from the very beginning is extremely important. Doubts,
questions, misinterpretations should all be clarified before hand, Any time in between or in the
middle, any doubt comes even while understanding the requirement should be immediately
reported and addressed accordingly.
Testing team segregates the requirements into Functional and Non-Funetional requirements
as well. Functional requirements in some cases even get sub divided into Functional and
Techno-Functional requirements as well. Manual Testing approach gets different requirement
document and Automation Testing approach gets different.
Prioritization of requirements is also a part of Requirement Analysis.ui
ife Cycle — Test Planning
Test Plan is a Document that describes test strategy,
objectives, schedule, estimation and deliverables and ° e
resources required for testing. Test Plan is Probably the
heart of the testing operation. NY
Test Plan contains: ‘
+ Reference documents, test items, software risk issues, %
features to be tested and not to be tested.
+ Test strategy.
+ Test items pass/fail criteria
+ Suspension criteria and resumption requirements .
+ Test deliverables, environmental needs, staffing, training needs, risks, contingency plans,
approvals
Facilitator Notes:
Brief about Test Plan to the students.
Test Plan is a Document rather call it a Version Control document which describes test
strategy, objectives, schedule, estimation and deliverables and resources required for testing.
There have been number of discussions of who designs the Test Plan, who maintains it, do
authors change continuously and when can we say this is the final Test Plan Document for
this project.
To answer these questions we need to understand why is Test Plan such an important
document :-
It becomes a guiding reference for people outside the testing team such as developers,
business managers, customers understand the details of testing. It also gives them the
time interval to approach a certain functionality. And it also gives section to implement their
ideas for better practices which can be introduced within the Test Plan for a better testing
objective. So Test Plan also becomes quite an acceptable document which renders all ideas
and comments. It is editable in nature
Test Plan gives the testing team a structured guideline, set of rules of how, what, when and
where to test — it also gives us who to approach in case we face certain difficulty. Other
Testing artifacts like test estimation document, test scope, Test Strategy are documented in
Test Plan and also it gives a lot of information about the various people involved in this. Who
is testing what. Who has what responsibility. Who is the POC of what. Historical outline of
Test Plan also plays a very important role when a new Version of a certain software is about
to be tested, The old test plan acts as a reference document and also guides what best things
can be taken out from the previous plan and what odds could be avoidedTest Case Designing and Development should: 5
+ Be based on the test plan, testers design and develop =)
test cases. VV @
+ Verification and validation of specified requirements in 8
the documentation stage
+ Also, the reviewing, updating, and approval of automation
scripts and test cases are essential processes of this
stage.
+ This phase also includes defining different test conditions with input data and expected
outcomes
+ Test Case Design Techniques are :~
+ Specification Based Technique
+ Structure Based Technique
+ Experience Based Technique
Facilitator Notes:
Discuss what is Test Case Designing and Development
Test Case Designing involves a lot of Prerequisites which needs to be followed before taking
an approach. If not then it might lead to frequent changes and modifications which might affect
the Estimation Process. A good TCER [Test Conditions and Expected Results] document is
very important. A good test design is symbolic of how good your Test Plan is and how good
all your test artifacts have been to give a good platform for designing of Test Cases.A good
test case should cover all the functional and technical base of each and every scenario and
more. It should be reusable and flexible enough and the language should be simple and
precise. It should not include un-necessary clumsiness and complexities.
iu
1 Testing Life Cycle - Test Case Designing and Development
Specification Based Technique — Black Box Testing
This technique’ focus is mostly on the external layer of the software such as technical
specifications, design, and client's requirements to design test cases. The technique enables
testers to develop test cases that provide full test coverage.
The Specification-based or black box test case design techniques are divided further into 5
categories. These categories are as follows:
Esunalence Stata Transton
Partionna Testa
Boundary Vie Decton Table Use case
Ansa Testing TesingFacilitator Notes:
Tell the participants the meaning of external layer or in simple terms the outside pattern
which collate the testing techniques and determine the broader outcome.
Answers:
Black Box testing technique does not need the tester to have in depth coding knowledge of
the application. What matters most here is the knowledge of possible inputs, logical operation
and expected output. Having these 3 in the kitty, the Tester or Black Box Tester is good to go.
Let's discuss little bit about the various Black Box Testing Techniques:
1. Boundary Value Analysi
Like any application logic becomes vulnerable and susceptible at boundaries even in
software applications. A Developer has more chances of introducing a faulty logic which
might not be completely wrong but might be somewhat wrong at the border lines. Testing
any application with the minimum value and maximum value parameter and transition
or switch the next parameter should be done with this technique. There could be many
real life examples like “Checking February calendar for leap year, non leap year and
checking the value in March’, “checking for bulk items which might give a discount
scheme from item 10th to 19th [so item no 19th, 20th and 21st will come under
BVA] and then another discount scheme from item 20th to 29th [so item no 29th,
30th and 31st will come under BVA] “
Similarly there could be multiple exams. So basic understanding is the minimum value,
just below minimum value, maximum value and just above exact value — these areas
needs to be tested.
2. Equivalence Partitioning:-
In this technique, the entire range of input data is divided into different partitions. All
possible test cases are considered and divided into logical set of data. One test value is
picked during each execution. So we divide the total input data into sets of data and then
test them to find vulnerabilities. The only de-merit of this technique is that ‘it is not too
helpful when fewer test cases should cover maximum requirements”
3. Decision Table Testing:-
In this technique, test cases are designed on the basis of the decision tables that are
formulated using different combinations of inputs and their corresponding outputs based
on various conditions and scenarios adhering to different business rules. It is used in
both testing and requirements analysis. It manages complex business logics in simplified
tabular format which gives a simplistic explanation. One advantage of using decision tables,
is that they make it possible to detect combinations of conditions that would otherwise
not have been found and therefore, not tested or developed. The requirements become
much clearer and you often realize that some requirements are illogical, something that
is hard to see when the requirements are only expressed in text.A disadvantage of the technique is that a decision table is not equivalent to complete test
cases containing step-by-step instructions of what to do in what order. When this level of
detail is required, the decision table has to be further detailed into test cases.
4, State Transition Testing:-
It is a Black Box Testing technique. The tester will give certain inputs [ keep in mind
the inputs can differ from positive to negative]. The tester determines the behavior of
the application under certain permissible finite limits of inputs. And notices the system's
response the moment the finite number of attempts gets exhausted.
Let's understand this via an example. You have an ATM Debit Card and you go to the
ATM Machine.
Negative Attempts:-
1st Attempt — wrong pin and system denies access and warns you 2 more attempts left
2nd Attempt — wrong pin and system denies access and warns you 1 more attempt left
3rd Attempt — wrong pin and system denies access, blocks card and gives message “card
has been blocked due to suspicious activity”
Positive Attempt:-
1st Attempt — right PIN and system acknowledges access
So here is that the state of the system changes with every attempt. This form of testing in
real life scenario is called State Transition Testing
5. Use Case Testing:-
Itis a descriptive form to address the functionality of the system at a user level. Specific
negative and positive scenarios are not segregated. Just the intent of testing is directly
mentioned in one line
For example : Login into the application using valid credentials and validating system
response
Enter invalid credentials and attempting login and validating system response.A disadvantage of the technique is that a decision table is not equivalent to complete test
cases containing step-by-step instructions of what to do in what order. When this level of
detail is required, the decision table has to be further detailed into test cases.
4, State Transition Testing:-
It is a Black Box Testing technique. The tester will give certain inputs [ keep in mind
the inputs can differ from positive to negative]. The tester determines the behavior of
the application under certain permissible finite limits of inputs. And notices the system's
response the moment the finite number of attempts gets exhausted.
Let's understand this via an example. You have an ATM Debit Card and you go to the
ATM Machine.
Negative Attempts:-
1st Attempt — wrong pin and system denies access and warns you 2 more attempts left
2nd Attempt — wrong pin and system denies access and warns you 1 more attempt left
3rd Attempt — wrong pin and system denies access, blocks card and gives message “card
has been blocked due to suspicious activity”
Positive Attempt:-
1st Attempt — right PIN and system acknowledges access
So here is that the state of the system changes with every attempt. This form of testing in
real life scenario is called State Transition Testing
5. Use Case Testing:-
Itis a descriptive form to address the functionality of the system at a user level. Specific
negative and positive scenarios are not segregated. Just the intent of testing is directly
mentioned in one line
For example : Login into the application using valid credentials and validating system
response
Enter invalid credentials and attempting login and validating system response.i
Testing Life Cycle - Test Case Designing and Development
Structure Based Technique - White Box Testing
The structure-based or white-box technique design test cases based on the internal structure
of the software. This technique exhaustively tests the developed code. Developers who have
complete information of the software code, its internal structure, and design help to design
the test cases.
This technique is further divided into five categories:
Decision Testing ‘Multiple Condition
Coverage Testing
‘Statement Testing Condition All Path Testing
& Coverage Testing
Facilitator Notes:
Give a quick walk-through for white box testing and why code logic is important. Give the
example of Unit Testing to the participants.
White Box testing technique does need the tester to have in depth coding knowledge of the
application. So generally developers act as Testers here. Unit Testing is an Example of White
Box Testing which is done by developers
Let's discuss little bit about the various White Box Testing Techniques
+ Statement Testing & Coverage
This technique involves execution of all the executable statements in the source code at
least once. The percentage of the executable statements is calculated as per the given
requirement. This is the least preferred metric for checking test coverage.
+ Decision Testing Coverage
This technique is also known as branch coverage is a testing method in which each one
of the possible branches from each decision point is executed at least once to ensure
all reachable code is executed. This helps to validate all the branches in the code. This
helps to ensure that no branch leads to unexpected behavior of the application.
+ Condition Testing
Condition testing also is known as Predicate coverage testing, each Boolean expression
is predicted as TRUE or FALSE. All the testing outcomes are at least tested once. This
type of testing involves 100% coverage of the code. The test cases are designed as such
that the condition outcomes are easily executed.+ Multiple Condition Testing
The purpose of Multiple condition testing is to test the different combination of conditions
to get 100% coverage. To ensure complete coverage, two or more test scripts are required
which requires more efforts.
+ All Path Testing
In this technique, the source code of a program is leveraged to find every executable
path. This helps to determine all the faults within a particular code.
1.3.1 Testing Life Cycle - Test Case Designing and Development
Experience Based Technique
These techniques are highly dependent on tester’s experience to understand the most
important areas of the software. The outcomes of these techniques are based on the skills,
knowledge, and expertise of the people involved. The types of experience-based techniques
are as follows:
| Error Guessing | | Exploratory Testing
Facilitator Notes:
Tell the participants about the difference between an experience tester and a newbie.
Explain bit of Monkey Testing or Gorilla Testing.
Experienced Based testing technique is purely based on historical behaviour, knowledge of
vulnerable areas, knowledge of susceptible boundaries and trying to break the system with
intuitive inputs and determining the nature of the application under test under certain payload
of the data
+ Error Guessing
In this technique, the testers anticipate errors based on their experience, availabilty of
data and their knowledge of product failure. Error guessing is dependent on the skills,
intuition, and experience of the testers.
+ Exploratory Testing
This technique is used to test the application without any formal documentation. There
is minimum time available for testing and maximum for test execution. In exploratory
testing, the test design and test execution are performed concurrently.1) Based on___and_scheduleis planned.
A) resource planning and activities
8) effort estimation and resource planning
) environment set and database
D) activities and testcase
2 What are the inputs for Test Planning
AA) Req. Documents,
B) Tost Strategy
) Both (a) and (b)
D) None of the Above
3. AAs part of which test process do you determine the exit
caiteria?
A) Test planning.
8) Evaluating exit eriteria and reporting,
6) Test closure
D) Test control
Answer: 3 : Students this one is interesting. Please discuss among yourselves and come
with the right answer‘Targeted for a smaller audience
Part of Operational Readiness Testing
Primary Focus is on the user’ comfortabilly while using
the Application
Should be implemented in initial design phase
Facilitator Notes:
This module should focus on the ease of use. Just tell the participants any live example
of any website and how easy it is to use. Something like it is more user friendly than any
other application of the same genre.
Usability testing is carried out to determine the user friendliness of the application. Let's say
for example there is an old website which is undergoing a complete changeover and all the
feedback, however critical of the previous versions from end users have been considered and
worked upon and all the changes have been implemented in this release. So before releasing
it world wide, the beta version or the alpha version is released to certain customers to get
their initial rounds of feedback and as per their feedback corrections are implemented. This
could do multiple rounds of Development and Testing but this enhances user friendliness with
real time user feedback
To understand more about Usability Testing, we need to understand few things first:-
Why do we need usability testing ?
How to do Usability testing ?
Advantages of Usability testing
Disadvantages of Usability testingWACOM UUM alte Meelis mis
Usability testing is helpful as:
It makes less
It gives a heads technical users can _It helps to determine
up to make GUI also access such _errors at an early stage
more simple. application without which shall prevent late
much help. hiccups.
0.0'O«
Ithelp to improve
Aesthetics and
user friendly. Design.
Aesthetics, design, look & feel, easy accessibility are important. How user-friendly a product
looks usually determines how well it works.
There are many software applications/websites, which miserably fail, once launched, due to
following reasons -
+ Users are clueless about what to do next. So calling customer care or emailing to the
technical team becomes a lethargic option.
+ Navigation to next page or navigation to anywhere else becomes a challenge.
+ Which Icon or Link or hyperlink or flash or pop-up represents what functionality .
+ Notifications, Error messages are not too convincing or are confusing.
+ Session timeout and Session Cookies effectiveness.
So to counter the above issues, Usability Testing comes very handy. What matters most to
end users is the GUI interface and for that Usability Testing is very important
Usability Testing process consists of these phases:-
Usability Tests
Execution
Planning Reporting
Recruiting Data AnalysisFacilitator Notes:
Brief to participants about the goals and objectives set in this phase
Usability Testing process consists of these phases:
Planning:- During this phase the goals of usability test are determined, Need to determine
critical functionalities and objectives of the system. Need to assign tasks to testers, which
exercise these critical functionalities. During this phase, the usability testing approach,
number & demographics of usability testers, test report formats are also determined
Recruiting: During this phase, recruitment of testers as per usability test plan is given a
green.
Usability Tests Execution: During this phase, usability tests are actually executed.
Data Analysis: Data from usability testsis thoroughly analyzed to derive meaningful inferences
and give actionable recommendations to improve the overall usability of your product.
Reporting: Findings of the usability test is shared with all concemed stakeholders which can
include architects, developers, client's technical team, and Senior Management
PU Us AU ee NLL Le
Se aCe
helpful in uncovering the usability issues before the marketin
Deans
eat
od
Facilitator Notes:
Discuss with students what else do they think can be advantages of usability testing.
Usability Testing definitely plays a major role in improving the user friendliness of the
application, especially the GUI.
Let's learn via an example:-
Let's say you belong to one of the Tier 1 Cities in India and a Company named “Robot Design
Tech” is launching a domestic Robot in the market. To test its first prototype and market
response, the company announces releasing prototype version 1 in your Tier 1 city and it also
keeps a reward “anyone who can determine a certain level of Defect will be awarded so and
so much amount cash prize or gift voucher or anything” - So a consumer who is a user, will
buy the prototype and use it as well as try to find any defect in the product and report if found.Just imagine the same kind of a situation, but instead the users are software testers and not
consumers. So these testers test the product to be released keeping in perspective “How a
normal user would perceive the product”
isadvantages of Usal
‘Some disadvantages of Usability Testing are:
ee ee ee ee ec)
BT acre eT res lots of planning and time,
Peete ee cee ge ee ees
+ Training testers to reach that level of expertise needs infrastructure investment
+ Sometimes feedback can be ambiguous as users cannot be technically aligned with the di
pattern which is a complex logic
work and multiple iterations can be time consuming and also not cost effective
Facilitator Notes:
Just have a normal discussion. It is almost self explanatory.
Usability Testing is a good practice but good practices come at a price, so every software
product does not undergo Usability Test.
What
id you grasp?
41. Goals of usability testing:
A) Performance
B) Accuracy
C) Recall - How much does the person remember
afterwards or after periods of non-use?
) All of above
2. Think about why you will be doing a usability test:
‘A) How do people interact with the system you are
testing?
- B) What is difficult or easy for people to do?
C) What makes sense about it? What is exciting about
ie
) What changes would users like to soo?
E) All of above
(©)
Answer: 2: (E)Answer: 3: (A)
pe} nal Testing
Key features of functional testing:
atlas,
Itis a Black Box Testing Process During this testing the behavior of
Othe systom i validated against the
(> ‘system requirements
=,
‘The scope of functional testing Y
Iso validate Ifthe system works O- Functional testing can be done manually
28 iis intended to, ‘oF automated
Functional testing is the process through which testers determine if a piece of software is
acting in accordance with predetermined requirements. It uses black-box testing techniques,
where the tester need not have a deep knowledge of the internal system logic. Functional
testing is only concerned with validating if a system works as intended. The tester has a set
of data which acts as an inputs, tester is knowledgeable about the system! logic and also
is aware of the output. Tester is also aware of the expected outputs depending upon the
variations in the inputs.
The most important observation for the testers performing the functional testing is to evaluate
the compliance of a system or component with specified functional requirements. Any
deviation shall be reported accordingly.
There is a distinct advantage for the functional testers. They need not know the in-depth logic
of the functionality, so they will think purely on inputs and outputs and they shall match the
Actual Output v/s Expected Output and pass the judgement.
However, the functional test cases should be very well documented and should undergo
multiple rounds of reviews. All the Functional Testing artifacts should be up to date as
functional testing mostly involves the heart of the application’s response to the requirements.134 En 4
Key features of End-to-End testing:
+ Through this testing methodology an
application flow is tested from start to end
+ Here, the real user scenario simulation is
very important.
+ The system is tested to validate how each
component behaves independently and in
syne with other systems as a cohesive unit
There are various End-to-End testing methods:-
+ Horizontal Test
+ Vertical Test
Facilitator Notes:
Tell the participants why end-to-end testing should be conducted from birth tll delivery of
an application rather than testers pulling the plug early
End to End testing is vast.. Let’s discuss about an application which does not undergo End-
to-End testing and it just follows the typical behaviour instances approach. Even if this might
work well for a system as a single entity but when integrating with multiple units might fail or
behave abruptly. Sometimes defects or deviations creep in or are encountered at stages of
the testing process where it is least expected but it could be highly critical. So just testing the
functional and technical aspect of things of a product and marking it defect free and ready for
release is an amateur approach and it could be highly risky.
eee ind Testing — Methods
End-to-End testing methods are:-
+ Horizontal Test
+ Vertical Test
Facilitator Notes:
Discuss the two testing methods of End-to-End Testing
+ Horizontal Test: Let's say you are a common user and neither a developer nor
a tester. So a normal user's perspective is kept in mind here while testing. If a
user is exposed to testing a particular application’ business logic from the verybeginning to end and also to make sure all the interrelated logics are working
fine, then the projection of a user might be different from a tester or a developer.
Keeping the above practical logic in mind - Horizontal testing is formulated. This occurs
at the end of a release cycle when all the changes have been implemented. The test
environment is set up by the testing team prior to execution. Then the testers typically
test each module, sub-module, inter dependent or inter-related interfaces from a user's
perspective
+ Vertical Test: This is a time taking process as it involves extra dedication and efforts to
test a module as a separate entity. Success in one layer, gives a green to begin testing
of the other layer. Once the other layer is completed, and depending on its success or
failure, testing of the subsequent layers are determined, This cannot be independently
done by a sole testers. As there has to be a lot of intervention in the form of business logic
changes and other enhancement implications. Major stakeholders here are - developers,
testers, product owners - all need to pitch in and assist the testing process.
id Testing — Advantages
Re eee es
Se Ts
Facilitator Notes:
Discuss the various advantages of end-to-end testing.
Applications are getting complicated these days. There are major integrations, dependent
systems, build tools, compile tools, third party tools and Repositories. So it can happen that
systems might pass certain tests individually but when integrated together with multiple
systems to work as one unit — the same tests might fail. Conducting end-to-end testing helps
to ensure the software is production ready, layer by layer.
So end-to-end testing ensures that health of the application as a single entity and as an
integrated unit remains good and it works as intended. It also expands test coverage beyond
what's normally considered in more isolated testing practices. It helps in mitigating risks
In today’s modem methodologies, end-to-end testing gives a distinct advantage of identification
of errors at an early stage resulting in faster resolutions and increased productivity. It also
reduces the complexity which might get involved of finding a bug at a deeper phase of SDLC
and thereby, become more cost effective in nature
The one most wonderful advantage of end-to end testing is that it can help in testing the system
asa single unit, as well as testing the system as a cohesive unit. So with the same approach,
single and multiple integrated platforms can be tested which gives it quite a diversity.The major disadvantages of End to End Testing are:~
Sec eet)
Disadvantages
Requires buy-in and coordination of all major SDLC stakeholders
Facilitator Notes:
Discuss the various disadvantages of end-to-end testing.
End to End Testing has lots of advantages but in some cases it tends to invoke multiple
rounds of testing with every defect fixing and it tends to delay execution of test cases as
regression becomes important at every stage.
Such practices, also need approval and support of all the senior personnel within the
Organization. They tend to keep a strict vigil over things which may delay the release.
1.3.5 Compatibility Testing
Key features of compatibility testing are:
# q
aS €
oe
CCompatibiity Testingis 2 ‘This means thatit checks the Compatbty Testing
nom funconl testing. compatity ofthe sofware wih should be performed in real
vaious browsers, databases, time environment
hardware, operating systoms, mobile
eviews, networks.
Facilitator Notes:
Discuss the features of compatibility testing.
Itis all about meeting customer needs these days. So compatibility testing is a major stepping
stone in that direction. Today's software has to be vivacious enough to run in multiple
browsers, databases, hardware, operating systems, mobile devices, networks. And there are
also various versions of these. So to determine the minimum version on which the software
should run and verifying the same is the basic agenda in compatibility testing.
Itis much advisable to be tested in a real time environment rather than a virtual environment
as it will give honest feedback of how system is behaving.1.3.5 Compatibility Testing - Types
The various types of compatibility testing are listed below:
=
=
=
Facilitator Notes:
Discuss the different types compatibility testing.
Browser compatibility testing:~
With emergence of various browsers in the market, and end users being flexible to use
quite a bunch of them, any software application should run alongside these browsers with
respective versions. Their match, their response, their acknowledgement with respect to the
application needs quite thorough testing. Even comparisons are drawn as in which browser
is the most compatible for this application as a form of a suggestion. So browser compatibility
testing is very important these days
Hardware:-
Complexity has not helped outdated systems to thrive in the market these days. With software
of any form becoming more and more complex, it requires high performing hardware platforms
to be operational at full capacity. So hardware compatibility is always measured at an initial
stage and hardware compatibility becomes an inevitable exercise in today’s age.
Networks:-
Gone are the days of 2G and 3G. LTE has no limits and soon 4G will become outdated. So to
keep proper tab of today’ growing network bandwidth, typical applications these days have a
design of that sync to make sure how it works well with the minimum bandwidth available to it
Mobile Devices:-
These also fall in the category of hardware but mobile devices have a different sort of hardware
and they adapt to network compatibility in a different way. So with various versions of iOS or
Android and behavior with respect to change and upgrade in software versions, compatibility
tends to become a serious cross check. Some might fail in Ul, some in functionality. So
Mobile device compatibility is of paramount importance
Operating System:-
Checks whether software is compatible with Windows, Mac OS or Linux or other Operating
SystemsGUI Testing
GUI (Graphical User Interface) testing is defined as the process of testing the system's
Graphical User Interface of the Application Under Test.
It involves testing of all the GUI elements —
PBs. ce Fen.
a oo) Co
et ince [mm |
Pieris fro.
Facilitator Notes:
Discuss the features of GUI testing.
Without even knowing end users end up doing GUI testing almost on a daily basis though
their goal is not to try to break the system, rather it is to complete their task as per their need.
GUI testing is mostly checking the overall visibility of the application page. As we all know,
there are various elements present in a webpage which are mentioned above and testing the
behaviour of these elements with respect to a certain pre-condition followed by an action is
what is called GUI Testing.
Lot of automation suites also help in doing GUI testing some of which are : Selenium, Sikuli,
Water, Dojo Toolkit, etc.
GUI Testing is unavoidable. They fall under category of BlackBox testing but it requires quite
a bit of thorough checks.
13.6 GUI Tes! Techniques
Various GUI testing techniques are:
Automation
Based
Model
BasedFacilitator Notes:
Give an example of any login page of any application.
Manual Based: Testers follow the BRD or FRS documents and especially for GUI, a lot of
images are mentioned along with lot of markings to give precise workability of these elements.
Testers follow these documents and do the testing and report the defects accordingly.
Automation Based: GUI testing can be done using automation practices. Again manual
testing has to be present as the automation tests need to mention assertions of various
degree to validate these elements.
Model Based: A model is a graphical description of a system's behavior. It helps to understand
and predict the system behavior. Models help in a generation of efficient test cases using
the system requirements. Need to build the model, validate inputs for the model, assert the
outputs for the model, run the tests for the model, expected output v/s actual output.
PW APA
Key features of API (Application Programming Interface) Testing:
Key features of API (Application Programming Interface) Testing:
@ iis set of protocols to buld software applications
® ‘API testing is performed at a messagelayer.
Itis used to educate how software programmes interact with each other.
be
T
@ These ae collection of sofware functions which can be executed by another software
Facilitator Notes:
Give example of interaction between browsers and browser drivers
APIs, or Application Programming Interfaces, they act as connectors between different
systems or system layers of an application. Due to high profile security and blockades and
copyrights ~ accessing a certain system would not be possible unless APIs are involved. APIs.
customize what is the permissible limit of information. GET, PUT, POST, DELETE — these
API calls determine what an application can return and what it can absorb depending on the
access rightsLet's take an example of Google. Google has various services. One of the most popular is
Google Maps. We use Google Maps in Ola, Uber and what not and where not. Does this
mean Google is exposing its Google Map code to every software who need it ? Answer is
NO. What Google does is it exposes its Google Map APIs to these these software but not the
code.
1.3.7 API Testing - Advantages
Listed below are some advantages of API testing
Facilitator Notes:
Give example of any application which has to fill a form of any order.
Imagine life without Google Maps. Imagine life without makemytrip, goibibo, easemytrip,
trivago. Imagine remaining hungry without Swiggy and Zomato
Now further imagine life without [Link] and [Link] All these above mentioned
Websites — expose their APIs and these APIs are the ones which we receive and live our life
on. They are easy to test using a tool known as ‘Postman’. Also,these can be automated by
learning REST Assured API Testing. They are not difficult to understand either as they are
mostly in JSON format which is a key value pair aggregation.
The deviations are identified immediately and it does not take much time to fix these. API
Testing is in a world in itself. And API Testers are also paid very handsomely
CSUs tL
1. Seven principles of Software Testing
SDLC vs STLC
Testing Life Cycle
Usability Testing
Functional Testing
End to End Testing
Oareon