SlideShare a Scribd company logo
1 of 75
Download to read offline
#esconf | @eviltester 1
#esconf | @eviltester 2
#esconf | @eviltester 3
We over-complicate testing
• Have you seen some of the definitions?
• Have you tried to write your own definition?
#esconf | @eviltester 4
Otherwise
• it might appear too simple
• it might appear easy
#esconf | @eviltester 5
And if its too easy and simple
• it might be undervalued
• only junior staff get to do it
• we might get paid less
#esconf | @eviltester 6
Solution
Cram in Everything
#esconf | @eviltester 7
Software Testing is a process whereby we use a software system
deployed in multiple configurations, via its GUI, API - and all
exposed interfaces - to gather information about its behaviour,
flaws and impact on the user and stakeholder needs and
requirements; for the purpose of evaluating the quality, and
fitness for purpose, in specific operational environments and
conditions.
A possible first draft definition
#esconf | @eviltester 8
But we wouldn't stop there
• refine our definition
• simplify, chunk up
• delete sections
• change it over time
• communicate it differently for different people
But that's a communication. It isn't what testing 'is'.
#esconf | @eviltester 9
Danger - over-complicate
• How do other fields define themselves?
e.g. complicated fields like Physics?
#esconf | @eviltester 10
I should consult a
dictionary or
something.
#esconf | @eviltester 11
What is Physics?
"the branch of science concerned with the nature and properties
of matter and energy."
Google Dictionary Definition
#esconf | @eviltester 12
What is Physics?
#esconf | @eviltester 13
What about Rocket Science?
#esconf | @eviltester 14
What is Rocket Science
#esconf | @eviltester 15
Google Dictionary: What is Software
Testing?
"No definitions found. Search the web."
#esconf | @eviltester 16
We have no choice
We have to make this up for ourselves.
#esconf | @eviltester 17
What is more important?
Imagineedfusticating?
or
Working with a good
Imagineedfusticator?
#esconf | @eviltester 18
Imagineedfusticating
"The art of getting exactly what you need when you need it"
Definition from "The Associated Society of
Imagineedfusticators for Advanced Imagineedfustication"
#esconf | @eviltester 19
An Example
Assume we know nothing about software testing.
"No definitions found. Search the web."
#esconf | @eviltester 20
How would we work
from first principles?
#esconf | @eviltester 21
Let's use a worked
example
#esconf | @eviltester 22
I've been
tasked with
testing this
#esconf | @eviltester 23
I don't want anyone to know that I don't know how to test it, so
I nod and then try to figure out what does software testing
mean.
So I look for definitions but we've seen how that turned out.
So I go ask google
"What is Software Testing"
#esconf | @eviltester 24
What is Software Testing?
Software testing is the process of executing a program or
application with the intent of finding bugs in the software.
It can also be described as the validation and verification of a
software program or application or product or system.
not text from a website that has high rankings for this web
search
#esconf | @eviltester 25
Validation & Verification
• verification - noun “The process of establishing the truth,
accuracy, or validity of something.”
• validation - noun - “The action of checking or proving the
validity or accuracy of something.”
OK, so both are about validity, accuracy, proving and truth.
Those words seem pretty similar, why would I do both?
#esconf | @eviltester 26
OK, I'll forget that.
#esconf | @eviltester 27
What have I learned?
Software Testing is doing stuff to something to find out stuff
like:
• find bugs,
• find things that are wrong,
• find stuff that is right
Warning: Be careful of certitude and absolutes.
#esconf | @eviltester 28
Too much theory
I have a job to do
#esconf | @eviltester 29
What did they mean when they
tasked me with "testing" this.
• find bugs?
• how will I know its a bug?
• anything specific you want me to test it 'for'?
• what do you want to 'do' with what I tell you?
• is testing the input to something else?
"What do you mean?"
#esconf | @eviltester 30
OK...
focus on the create author function and make sure it handles a
range of input values
"What values?"
You know. Good name. No name. Long names. Errors for bad
names. That stuff.
"OK"
"If it creates the user OK then we'll be fine."
#esconf | @eviltester 31
We just learned:
• stakeholder management
• needs and requirement analysis
• acceptance condition creation
• risk based testing
• test scope restriction
#esconf | @eviltester 32
Why didn't I ask
"Why do you want me
to test this?"
#esconf | @eviltester 33
Why? is a belief chain
question
#esconf | @eviltester 34
Why do you want me to test this?
• because its your job
• because I don' t want to test it
• because testing sucks
• because I want proof that it works
• because I don't want the user finding any problems
#esconf | @eviltester 35
That might be useful
• we find out the organisation dynamics
• we can 'educate' that testing does not 'prove that it works'
• we could test from a user perspective
#esconf | @eviltester 36
The temptation with "Why?" is to
chain "Why?"
• why is it my job?
• why don't you want to test it?
• why don't you want the user to find problems?
Unproductive path / conflict.
#esconf | @eviltester 37
But I care less about what they
believe
I care more about meeting their needs
• What?
• How?
• When?
• Where?
#esconf | @eviltester 38
What do I do next?
#esconf | @eviltester 39
Let me plan this out a bit
• No Name - ""
• Good Name - "Bob The Author"
• Bad Name ? "Mr 123"
#esconf | @eviltester 40
I can see there some validation
when I just hit save
What are the validation rules? I should check those.
#esconf | @eviltester 41
#esconf | @eviltester 42
Is that what it is supposed to do?
• How do I know what it is supposed to do?
• How do I know that is the correct message?
• Do I just decide if this works, or are there designs?
• Should it be consistent?
• "Create" -> "Added"
#esconf | @eviltester 43
We just discovered
• A need for a reference standard (oracle)
• conformance to standard
• requirements testing
• acceptance condition validation
• The need for exploration: planning, learning, revisiting plan
• Consistency Heuristic
#esconf | @eviltester 44
How do I tell people what I have
done?
• Better keep some notes to tell people what I've done.
• I need to keep track of new things I want to do e.g.
validation rules
• I better keep track of the unanswered questions and
concerns I have
• How do people do that?
#esconf | @eviltester 45
We just discovered
• Exploratory Testing
• Test Planning
• Test Tools
• Test Reporting
#esconf | @eviltester 46
It said it added it, but did it? How
can I see it was added?
#esconf | @eviltester 47
Can I trust that?
• How is the data stored?
• What data is stored?
• When is the data stored?
• Where is the data stored?
• How can I see the stored data?
#esconf | @eviltester 48
We just discovered
• A Testing Attitude Characteristic
• Doubt
• A Fundamental Testing Technique
• Questioning
• Create/Read flow
#esconf | @eviltester 49
Then someone
answers our
questions
And our world explodes with
detail
#esconf | @eviltester 50
Uhmm, OK
"The validation rules are controlled by HTML using HTML5
required and pattern attributes. When the [Create] button is
pressed an HTTP POST request is made to the server with the form
details x-www-form-urlencoded. The author is stored in memory
with an automatically generated id."
#esconf | @eviltester 51
Maybe a diagram would help?
#esconf | @eviltester 52
Now I have to learn about
• HTML, HTML5
• required
• pattern
• HTTP
• POST
• form, form encoding
#esconf | @eviltester 53
And how do I 'see' the HTML?
#esconf | @eviltester 54
OMG I can change it too
#esconf | @eviltester 55
What if I change the form so there
is no validation?
Then the server side validation should catch that.
#esconf | @eviltester 56
So now I have to test the server
side validation as well?
"That will take quite a lot of time amending the form each
time."
"Test it at the HTTP level then"
"How?"
"Use an HTTP Debug Proxy."
"A Wha?"
#esconf | @eviltester 57
An HTTP Debug Proxy
#esconf | @eviltester 58
What Questions Did I Ask?
• How does this work?
• What does this do?
• How can I see that? How can I make that happen?
• What should it do?
• When should it do that?
• Where should I see that?
#esconf | @eviltester 59
How?
Not Why?
#esconf | @eviltester 60
What is Hard About This?
Why do people find this tough?
• don't like to be seen as 'not knowing' something
• don't like to say "I don't know"
#esconf | @eviltester 61
Let's see, what could we be?
• Scientist
• Skeptic
• Believer
• Seeker
#esconf | @eviltester 62
Ken Campbell
"Seeker!"
#esconf | @eviltester 63
Robert Anton Wilson said...
“Belief is the death of intelligence. As soon as one believes a
doctrine of any sort, or assumes certitude, one stops thinking
about that aspect of existence.”
Robert Anton Wilson, Cosmic Trigger
#esconf | @eviltester 64
Top Three Trouble-free Tactics To
Tough Talk
• Knowing nothing about something is good
• You don't know nothing about it, what you know about it is
nothing
• Ask questions when you do know stuff
#esconf | @eviltester 65
I know nothing about
• Kardashians
• Love Island
• Big Brother
That is good.
#esconf | @eviltester 66
You don't know nothing about it
What you know about it, you describe as
'nothing'
• You ask questions to see if that description fits
• You try to expand your model
• You try to invalidate parts of your model
Same as normal
#esconf | @eviltester 67
As a Manager
I ask questions when I do know stuff because:
• I know other people in the room don't know
• I know people have different understandings
• It gives the speaker a chance to show their knowledge
#esconf | @eviltester 68
Asking questions is
good
#esconf | @eviltester 69
The Tester!
#esconf | @eviltester 70
Asking Questions is
Good
#esconf | @eviltester 71
End Credits
• www.eviltester.com
• @eviltester
• www.youtube.com/user/EviltesterVideos
• www.compendiumdev.co.uk
• uk.linkedin.com/in/eviltester
#esconf | @eviltester 72
Follow
• Linkedin - @eviltester
• Twitter - @eviltester
• Instagram - @eviltester
• Facebook - @eviltester
• Youtube - EvilTesterVideos
• Pinterest - @eviltester
#esconf | @eviltester 73
BIO
Alan is a test consultant who enjoys testing at a technical level
using techniques from psychotherapy and computer science.
In his spare time Alan is currently programming a multi-user
text adventure game and some buggy JavaScript games in the
style of the Cascade Cassette 50. Alan is the author of the
books "Dear Evil Tester", "Java For Testers" and "Automating
and Testing a REST API".
#esconf | @eviltester 74
Visit EvilTester.com
Alan's main website is compendiumdev.co.uk and he blogs at
blog.eviltester.com
#esconf | @eviltester 75

More Related Content

More from Alan Richardson

Joy of Coding Conference 2019 slides - Alan Richardson
Joy of Coding Conference 2019 slides - Alan RichardsonJoy of Coding Conference 2019 slides - Alan Richardson
Joy of Coding Conference 2019 slides - Alan RichardsonAlan Richardson
 
Programming katas for Software Testers - CounterStrings
Programming katas for Software Testers - CounterStringsProgramming katas for Software Testers - CounterStrings
Programming katas for Software Testers - CounterStringsAlan Richardson
 
Technology Based Testing
Technology Based TestingTechnology Based Testing
Technology Based TestingAlan Richardson
 
About Consultant Alan Richardson Compendium Developments Evil Tester
About Consultant Alan Richardson Compendium Developments Evil TesterAbout Consultant Alan Richardson Compendium Developments Evil Tester
About Consultant Alan Richardson Compendium Developments Evil TesterAlan Richardson
 
Automating and Testing a REST API
Automating and Testing a REST APIAutomating and Testing a REST API
Automating and Testing a REST APIAlan Richardson
 
Technical and Testing Challenges: Using the "Protect The Square" Game
Technical and Testing Challenges: Using the "Protect The Square" GameTechnical and Testing Challenges: Using the "Protect The Square" Game
Technical and Testing Challenges: Using the "Protect The Square" GameAlan Richardson
 
TDD - Test Driven Development - Java JUnit FizzBuzz
TDD - Test Driven Development - Java JUnit FizzBuzzTDD - Test Driven Development - Java JUnit FizzBuzz
TDD - Test Driven Development - Java JUnit FizzBuzzAlan Richardson
 
If you want to automate, you learn to code
If you want to automate, you learn to codeIf you want to automate, you learn to code
If you want to automate, you learn to codeAlan Richardson
 
How To Test With Agility
How To Test With AgilityHow To Test With Agility
How To Test With AgilityAlan Richardson
 
Your Automated Execution Does Not Have to be Flaky
Your Automated Execution Does Not Have to be FlakyYour Automated Execution Does Not Have to be Flaky
Your Automated Execution Does Not Have to be FlakyAlan Richardson
 
What is Testability vs Automatability? How to improve your Software Testing.
What is Testability vs Automatability? How to improve your Software Testing.What is Testability vs Automatability? How to improve your Software Testing.
What is Testability vs Automatability? How to improve your Software Testing.Alan Richardson
 
What is Agile Testing? A MindMap
What is Agile Testing? A MindMapWhat is Agile Testing? A MindMap
What is Agile Testing? A MindMapAlan Richardson
 
Evil Tester's Guide to Agile Testing
Evil Tester's Guide to Agile TestingEvil Tester's Guide to Agile Testing
Evil Tester's Guide to Agile TestingAlan Richardson
 
The Evil Tester Show - Episode 001 Halloween 2017
The Evil Tester Show - Episode 001 Halloween 2017The Evil Tester Show - Episode 001 Halloween 2017
The Evil Tester Show - Episode 001 Halloween 2017Alan Richardson
 
What is Regression Testing?
What is Regression Testing?What is Regression Testing?
What is Regression Testing?Alan Richardson
 
Effective Software Testing for Modern Software Development
Effective Software Testing for Modern Software DevelopmentEffective Software Testing for Modern Software Development
Effective Software Testing for Modern Software DevelopmentAlan Richardson
 
Simple ways to add and work with a `.jar` file in your local maven setup
Simple ways to add and work with a `.jar` file in your local maven setupSimple ways to add and work with a `.jar` file in your local maven setup
Simple ways to add and work with a `.jar` file in your local maven setupAlan Richardson
 
Re-thinking Test Automation and Test Process Modelling (in pictures)
Re-thinking Test Automation and Test Process Modelling (in pictures)Re-thinking Test Automation and Test Process Modelling (in pictures)
Re-thinking Test Automation and Test Process Modelling (in pictures)Alan Richardson
 
Automating Strategically or Tactically when Testing
Automating Strategically or Tactically when TestingAutomating Strategically or Tactically when Testing
Automating Strategically or Tactically when TestingAlan Richardson
 

More from Alan Richardson (20)

Joy of Coding Conference 2019 slides - Alan Richardson
Joy of Coding Conference 2019 slides - Alan RichardsonJoy of Coding Conference 2019 slides - Alan Richardson
Joy of Coding Conference 2019 slides - Alan Richardson
 
Programming katas for Software Testers - CounterStrings
Programming katas for Software Testers - CounterStringsProgramming katas for Software Testers - CounterStrings
Programming katas for Software Testers - CounterStrings
 
Technology Based Testing
Technology Based TestingTechnology Based Testing
Technology Based Testing
 
About Consultant Alan Richardson Compendium Developments Evil Tester
About Consultant Alan Richardson Compendium Developments Evil TesterAbout Consultant Alan Richardson Compendium Developments Evil Tester
About Consultant Alan Richardson Compendium Developments Evil Tester
 
Shift left-testing
Shift left-testingShift left-testing
Shift left-testing
 
Automating and Testing a REST API
Automating and Testing a REST APIAutomating and Testing a REST API
Automating and Testing a REST API
 
Technical and Testing Challenges: Using the "Protect The Square" Game
Technical and Testing Challenges: Using the "Protect The Square" GameTechnical and Testing Challenges: Using the "Protect The Square" Game
Technical and Testing Challenges: Using the "Protect The Square" Game
 
TDD - Test Driven Development - Java JUnit FizzBuzz
TDD - Test Driven Development - Java JUnit FizzBuzzTDD - Test Driven Development - Java JUnit FizzBuzz
TDD - Test Driven Development - Java JUnit FizzBuzz
 
If you want to automate, you learn to code
If you want to automate, you learn to codeIf you want to automate, you learn to code
If you want to automate, you learn to code
 
How To Test With Agility
How To Test With AgilityHow To Test With Agility
How To Test With Agility
 
Your Automated Execution Does Not Have to be Flaky
Your Automated Execution Does Not Have to be FlakyYour Automated Execution Does Not Have to be Flaky
Your Automated Execution Does Not Have to be Flaky
 
What is Testability vs Automatability? How to improve your Software Testing.
What is Testability vs Automatability? How to improve your Software Testing.What is Testability vs Automatability? How to improve your Software Testing.
What is Testability vs Automatability? How to improve your Software Testing.
 
What is Agile Testing? A MindMap
What is Agile Testing? A MindMapWhat is Agile Testing? A MindMap
What is Agile Testing? A MindMap
 
Evil Tester's Guide to Agile Testing
Evil Tester's Guide to Agile TestingEvil Tester's Guide to Agile Testing
Evil Tester's Guide to Agile Testing
 
The Evil Tester Show - Episode 001 Halloween 2017
The Evil Tester Show - Episode 001 Halloween 2017The Evil Tester Show - Episode 001 Halloween 2017
The Evil Tester Show - Episode 001 Halloween 2017
 
What is Regression Testing?
What is Regression Testing?What is Regression Testing?
What is Regression Testing?
 
Effective Software Testing for Modern Software Development
Effective Software Testing for Modern Software DevelopmentEffective Software Testing for Modern Software Development
Effective Software Testing for Modern Software Development
 
Simple ways to add and work with a `.jar` file in your local maven setup
Simple ways to add and work with a `.jar` file in your local maven setupSimple ways to add and work with a `.jar` file in your local maven setup
Simple ways to add and work with a `.jar` file in your local maven setup
 
Re-thinking Test Automation and Test Process Modelling (in pictures)
Re-thinking Test Automation and Test Process Modelling (in pictures)Re-thinking Test Automation and Test Process Modelling (in pictures)
Re-thinking Test Automation and Test Process Modelling (in pictures)
 
Automating Strategically or Tactically when Testing
Automating Strategically or Tactically when TestingAutomating Strategically or Tactically when Testing
Automating Strategically or Tactically when Testing
 

Recently uploaded

The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxnada99848
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 

Recently uploaded (20)

The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptx
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 

"Exploring Testing from First Principles" Eurostar 2018 Keynote Alan Richardson EvilTester

  • 4. We over-complicate testing • Have you seen some of the definitions? • Have you tried to write your own definition? #esconf | @eviltester 4
  • 5. Otherwise • it might appear too simple • it might appear easy #esconf | @eviltester 5
  • 6. And if its too easy and simple • it might be undervalued • only junior staff get to do it • we might get paid less #esconf | @eviltester 6
  • 8. Software Testing is a process whereby we use a software system deployed in multiple configurations, via its GUI, API - and all exposed interfaces - to gather information about its behaviour, flaws and impact on the user and stakeholder needs and requirements; for the purpose of evaluating the quality, and fitness for purpose, in specific operational environments and conditions. A possible first draft definition #esconf | @eviltester 8
  • 9. But we wouldn't stop there • refine our definition • simplify, chunk up • delete sections • change it over time • communicate it differently for different people But that's a communication. It isn't what testing 'is'. #esconf | @eviltester 9
  • 10. Danger - over-complicate • How do other fields define themselves? e.g. complicated fields like Physics? #esconf | @eviltester 10
  • 11. I should consult a dictionary or something. #esconf | @eviltester 11
  • 12. What is Physics? "the branch of science concerned with the nature and properties of matter and energy." Google Dictionary Definition #esconf | @eviltester 12
  • 13. What is Physics? #esconf | @eviltester 13
  • 14. What about Rocket Science? #esconf | @eviltester 14
  • 15. What is Rocket Science #esconf | @eviltester 15
  • 16. Google Dictionary: What is Software Testing? "No definitions found. Search the web." #esconf | @eviltester 16
  • 17. We have no choice We have to make this up for ourselves. #esconf | @eviltester 17
  • 18. What is more important? Imagineedfusticating? or Working with a good Imagineedfusticator? #esconf | @eviltester 18
  • 19. Imagineedfusticating "The art of getting exactly what you need when you need it" Definition from "The Associated Society of Imagineedfusticators for Advanced Imagineedfustication" #esconf | @eviltester 19
  • 20. An Example Assume we know nothing about software testing. "No definitions found. Search the web." #esconf | @eviltester 20
  • 21. How would we work from first principles? #esconf | @eviltester 21
  • 22. Let's use a worked example #esconf | @eviltester 22
  • 23. I've been tasked with testing this #esconf | @eviltester 23
  • 24. I don't want anyone to know that I don't know how to test it, so I nod and then try to figure out what does software testing mean. So I look for definitions but we've seen how that turned out. So I go ask google "What is Software Testing" #esconf | @eviltester 24
  • 25. What is Software Testing? Software testing is the process of executing a program or application with the intent of finding bugs in the software. It can also be described as the validation and verification of a software program or application or product or system. not text from a website that has high rankings for this web search #esconf | @eviltester 25
  • 26. Validation & Verification • verification - noun “The process of establishing the truth, accuracy, or validity of something.” • validation - noun - “The action of checking or proving the validity or accuracy of something.” OK, so both are about validity, accuracy, proving and truth. Those words seem pretty similar, why would I do both? #esconf | @eviltester 26
  • 27. OK, I'll forget that. #esconf | @eviltester 27
  • 28. What have I learned? Software Testing is doing stuff to something to find out stuff like: • find bugs, • find things that are wrong, • find stuff that is right Warning: Be careful of certitude and absolutes. #esconf | @eviltester 28
  • 29. Too much theory I have a job to do #esconf | @eviltester 29
  • 30. What did they mean when they tasked me with "testing" this. • find bugs? • how will I know its a bug? • anything specific you want me to test it 'for'? • what do you want to 'do' with what I tell you? • is testing the input to something else? "What do you mean?" #esconf | @eviltester 30
  • 31. OK... focus on the create author function and make sure it handles a range of input values "What values?" You know. Good name. No name. Long names. Errors for bad names. That stuff. "OK" "If it creates the user OK then we'll be fine." #esconf | @eviltester 31
  • 32. We just learned: • stakeholder management • needs and requirement analysis • acceptance condition creation • risk based testing • test scope restriction #esconf | @eviltester 32
  • 33. Why didn't I ask "Why do you want me to test this?" #esconf | @eviltester 33
  • 34. Why? is a belief chain question #esconf | @eviltester 34
  • 35. Why do you want me to test this? • because its your job • because I don' t want to test it • because testing sucks • because I want proof that it works • because I don't want the user finding any problems #esconf | @eviltester 35
  • 36. That might be useful • we find out the organisation dynamics • we can 'educate' that testing does not 'prove that it works' • we could test from a user perspective #esconf | @eviltester 36
  • 37. The temptation with "Why?" is to chain "Why?" • why is it my job? • why don't you want to test it? • why don't you want the user to find problems? Unproductive path / conflict. #esconf | @eviltester 37
  • 38. But I care less about what they believe I care more about meeting their needs • What? • How? • When? • Where? #esconf | @eviltester 38
  • 39. What do I do next? #esconf | @eviltester 39
  • 40. Let me plan this out a bit • No Name - "" • Good Name - "Bob The Author" • Bad Name ? "Mr 123" #esconf | @eviltester 40
  • 41. I can see there some validation when I just hit save What are the validation rules? I should check those. #esconf | @eviltester 41
  • 43. Is that what it is supposed to do? • How do I know what it is supposed to do? • How do I know that is the correct message? • Do I just decide if this works, or are there designs? • Should it be consistent? • "Create" -> "Added" #esconf | @eviltester 43
  • 44. We just discovered • A need for a reference standard (oracle) • conformance to standard • requirements testing • acceptance condition validation • The need for exploration: planning, learning, revisiting plan • Consistency Heuristic #esconf | @eviltester 44
  • 45. How do I tell people what I have done? • Better keep some notes to tell people what I've done. • I need to keep track of new things I want to do e.g. validation rules • I better keep track of the unanswered questions and concerns I have • How do people do that? #esconf | @eviltester 45
  • 46. We just discovered • Exploratory Testing • Test Planning • Test Tools • Test Reporting #esconf | @eviltester 46
  • 47. It said it added it, but did it? How can I see it was added? #esconf | @eviltester 47
  • 48. Can I trust that? • How is the data stored? • What data is stored? • When is the data stored? • Where is the data stored? • How can I see the stored data? #esconf | @eviltester 48
  • 49. We just discovered • A Testing Attitude Characteristic • Doubt • A Fundamental Testing Technique • Questioning • Create/Read flow #esconf | @eviltester 49
  • 50. Then someone answers our questions And our world explodes with detail #esconf | @eviltester 50
  • 51. Uhmm, OK "The validation rules are controlled by HTML using HTML5 required and pattern attributes. When the [Create] button is pressed an HTTP POST request is made to the server with the form details x-www-form-urlencoded. The author is stored in memory with an automatically generated id." #esconf | @eviltester 51
  • 52. Maybe a diagram would help? #esconf | @eviltester 52
  • 53. Now I have to learn about • HTML, HTML5 • required • pattern • HTTP • POST • form, form encoding #esconf | @eviltester 53
  • 54. And how do I 'see' the HTML? #esconf | @eviltester 54
  • 55. OMG I can change it too #esconf | @eviltester 55
  • 56. What if I change the form so there is no validation? Then the server side validation should catch that. #esconf | @eviltester 56
  • 57. So now I have to test the server side validation as well? "That will take quite a lot of time amending the form each time." "Test it at the HTTP level then" "How?" "Use an HTTP Debug Proxy." "A Wha?" #esconf | @eviltester 57
  • 58. An HTTP Debug Proxy #esconf | @eviltester 58
  • 59. What Questions Did I Ask? • How does this work? • What does this do? • How can I see that? How can I make that happen? • What should it do? • When should it do that? • Where should I see that? #esconf | @eviltester 59
  • 60. How? Not Why? #esconf | @eviltester 60
  • 61. What is Hard About This? Why do people find this tough? • don't like to be seen as 'not knowing' something • don't like to say "I don't know" #esconf | @eviltester 61
  • 62. Let's see, what could we be? • Scientist • Skeptic • Believer • Seeker #esconf | @eviltester 62
  • 64. Robert Anton Wilson said... “Belief is the death of intelligence. As soon as one believes a doctrine of any sort, or assumes certitude, one stops thinking about that aspect of existence.” Robert Anton Wilson, Cosmic Trigger #esconf | @eviltester 64
  • 65. Top Three Trouble-free Tactics To Tough Talk • Knowing nothing about something is good • You don't know nothing about it, what you know about it is nothing • Ask questions when you do know stuff #esconf | @eviltester 65
  • 66. I know nothing about • Kardashians • Love Island • Big Brother That is good. #esconf | @eviltester 66
  • 67. You don't know nothing about it What you know about it, you describe as 'nothing' • You ask questions to see if that description fits • You try to expand your model • You try to invalidate parts of your model Same as normal #esconf | @eviltester 67
  • 68. As a Manager I ask questions when I do know stuff because: • I know other people in the room don't know • I know people have different understandings • It gives the speaker a chance to show their knowledge #esconf | @eviltester 68
  • 70. The Tester! #esconf | @eviltester 70
  • 72. End Credits • www.eviltester.com • @eviltester • www.youtube.com/user/EviltesterVideos • www.compendiumdev.co.uk • uk.linkedin.com/in/eviltester #esconf | @eviltester 72
  • 73. Follow • Linkedin - @eviltester • Twitter - @eviltester • Instagram - @eviltester • Facebook - @eviltester • Youtube - EvilTesterVideos • Pinterest - @eviltester #esconf | @eviltester 73
  • 74. BIO Alan is a test consultant who enjoys testing at a technical level using techniques from psychotherapy and computer science. In his spare time Alan is currently programming a multi-user text adventure game and some buggy JavaScript games in the style of the Cascade Cassette 50. Alan is the author of the books "Dear Evil Tester", "Java For Testers" and "Automating and Testing a REST API". #esconf | @eviltester 74
  • 75. Visit EvilTester.com Alan's main website is compendiumdev.co.uk and he blogs at blog.eviltester.com #esconf | @eviltester 75