SlideShare a Scribd company logo
1 of 54
Download to read offline
Noah Sussman and Joanna Burgess! ! CAST NYC, August 11, 2014
Continuous Automated Testing:
A Communication System That Scales!
Jared Tarbell, Substrate
Continuous AutomatedTesting (C.A.T.)
Schedule
✤ 9:00-10:30: CAT!
✤ 10:30-10:50: Break !
✤ 10:50-12:30: CAT!
✤ 12:30-1:30: Lunch!
✤ 1:30-3:00: CAT!
✤ 3:00-3:30: Snack!
✤ 3:30-5:00: CAT
Load it Up
!
✤ Jenkins http://jenkins-ci.org/ !
✤ Golly http://golly.sourceforge.net/
“When I use a word it means just what I
choose it to mean-neither more nor less.”
What does QA mean to you?
Safetyisnotaboutthebreakageor
lackofqualityofsinglecomponents.
Managingqualityisaboutsingle
components,aboutseeinghowthey
meetparticularspecifications.
!
—SidneyDekker
Guy Sie on Flickr
In other words…when are we, and when aren’t we
speaking the same language? !
More to the point…how much does it matter?
Rolling the Dice
ContestedTerminology
✤ Quality Assurance!
✤ Testing!
✤ Manual Testing !
✤ Bugs!
✤ Accountability!
✤ QA Environment !
4REALZ:“When I use a word it means
just what I choose it to mean” (ymmv)
✤ Like Humpty Dumpty, I am
using contested terminology
to support my own
viewpoints!
✤ When I use a word, it means
what I intend it to mean!
✤ If you are unsure what I mean,
raise your hand!!!
ETTO
✤ Efficiency-to-thoroughness-trade-offs (ETTO)!
✤ We do necessarily not pick the best option, we pick
the option that best satisfies our immediate needs
namely:!
✤ efficiency!
✤ thoroughness
AutomatedTests Are…
✤ Part of the software design process
✤ Runnable documentation
✤ NOT useful for debugging releases
✤ NOT useful for catching bugs in code
Tractable Systems
A system is tractable if the principles of the functioning
are known and have simple descriptions with few details.
Tractable systems do not change while being described.!
!
Intractable Systems
Intractable systems are complex systems. A defining
feature of intractable systems is that they are unsafe
and defy documentation.
DefiningTerminology
✤ Abstraction!
✤ Orders of Magnitude Growth !
✤ Cellular Automaton!
✤ Finite Automaton!
✤ Halting Problem !
✤ CAP Theorem !
✤ Acyclic Directed Graphs !
✤ Path reduction
Core Concepts
✤ Ironies of automation !
✤ Hawthorne Effects!
✤ Goodhart’s Law!
✤ Diseconomies of scale
Such dev.Very ops.Wow.
Autonomy Mastery & Purpose
devops: where is the QA?
✤ STOP ASKING ME where QA fits into devops.!
✤ ROFLMAO if QA and testing aren’t ALREADY part of dev for
you!!
✤ The idea that QA is distinct from development is a convenient
fiction.!
✤ QA and testing have always been software engineering disciplines.
Sufficiently Advanced Monitoring is
Indistinguishable fromTesting
✤ A Google engineer proposed this idea in 2007.!
✤ Nothing much has changed since then.!
✤ Sufficiently advanced technology is indistinguishable from
magic. —Arthur C. Clarke!
✤ Sufficiently advanced technology is indistinguishable from a
rigged demo. —Silicon Valley aphorism
Monitoring vs.Testing
✤ Yes you should monitor all the things.!
✤ Yes you should build real time dashboards.!
✤ Yes you should deploy continuously.!
✤ Yes you should fix production bugs on the fly.!
✤ No, none of the above replaces QA and testing.!
✤ Really, no.
QA andTesting are part of the
software design process
✤ Monitoring has nothing to do with design.!
✤ Monitoring provides visibility into implementation.!
✤ QA and testing address design flaws.!
✤ That is, QA and testing are design tools.
Each Necessary but Only Jointly Sufficient
✤ Monitoring is part of the picture of overall system
safety
✤ QA and testing are part of the picture of overall
system safety
✤ Manual and automated testing — part of the overall
picture
✤ Developers following standards — part of the picture
✤ People cooperating — part of the picture
✤ The system safety picture is intrinsically incomplete!
Limiting Risk
Nancy Leveson on Limiting Risk:!
!
✤ Oversight!
!
✤ Limit complexity!
!
✤ Systems thinking
Applythebestsoftware
engineeringprinciples…
qualityassurance,testing…
thehigheststandards.
It'snotgoingtobeenough.
—NancyLeveson
Guy Sie on Flickr
Law of Leaky Abstractions
“…tools which pretend to abstract out something, like all
abstractions, leak, and the only way to deal with the leaks
competently is to learn about how the abstractions work
and what they are abstracting. So the abstractions save us
time working, but they don't save us time learning.”
!
—Joel Spolsky
Failure is Scary But Also Inevitable
Everyone—even cats—must deal with failure.
Leaky Abstractions in Software
✤ How does this relate to QA?
✤ in the new view of systems safety, safety is
derived from being able to predict the
behavior of the system.
✤ Since abstractions leak, no general abstraction
can ever provide granular insight into system
behavior.
The Mechanistic Fallacy:
A Leaky Abstraction PushedToo Far
✤ Systems Thinking!
✤ Normal Failure!
✤ ETTO (Efficiency to Thoroughness Tradeoff)!
✤ Intractable Systems!
✤ The New View of system safety
Complex Systems are Intractable
—Erik Hollnagel
“You can take a bicycle apart and put it back together…
you cannot do that with a frog.” —Liz Keogh
Bicycle vs. Frog
How is a Software System Like a Frog?
✤ It’s a running system.!
✤ It’s changing all the time.!
✤ Conceptually can’t be
decomposed into discrete
components.!
✤ A frog is intractable.
Powers ofTen
Let’s compare a bicycle to the universe
✤ How complex is a bicycle?
Bicycles and universes are not on
the same scale of complexity
✤ About 30 parts ~ 1/30 = 0.03
✤ How many components does a program have?!
✤ Consider the range of computational “parts” that exist
between 1 microsecond and a half hour of
computational time [Edsger Dijkstra]!
✤ 0.001 / 1800 = 5.55-7!
✤ Notice how there’s an exponent this time?
Now let’s compare a the universe to
a computer program
Computers and universes are on the
same scale of complexity
What does n-7 levels of
hierarchy look like?
The Pesticide Paradox
and the Complexity Barrier
“Every method you use to prevent or find bugs leaves a
residue of subtler bugs against which those methods are
ineffectual.”!
“Software complexity (and therefore that of bugs) grows
to the limits of our ability to manage that complexity.”!
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! —Boris Beizer
The Pesticide Paradox
✤ Roaches have decided to terraform your apartment to suit
their needs. Bug terminator summoned; pesticides released. !
✤ Dead roaches. Problem solved or another problem created? !
✤ An unintended consequence: the more efficient the pesticide
is the greater the chance that the genes for pesticide resistance
will dominate the gene pool going forward. !
✤ This killing “all the bugs” actually results, over the long term,
in large generations of bugs that will not be so easy to kill.
The Complexity Barrier
✤ There is an upper limit to how much complexity the
human brain can handle. !
✤ Simplifying an existing system is a very difficult
problem.!
✤ There are no general solutions for simplification of
systems.
!
!
!
✤ Simplicity and design are equally important
until you have to pick one; then pick simplicity. !
!
✤ Modern business practices assume that there is
no functional upper limit on system complexity. !
!
MIT vs. New Jersey!
a.k.a “worse is better”
Want to Reduce Cost?
Communicate!
Conway’s Game of Life
1. Survivals. Every counter with two or three neighboring counters
survives for the next generation.
2. Deaths. Each counter with four or more neighbors dies (is removed)
from overpopulation. Every counter with one neighbor or none dies
from isolation.
3. Births. Each empty cell adjacent to exactly three neighbors--no more,
no fewer--is a birth cell. A counter is placed on it at the next move.
Delightfully Simple Rules
! ! -Martin Gardner
In real systems the rules aren’t as delightfully simple.
Jonathan Borofsky, Counting 1 to 3227146, 1969/1976!
Jenkins lab (frequently-running job)
1. We will need test data. So we will create two jobs: a frequently running job and a
long running job!
2. Set up a Jenkins instance (download the installer from jenkinsci.org)!
3. Go to http://localhost: 8080/!
4. Click “new item”!
5. Type a name for your frequently-running project!
6. Click “build a freestyle software project” and click “OK”!
7. Create a new build step and type the code for your frequently running project !
8. Schedule the job to run once a minute (using the Cron syntax as described in the
inline help)
Jenkins User Conference New York, May 17 2012 #jenkinsconf
A Review of My Previously Published
Approach to Jenkins API Automation
Jenkins User Conference New York, May 17 2012 #jenkinsconf
The Jenkins JSON API
To read the documentation, go to
http://ci.example.com/api
You can append /api/json to the end of
nearly any Jenkins URL to get JSON data.
http://ci.example.com/api/json for latest
builds
http://ci.example.com/job/unit-tests/api/
json for history of a specific build.
http://ci.example.com/computer/api/json
for slave information.
Jenkins User Conference New York, May 17 2012 #jenkinsconf
Using depth= to get more granular data
If the API response doesn't contain some
data that you expected, try appending ?
depth=1 to the URL.
If you still don't get what you want, increase
the integer value.
Usually you'll keep getting more data up
until around ?depth=5
Exactly what and how much data you'll get
is dependent on the configuration of your
Jenkins instance.
Jenkins User Conference New York, May 17 2012 #jenkinsconf
Drawbacks of using depth=
Depending on how deep you go into the
API response, you can wind up with a lot of
data.
Such large responses can be expensive to
download.
In some cases you can request a response
so large that you will wind up DDoSing
Jenkins!
Jenkins User Conference New York, May 17 2012 #jenkinsconf
Using tree= to filter the API response
The tree= URL parameter is like a SQL query.
Use depth= to look at the wealth of
information available.
Then use tree= to select only the information
you actually need.
This can dramatically reduce the size of your
API responses.
Jenkins User Conference New York, May 17 2012 #jenkinsconf
Jenkins User Conference New York, May 17 2012 #jenkinsconf
?tree=busyExecutors
Jenkins User Conference New York, May 17 2012 #jenkinsconf
?tree=computer[displayName]
Suggested Reading
✤ Drive: The Surprising Truth About What Motivates Us by Dan Pink with RSAnimate https://www.youtube.com/watch?v=u6XAPnuFjJc!
✤ Ironies of Automation by Lisanne Bainbridge http://www.ise.ncsu.edu/nsf_itr/794B/papers/Bainbridge_1983_Automatica.pdf!
✤ Big Ball of Mud by Brian Foote and Joseph Yoder http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.316.433&rep=rep1&type=pdf!
✤ The Rise of Worse is Better by Richard Gabriel http://www.jwz.org/doc/worse-is-better.html!
✤ Worse is Better by Richard Gabriel http://dreamsongs.com/worseisbetter.html!
✤ To Err is Human: ETTO Principle by Erik Hollnagel http://www.namahn.com/we-share/interviews/erik-hollnagel-err-human-etto-principle!
✤ The Law of Leaky Abstractions by Joel Spolsky http://www.joelonsoftware.com/articles/LeakyAbstractions.html!
✤ Designers and Women in Open Source by Vitorio Miliano http://old.vi.to/designers-and-women-in-open-source.html!
✤ The fantastic combinations of John Conway’s new solitaire game “life” by Martin Gardner http://www.ibiblio.org/lifepatterns/october1970.html!
Books!
✤ The Field Guide to Understanding Human Error by Sidney Dekker http://amzn.to/1mdwNdU!
✤ How Google Tests Software by James Whittaker http://amzn.to/XvMtUl!
✤ Software Testing Techniques (2nd edition) by Boris Beizer http://amzn.to/YqtevB!
✤ The Timeless Way of Building by Christopher Alexander http://amzn.to/1tgW3UJ!

More Related Content

What's hot

Bits of Evidence
Bits of EvidenceBits of Evidence
Bits of EvidenceGreg Wilson
 
The Revolution in an Industry That Will Change The World (Test & Measurement)
The Revolution in an Industry That Will Change The World (Test & Measurement)The Revolution in an Industry That Will Change The World (Test & Measurement)
The Revolution in an Industry That Will Change The World (Test & Measurement)Initial State
 
Making sense of messy problems - Systems thinking for interaction designers
Making sense of messy problems - Systems thinking for interaction designersMaking sense of messy problems - Systems thinking for interaction designers
Making sense of messy problems - Systems thinking for interaction designersjohanna kollmann
 
Data-Driven Postmortems - SRV208 - Toronto AWS Summit
Data-Driven Postmortems - SRV208 - Toronto AWS SummitData-Driven Postmortems - SRV208 - Toronto AWS Summit
Data-Driven Postmortems - SRV208 - Toronto AWS SummitAmazon Web Services
 
CS5032 Lecture 6: Human Error 2
CS5032 Lecture 6: Human Error 2CS5032 Lecture 6: Human Error 2
CS5032 Lecture 6: Human Error 2John Rooksby
 
8 PEOPLE, 4 SERVICES, 40 COUNTRIES - Wojciech Gaca
8 PEOPLE, 4 SERVICES, 40 COUNTRIES - Wojciech Gaca8 PEOPLE, 4 SERVICES, 40 COUNTRIES - Wojciech Gaca
8 PEOPLE, 4 SERVICES, 40 COUNTRIES - Wojciech GacaUNICORNS IN TECH
 
Patterns for the People
Patterns for the PeoplePatterns for the People
Patterns for the PeopleKevlin Henney
 
AI Fables, Facts and Futures: Threat, Promise or Saviour
AI Fables, Facts and Futures: Threat, Promise or SaviourAI Fables, Facts and Futures: Threat, Promise or Saviour
AI Fables, Facts and Futures: Threat, Promise or SaviourUniversity of Hertfordshire
 
React Next Conference slides: ReactJS Worst practices
React Next Conference slides: ReactJS Worst practicesReact Next Conference slides: ReactJS Worst practices
React Next Conference slides: ReactJS Worst practicesKateryna Porshnieva
 
Fearless Mobile Research
Fearless Mobile ResearchFearless Mobile Research
Fearless Mobile ResearchCyd Harrell
 
Teaching Elephants to Dance, Burr Sutter
Teaching Elephants to Dance, Burr SutterTeaching Elephants to Dance, Burr Sutter
Teaching Elephants to Dance, Burr SutterJudy Breedlove
 
Jeff Atwood, Michael Krakovskiy "The role of catastrophic failure in software...
Jeff Atwood, Michael Krakovskiy "The role of catastrophic failure in software...Jeff Atwood, Michael Krakovskiy "The role of catastrophic failure in software...
Jeff Atwood, Michael Krakovskiy "The role of catastrophic failure in software...Fwdays
 

What's hot (13)

Bits of Evidence
Bits of EvidenceBits of Evidence
Bits of Evidence
 
The Revolution in an Industry That Will Change The World (Test & Measurement)
The Revolution in an Industry That Will Change The World (Test & Measurement)The Revolution in an Industry That Will Change The World (Test & Measurement)
The Revolution in an Industry That Will Change The World (Test & Measurement)
 
Making sense of messy problems - Systems thinking for interaction designers
Making sense of messy problems - Systems thinking for interaction designersMaking sense of messy problems - Systems thinking for interaction designers
Making sense of messy problems - Systems thinking for interaction designers
 
Itil for failers
Itil for failersItil for failers
Itil for failers
 
Data-Driven Postmortems - SRV208 - Toronto AWS Summit
Data-Driven Postmortems - SRV208 - Toronto AWS SummitData-Driven Postmortems - SRV208 - Toronto AWS Summit
Data-Driven Postmortems - SRV208 - Toronto AWS Summit
 
CS5032 Lecture 6: Human Error 2
CS5032 Lecture 6: Human Error 2CS5032 Lecture 6: Human Error 2
CS5032 Lecture 6: Human Error 2
 
8 PEOPLE, 4 SERVICES, 40 COUNTRIES - Wojciech Gaca
8 PEOPLE, 4 SERVICES, 40 COUNTRIES - Wojciech Gaca8 PEOPLE, 4 SERVICES, 40 COUNTRIES - Wojciech Gaca
8 PEOPLE, 4 SERVICES, 40 COUNTRIES - Wojciech Gaca
 
Patterns for the People
Patterns for the PeoplePatterns for the People
Patterns for the People
 
AI Fables, Facts and Futures: Threat, Promise or Saviour
AI Fables, Facts and Futures: Threat, Promise or SaviourAI Fables, Facts and Futures: Threat, Promise or Saviour
AI Fables, Facts and Futures: Threat, Promise or Saviour
 
React Next Conference slides: ReactJS Worst practices
React Next Conference slides: ReactJS Worst practicesReact Next Conference slides: ReactJS Worst practices
React Next Conference slides: ReactJS Worst practices
 
Fearless Mobile Research
Fearless Mobile ResearchFearless Mobile Research
Fearless Mobile Research
 
Teaching Elephants to Dance, Burr Sutter
Teaching Elephants to Dance, Burr SutterTeaching Elephants to Dance, Burr Sutter
Teaching Elephants to Dance, Burr Sutter
 
Jeff Atwood, Michael Krakovskiy "The role of catastrophic failure in software...
Jeff Atwood, Michael Krakovskiy "The role of catastrophic failure in software...Jeff Atwood, Michael Krakovskiy "The role of catastrophic failure in software...
Jeff Atwood, Michael Krakovskiy "The role of catastrophic failure in software...
 

Viewers also liked

The Invisible Art Of Software Testing
The Invisible Art Of Software TestingThe Invisible Art Of Software Testing
The Invisible Art Of Software TestingNoah Sussman
 
How deep are your tests?
How deep are your tests?How deep are your tests?
How deep are your tests?TSundberg
 
Easy Continuous Deployment You Can Trust (Webinar)
Easy Continuous Deployment You Can Trust (Webinar)Easy Continuous Deployment You Can Trust (Webinar)
Easy Continuous Deployment You Can Trust (Webinar)Sauce Labs
 
Software Businesses On 5 Hours A Week
Software Businesses On 5 Hours A WeekSoftware Businesses On 5 Hours A Week
Software Businesses On 5 Hours A WeekPatrick McKenzie
 
Transitioning from Traditional to Modern QA
Transitioning from Traditional to Modern QATransitioning from Traditional to Modern QA
Transitioning from Traditional to Modern QASauce Labs
 
Presentation by jayanta debnath
Presentation by jayanta debnathPresentation by jayanta debnath
Presentation by jayanta debnathPMI_IREP_TP
 
Ignite Talk: Help, we have no more time for testing!
Ignite Talk: Help, we have no more time for testing!Ignite Talk: Help, we have no more time for testing!
Ignite Talk: Help, we have no more time for testing!Dr. Alexander Schwartz
 
Design Patterns for Scalable Test Automation With Selenium & WebdriverIO
Design Patterns for Scalable Test Automation With Selenium & WebdriverIODesign Patterns for Scalable Test Automation With Selenium & WebdriverIO
Design Patterns for Scalable Test Automation With Selenium & WebdriverIOSauce Labs
 
What you can do with WordPress Heartbeat API
What you can do with WordPress Heartbeat APIWhat you can do with WordPress Heartbeat API
What you can do with WordPress Heartbeat APITabitha Chapman
 
Selenium and Appium Training from Sauce Labs
Selenium and Appium Training from Sauce LabsSelenium and Appium Training from Sauce Labs
Selenium and Appium Training from Sauce LabsSauce Labs
 
Automated Testing & Auto Scaling your Apps with Microsoft & Open Source Techn...
Automated Testing & Auto Scaling your Apps with Microsoft & Open Source Techn...Automated Testing & Auto Scaling your Apps with Microsoft & Open Source Techn...
Automated Testing & Auto Scaling your Apps with Microsoft & Open Source Techn...Pranav Ainavolu
 
Automated Unit Testing
Automated Unit TestingAutomated Unit Testing
Automated Unit TestingMike Lively
 
Fringe Accessibility: London Web Standards
Fringe Accessibility: London Web StandardsFringe Accessibility: London Web Standards
Fringe Accessibility: London Web StandardsAdrian Roselli
 
Advanced automated visual testing with Selenium
Advanced automated visual testing with SeleniumAdvanced automated visual testing with Selenium
Advanced automated visual testing with Seleniumadamcarmi
 
HBR Review: Managing Shareholder Value - From Top to Bottom
HBR Review: Managing Shareholder Value - From Top to BottomHBR Review: Managing Shareholder Value - From Top to Bottom
HBR Review: Managing Shareholder Value - From Top to BottomSarang Bhutada
 
Automation Best Practices
Automation Best PracticesAutomation Best Practices
Automation Best PracticesSauce Labs
 
Report Portal - эффективность вашей автоматизации
Report Portal - эффективность вашей автоматизацииReport Portal - эффективность вашей автоматизации
Report Portal - эффективность вашей автоматизацииSQALab
 
Selenium Based Visual Test Automation
Selenium Based Visual Test AutomationSelenium Based Visual Test Automation
Selenium Based Visual Test Automationadamcarmi
 

Viewers also liked (20)

The Invisible Art Of Software Testing
The Invisible Art Of Software TestingThe Invisible Art Of Software Testing
The Invisible Art Of Software Testing
 
Automated testing 101
Automated testing 101Automated testing 101
Automated testing 101
 
How deep are your tests?
How deep are your tests?How deep are your tests?
How deep are your tests?
 
Easy Continuous Deployment You Can Trust (Webinar)
Easy Continuous Deployment You Can Trust (Webinar)Easy Continuous Deployment You Can Trust (Webinar)
Easy Continuous Deployment You Can Trust (Webinar)
 
Dark patterns
Dark patternsDark patterns
Dark patterns
 
Software Businesses On 5 Hours A Week
Software Businesses On 5 Hours A WeekSoftware Businesses On 5 Hours A Week
Software Businesses On 5 Hours A Week
 
Transitioning from Traditional to Modern QA
Transitioning from Traditional to Modern QATransitioning from Traditional to Modern QA
Transitioning from Traditional to Modern QA
 
Presentation by jayanta debnath
Presentation by jayanta debnathPresentation by jayanta debnath
Presentation by jayanta debnath
 
Ignite Talk: Help, we have no more time for testing!
Ignite Talk: Help, we have no more time for testing!Ignite Talk: Help, we have no more time for testing!
Ignite Talk: Help, we have no more time for testing!
 
Design Patterns for Scalable Test Automation With Selenium & WebdriverIO
Design Patterns for Scalable Test Automation With Selenium & WebdriverIODesign Patterns for Scalable Test Automation With Selenium & WebdriverIO
Design Patterns for Scalable Test Automation With Selenium & WebdriverIO
 
What you can do with WordPress Heartbeat API
What you can do with WordPress Heartbeat APIWhat you can do with WordPress Heartbeat API
What you can do with WordPress Heartbeat API
 
Selenium and Appium Training from Sauce Labs
Selenium and Appium Training from Sauce LabsSelenium and Appium Training from Sauce Labs
Selenium and Appium Training from Sauce Labs
 
Automated Testing & Auto Scaling your Apps with Microsoft & Open Source Techn...
Automated Testing & Auto Scaling your Apps with Microsoft & Open Source Techn...Automated Testing & Auto Scaling your Apps with Microsoft & Open Source Techn...
Automated Testing & Auto Scaling your Apps with Microsoft & Open Source Techn...
 
Automated Unit Testing
Automated Unit TestingAutomated Unit Testing
Automated Unit Testing
 
Fringe Accessibility: London Web Standards
Fringe Accessibility: London Web StandardsFringe Accessibility: London Web Standards
Fringe Accessibility: London Web Standards
 
Advanced automated visual testing with Selenium
Advanced automated visual testing with SeleniumAdvanced automated visual testing with Selenium
Advanced automated visual testing with Selenium
 
HBR Review: Managing Shareholder Value - From Top to Bottom
HBR Review: Managing Shareholder Value - From Top to BottomHBR Review: Managing Shareholder Value - From Top to Bottom
HBR Review: Managing Shareholder Value - From Top to Bottom
 
Automation Best Practices
Automation Best PracticesAutomation Best Practices
Automation Best Practices
 
Report Portal - эффективность вашей автоматизации
Report Portal - эффективность вашей автоматизацииReport Portal - эффективность вашей автоматизации
Report Portal - эффективность вашей автоматизации
 
Selenium Based Visual Test Automation
Selenium Based Visual Test AutomationSelenium Based Visual Test Automation
Selenium Based Visual Test Automation
 

Similar to Continuous Automated Testing - Cast conference workshop august 2014

Got Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringThomas Zimmermann
 
Testing for the deeplearning folks
Testing for the deeplearning folksTesting for the deeplearning folks
Testing for the deeplearning folksVishwas N
 
Feedback loops between tooling and culture
Feedback loops between tooling and cultureFeedback loops between tooling and culture
Feedback loops between tooling and cultureChris Winters
 
The limits of unit testing by Craig Stuntz
The limits of unit testing by Craig StuntzThe limits of unit testing by Craig Stuntz
The limits of unit testing by Craig StuntzQA or the Highway
 
The Limits of Unit Testing by Craig Stuntz
The Limits of Unit Testing by Craig StuntzThe Limits of Unit Testing by Craig Stuntz
The Limits of Unit Testing by Craig StuntzQA or the Highway
 
Chaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosChaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosCharity Majors
 
Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...
Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...
Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...Alex Pinto
 
From 🤦 to 🐿️
From 🤦 to 🐿️From 🤦 to 🐿️
From 🤦 to 🐿️Ori Pekelman
 
Observability for Emerging Infra (what got you here won't get you there)
Observability for Emerging Infra (what got you here won't get you there)Observability for Emerging Infra (what got you here won't get you there)
Observability for Emerging Infra (what got you here won't get you there)Charity Majors
 
The math behind big systems analysis.
The math behind big systems analysis.The math behind big systems analysis.
The math behind big systems analysis.Theo Schlossnagle
 
Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?Thoughtworks
 
More Aim, Less Blame: How to use postmortems to turn failures into something ...
More Aim, Less Blame: How to use postmortems to turn failures into something ...More Aim, Less Blame: How to use postmortems to turn failures into something ...
More Aim, Less Blame: How to use postmortems to turn failures into something ...Daniel Kanchev
 
Working Effectively with Legacy Code
Working Effectively with Legacy CodeWorking Effectively with Legacy Code
Working Effectively with Legacy Codeslicklash
 
A Digital Conversation: The Next Web
A Digital Conversation: The Next Web A Digital Conversation: The Next Web
A Digital Conversation: The Next Web Reading Room
 
Intuition & Use-Cases of Embeddings in NLP & beyond
Intuition & Use-Cases of Embeddings in NLP & beyondIntuition & Use-Cases of Embeddings in NLP & beyond
Intuition & Use-Cases of Embeddings in NLP & beyondC4Media
 
Safety Bot Guaranteed -- Shmoocon 2017
Safety Bot Guaranteed -- Shmoocon 2017Safety Bot Guaranteed -- Shmoocon 2017
Safety Bot Guaranteed -- Shmoocon 2017Richard Seymour
 
Large Components in the Rearview Mirror
Large Components in the Rearview MirrorLarge Components in the Rearview Mirror
Large Components in the Rearview MirrorMichelle Brush
 
Green Custard Friday Talk 19: Chaos Engineering
Green Custard Friday Talk 19: Chaos EngineeringGreen Custard Friday Talk 19: Chaos Engineering
Green Custard Friday Talk 19: Chaos EngineeringGreen Custard
 

Similar to Continuous Automated Testing - Cast conference workshop august 2014 (20)

Got Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software Engineering
 
Testing for the deeplearning folks
Testing for the deeplearning folksTesting for the deeplearning folks
Testing for the deeplearning folks
 
Feedback loops between tooling and culture
Feedback loops between tooling and cultureFeedback loops between tooling and culture
Feedback loops between tooling and culture
 
The limits of unit testing by Craig Stuntz
The limits of unit testing by Craig StuntzThe limits of unit testing by Craig Stuntz
The limits of unit testing by Craig Stuntz
 
The Limits of Unit Testing by Craig Stuntz
The Limits of Unit Testing by Craig StuntzThe Limits of Unit Testing by Craig Stuntz
The Limits of Unit Testing by Craig Stuntz
 
Chaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosChaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just Chaos
 
Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...
Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...
Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...
 
From 🤦 to 🐿️
From 🤦 to 🐿️From 🤦 to 🐿️
From 🤦 to 🐿️
 
Observability for Emerging Infra (what got you here won't get you there)
Observability for Emerging Infra (what got you here won't get you there)Observability for Emerging Infra (what got you here won't get you there)
Observability for Emerging Infra (what got you here won't get you there)
 
The math behind big systems analysis.
The math behind big systems analysis.The math behind big systems analysis.
The math behind big systems analysis.
 
Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?Chaos Engineering, When should you release the monkeys?
Chaos Engineering, When should you release the monkeys?
 
2014 abic-talk
2014 abic-talk2014 abic-talk
2014 abic-talk
 
More Aim, Less Blame: How to use postmortems to turn failures into something ...
More Aim, Less Blame: How to use postmortems to turn failures into something ...More Aim, Less Blame: How to use postmortems to turn failures into something ...
More Aim, Less Blame: How to use postmortems to turn failures into something ...
 
Working Effectively with Legacy Code
Working Effectively with Legacy CodeWorking Effectively with Legacy Code
Working Effectively with Legacy Code
 
A Digital Conversation: The Next Web
A Digital Conversation: The Next Web A Digital Conversation: The Next Web
A Digital Conversation: The Next Web
 
Intuition & Use-Cases of Embeddings in NLP & beyond
Intuition & Use-Cases of Embeddings in NLP & beyondIntuition & Use-Cases of Embeddings in NLP & beyond
Intuition & Use-Cases of Embeddings in NLP & beyond
 
Safety Bot Guaranteed -- Shmoocon 2017
Safety Bot Guaranteed -- Shmoocon 2017Safety Bot Guaranteed -- Shmoocon 2017
Safety Bot Guaranteed -- Shmoocon 2017
 
Large Components in the Rearview Mirror
Large Components in the Rearview MirrorLarge Components in the Rearview Mirror
Large Components in the Rearview Mirror
 
2014 toronto-torbug
2014 toronto-torbug2014 toronto-torbug
2014 toronto-torbug
 
Green Custard Friday Talk 19: Chaos Engineering
Green Custard Friday Talk 19: Chaos EngineeringGreen Custard Friday Talk 19: Chaos Engineering
Green Custard Friday Talk 19: Chaos Engineering
 

More from Noah Sussman

JavaScript Static Analysis Tools and Techniques - STP Online Session 2013
JavaScript Static Analysis Tools and Techniques - STP Online Session 2013JavaScript Static Analysis Tools and Techniques - STP Online Session 2013
JavaScript Static Analysis Tools and Techniques - STP Online Session 2013Noah Sussman
 
Continuous Improvement (GroupOn, Palo Alto 2013)
Continuous Improvement (GroupOn, Palo Alto 2013)Continuous Improvement (GroupOn, Palo Alto 2013)
Continuous Improvement (GroupOn, Palo Alto 2013)Noah Sussman
 
Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012Noah Sussman
 
The user experience of CI systems - Penguicon 2012
The user experience of CI systems - Penguicon 2012The user experience of CI systems - Penguicon 2012
The user experience of CI systems - Penguicon 2012Noah Sussman
 
Selenium in the enterprise what went right and what went wrong so far - sel...
Selenium in the enterprise   what went right and what went wrong so far - sel...Selenium in the enterprise   what went right and what went wrong so far - sel...
Selenium in the enterprise what went right and what went wrong so far - sel...Noah Sussman
 

More from Noah Sussman (6)

JavaScript Static Analysis Tools and Techniques - STP Online Session 2013
JavaScript Static Analysis Tools and Techniques - STP Online Session 2013JavaScript Static Analysis Tools and Techniques - STP Online Session 2013
JavaScript Static Analysis Tools and Techniques - STP Online Session 2013
 
Continuous Improvement (GroupOn, Palo Alto 2013)
Continuous Improvement (GroupOn, Palo Alto 2013)Continuous Improvement (GroupOn, Palo Alto 2013)
Continuous Improvement (GroupOn, Palo Alto 2013)
 
Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012Jenkins data mining on the command line - Jenkins User Conference NYC 2012
Jenkins data mining on the command line - Jenkins User Conference NYC 2012
 
The user experience of CI systems - Penguicon 2012
The user experience of CI systems - Penguicon 2012The user experience of CI systems - Penguicon 2012
The user experience of CI systems - Penguicon 2012
 
Selenium in the enterprise what went right and what went wrong so far - sel...
Selenium in the enterprise   what went right and what went wrong so far - sel...Selenium in the enterprise   what went right and what went wrong so far - sel...
Selenium in the enterprise what went right and what went wrong so far - sel...
 
Scaling Selenium
Scaling SeleniumScaling Selenium
Scaling Selenium
 

Recently uploaded

Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
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
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
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
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
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
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 

Recently uploaded (20)

Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
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
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
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...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
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
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 

Continuous Automated Testing - Cast conference workshop august 2014

  • 1. Noah Sussman and Joanna Burgess! ! CAST NYC, August 11, 2014 Continuous Automated Testing: A Communication System That Scales! Jared Tarbell, Substrate
  • 2. Continuous AutomatedTesting (C.A.T.) Schedule ✤ 9:00-10:30: CAT! ✤ 10:30-10:50: Break ! ✤ 10:50-12:30: CAT! ✤ 12:30-1:30: Lunch! ✤ 1:30-3:00: CAT! ✤ 3:00-3:30: Snack! ✤ 3:30-5:00: CAT
  • 3. Load it Up ! ✤ Jenkins http://jenkins-ci.org/ ! ✤ Golly http://golly.sourceforge.net/
  • 4.
  • 5. “When I use a word it means just what I choose it to mean-neither more nor less.” What does QA mean to you?
  • 7. In other words…when are we, and when aren’t we speaking the same language? ! More to the point…how much does it matter? Rolling the Dice
  • 8. ContestedTerminology ✤ Quality Assurance! ✤ Testing! ✤ Manual Testing ! ✤ Bugs! ✤ Accountability! ✤ QA Environment !
  • 9. 4REALZ:“When I use a word it means just what I choose it to mean” (ymmv) ✤ Like Humpty Dumpty, I am using contested terminology to support my own viewpoints! ✤ When I use a word, it means what I intend it to mean! ✤ If you are unsure what I mean, raise your hand!!!
  • 10. ETTO ✤ Efficiency-to-thoroughness-trade-offs (ETTO)! ✤ We do necessarily not pick the best option, we pick the option that best satisfies our immediate needs namely:! ✤ efficiency! ✤ thoroughness
  • 11. AutomatedTests Are… ✤ Part of the software design process ✤ Runnable documentation ✤ NOT useful for debugging releases ✤ NOT useful for catching bugs in code
  • 12. Tractable Systems A system is tractable if the principles of the functioning are known and have simple descriptions with few details. Tractable systems do not change while being described.! !
  • 13. Intractable Systems Intractable systems are complex systems. A defining feature of intractable systems is that they are unsafe and defy documentation.
  • 14. DefiningTerminology ✤ Abstraction! ✤ Orders of Magnitude Growth ! ✤ Cellular Automaton! ✤ Finite Automaton! ✤ Halting Problem ! ✤ CAP Theorem ! ✤ Acyclic Directed Graphs ! ✤ Path reduction
  • 15. Core Concepts ✤ Ironies of automation ! ✤ Hawthorne Effects! ✤ Goodhart’s Law! ✤ Diseconomies of scale
  • 18. devops: where is the QA? ✤ STOP ASKING ME where QA fits into devops.! ✤ ROFLMAO if QA and testing aren’t ALREADY part of dev for you!! ✤ The idea that QA is distinct from development is a convenient fiction.! ✤ QA and testing have always been software engineering disciplines.
  • 19. Sufficiently Advanced Monitoring is Indistinguishable fromTesting ✤ A Google engineer proposed this idea in 2007.! ✤ Nothing much has changed since then.! ✤ Sufficiently advanced technology is indistinguishable from magic. —Arthur C. Clarke! ✤ Sufficiently advanced technology is indistinguishable from a rigged demo. —Silicon Valley aphorism
  • 20. Monitoring vs.Testing ✤ Yes you should monitor all the things.! ✤ Yes you should build real time dashboards.! ✤ Yes you should deploy continuously.! ✤ Yes you should fix production bugs on the fly.! ✤ No, none of the above replaces QA and testing.! ✤ Really, no.
  • 21. QA andTesting are part of the software design process ✤ Monitoring has nothing to do with design.! ✤ Monitoring provides visibility into implementation.! ✤ QA and testing address design flaws.! ✤ That is, QA and testing are design tools.
  • 22. Each Necessary but Only Jointly Sufficient ✤ Monitoring is part of the picture of overall system safety ✤ QA and testing are part of the picture of overall system safety ✤ Manual and automated testing — part of the overall picture ✤ Developers following standards — part of the picture ✤ People cooperating — part of the picture ✤ The system safety picture is intrinsically incomplete!
  • 23. Limiting Risk Nancy Leveson on Limiting Risk:! ! ✤ Oversight! ! ✤ Limit complexity! ! ✤ Systems thinking
  • 25. Law of Leaky Abstractions “…tools which pretend to abstract out something, like all abstractions, leak, and the only way to deal with the leaks competently is to learn about how the abstractions work and what they are abstracting. So the abstractions save us time working, but they don't save us time learning.” ! —Joel Spolsky
  • 26. Failure is Scary But Also Inevitable Everyone—even cats—must deal with failure.
  • 27. Leaky Abstractions in Software ✤ How does this relate to QA? ✤ in the new view of systems safety, safety is derived from being able to predict the behavior of the system. ✤ Since abstractions leak, no general abstraction can ever provide granular insight into system behavior.
  • 28. The Mechanistic Fallacy: A Leaky Abstraction PushedToo Far ✤ Systems Thinking! ✤ Normal Failure! ✤ ETTO (Efficiency to Thoroughness Tradeoff)! ✤ Intractable Systems! ✤ The New View of system safety
  • 29. Complex Systems are Intractable —Erik Hollnagel
  • 30. “You can take a bicycle apart and put it back together… you cannot do that with a frog.” —Liz Keogh Bicycle vs. Frog
  • 31. How is a Software System Like a Frog? ✤ It’s a running system.! ✤ It’s changing all the time.! ✤ Conceptually can’t be decomposed into discrete components.! ✤ A frog is intractable.
  • 33. Let’s compare a bicycle to the universe ✤ How complex is a bicycle?
  • 34. Bicycles and universes are not on the same scale of complexity ✤ About 30 parts ~ 1/30 = 0.03
  • 35. ✤ How many components does a program have?! ✤ Consider the range of computational “parts” that exist between 1 microsecond and a half hour of computational time [Edsger Dijkstra]! ✤ 0.001 / 1800 = 5.55-7! ✤ Notice how there’s an exponent this time? Now let’s compare a the universe to a computer program
  • 36. Computers and universes are on the same scale of complexity
  • 37. What does n-7 levels of hierarchy look like?
  • 38. The Pesticide Paradox and the Complexity Barrier “Every method you use to prevent or find bugs leaves a residue of subtler bugs against which those methods are ineffectual.”! “Software complexity (and therefore that of bugs) grows to the limits of our ability to manage that complexity.”! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! —Boris Beizer
  • 39. The Pesticide Paradox ✤ Roaches have decided to terraform your apartment to suit their needs. Bug terminator summoned; pesticides released. ! ✤ Dead roaches. Problem solved or another problem created? ! ✤ An unintended consequence: the more efficient the pesticide is the greater the chance that the genes for pesticide resistance will dominate the gene pool going forward. ! ✤ This killing “all the bugs” actually results, over the long term, in large generations of bugs that will not be so easy to kill.
  • 40. The Complexity Barrier ✤ There is an upper limit to how much complexity the human brain can handle. ! ✤ Simplifying an existing system is a very difficult problem.! ✤ There are no general solutions for simplification of systems.
  • 41. ! ! ! ✤ Simplicity and design are equally important until you have to pick one; then pick simplicity. ! ! ✤ Modern business practices assume that there is no functional upper limit on system complexity. ! ! MIT vs. New Jersey! a.k.a “worse is better”
  • 42. Want to Reduce Cost? Communicate!
  • 43. Conway’s Game of Life 1. Survivals. Every counter with two or three neighboring counters survives for the next generation. 2. Deaths. Each counter with four or more neighbors dies (is removed) from overpopulation. Every counter with one neighbor or none dies from isolation. 3. Births. Each empty cell adjacent to exactly three neighbors--no more, no fewer--is a birth cell. A counter is placed on it at the next move. Delightfully Simple Rules ! ! -Martin Gardner
  • 44. In real systems the rules aren’t as delightfully simple. Jonathan Borofsky, Counting 1 to 3227146, 1969/1976!
  • 45. Jenkins lab (frequently-running job) 1. We will need test data. So we will create two jobs: a frequently running job and a long running job! 2. Set up a Jenkins instance (download the installer from jenkinsci.org)! 3. Go to http://localhost: 8080/! 4. Click “new item”! 5. Type a name for your frequently-running project! 6. Click “build a freestyle software project” and click “OK”! 7. Create a new build step and type the code for your frequently running project ! 8. Schedule the job to run once a minute (using the Cron syntax as described in the inline help)
  • 46. Jenkins User Conference New York, May 17 2012 #jenkinsconf A Review of My Previously Published Approach to Jenkins API Automation
  • 47. Jenkins User Conference New York, May 17 2012 #jenkinsconf The Jenkins JSON API To read the documentation, go to http://ci.example.com/api You can append /api/json to the end of nearly any Jenkins URL to get JSON data. http://ci.example.com/api/json for latest builds http://ci.example.com/job/unit-tests/api/ json for history of a specific build. http://ci.example.com/computer/api/json for slave information.
  • 48. Jenkins User Conference New York, May 17 2012 #jenkinsconf Using depth= to get more granular data If the API response doesn't contain some data that you expected, try appending ? depth=1 to the URL. If you still don't get what you want, increase the integer value. Usually you'll keep getting more data up until around ?depth=5 Exactly what and how much data you'll get is dependent on the configuration of your Jenkins instance.
  • 49. Jenkins User Conference New York, May 17 2012 #jenkinsconf Drawbacks of using depth= Depending on how deep you go into the API response, you can wind up with a lot of data. Such large responses can be expensive to download. In some cases you can request a response so large that you will wind up DDoSing Jenkins!
  • 50. Jenkins User Conference New York, May 17 2012 #jenkinsconf Using tree= to filter the API response The tree= URL parameter is like a SQL query. Use depth= to look at the wealth of information available. Then use tree= to select only the information you actually need. This can dramatically reduce the size of your API responses.
  • 51. Jenkins User Conference New York, May 17 2012 #jenkinsconf
  • 52. Jenkins User Conference New York, May 17 2012 #jenkinsconf ?tree=busyExecutors
  • 53. Jenkins User Conference New York, May 17 2012 #jenkinsconf ?tree=computer[displayName]
  • 54. Suggested Reading ✤ Drive: The Surprising Truth About What Motivates Us by Dan Pink with RSAnimate https://www.youtube.com/watch?v=u6XAPnuFjJc! ✤ Ironies of Automation by Lisanne Bainbridge http://www.ise.ncsu.edu/nsf_itr/794B/papers/Bainbridge_1983_Automatica.pdf! ✤ Big Ball of Mud by Brian Foote and Joseph Yoder http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.316.433&rep=rep1&type=pdf! ✤ The Rise of Worse is Better by Richard Gabriel http://www.jwz.org/doc/worse-is-better.html! ✤ Worse is Better by Richard Gabriel http://dreamsongs.com/worseisbetter.html! ✤ To Err is Human: ETTO Principle by Erik Hollnagel http://www.namahn.com/we-share/interviews/erik-hollnagel-err-human-etto-principle! ✤ The Law of Leaky Abstractions by Joel Spolsky http://www.joelonsoftware.com/articles/LeakyAbstractions.html! ✤ Designers and Women in Open Source by Vitorio Miliano http://old.vi.to/designers-and-women-in-open-source.html! ✤ The fantastic combinations of John Conway’s new solitaire game “life” by Martin Gardner http://www.ibiblio.org/lifepatterns/october1970.html! Books! ✤ The Field Guide to Understanding Human Error by Sidney Dekker http://amzn.to/1mdwNdU! ✤ How Google Tests Software by James Whittaker http://amzn.to/XvMtUl! ✤ Software Testing Techniques (2nd edition) by Boris Beizer http://amzn.to/YqtevB! ✤ The Timeless Way of Building by Christopher Alexander http://amzn.to/1tgW3UJ!