© Michael Bolton, Thanks to James Bach Why Does Testing Take So Long? Michael Bolton DevelopSense.

Slides:



Advertisements
Similar presentations
Roadmap Brent Halliburton
Advertisements

John Aderibigbe Managing Consultant, DU&T Consulting
Use specific reasons and examples to support your opinion.
ATMAN HB summary seminar # Challenges 2 ATMAN project 9/17/2010.
Time Management.
© ashtonfourie.com 2012 This slideshow does not click forward automatically. This is so that you can pause and think for as long as you want. If you want.
Test-First Programming. The tests should drive you to write the code, the reason you write code is to get a test to succeed, and you should only write.
Test process essentials Riitta Viitamäki,
Thomas A. Stewart Literacy Test (OSSLT) Prep Guide 2013
 Better preparation before the interview  Develop a point of view / personal brand  Create a “springboard” for intelligent dialogue  Deeper engagement.
Platinum Sponsor LARGE SCALE REFACTORING Volodymyr Fedak.
Thoughts on Systematic Exploratory Testing of Important Products James Bach, Satisfice, Inc.
Getting started with LEGO NXT Mindstorms software This is intended to be a short introduction to the LEGO Mindstorms software and programming the LEGO.
Acceptance Testing.
HOW SELF CONFIDENT ARE YOU?
Revision and Exam Skills
WELCOME!. Welcome to Business Technology 11. The course allows students to develop not only computer literacy skills, but also provides students with.
Solving the eValue Rubik’s cube
Nested If Statements While Loops
Bison Management Suppose you take over the management of a certain Bison population. The population dynamics are similar to those of the population we.
Dr Richard Bußmann CHAPTER 12 Confidence intervals for means.
A Teenager’s Guide To Asexuality Am I Ace?. Am I Asexual? You’re not into sex the way other people are. You’re not sure you really get what people mean.
Hello, Pig! Hello, Rabbit! Look at this – I am making a list!
‘Skill Focus: Self Confidence & Fulfilling your Potential’ Sonia Bate, Director & Executive Coach, Edit Development.
Customers Request the Darndest Things* 10 Challenges for VUI Designers Eduardo Olvera User Interface Designer.
I’m Michael Bolton. I teach people how to test software.
Software Engineering Reading Group: Clean Code Chapter 4 Led by Nicholas Vaidyanathan Lead Visionary, Visionary Software.
Automation is What We Do
“What’s the most important thing I should do if I want to make sure my web site is easy to use?” “What’s the most important thing I should do if I want.
CHAPTER 2 ALGORITHM ANALYSIS 【 Definition 】 An algorithm is a finite set of instructions that, if followed, accomplishes a particular task. In addition,
Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
G. Alonso, D. Kossmann Systems Group
1 In-Process Metrics for Software Testing Kan Ch 10 Steve Chenoweth, RHIT Left – In materials testing, the goal always is to break it! That’s how you know.
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
Software Performance Engineering - SPE HW - Answers Steve Chenoweth CSSE 375, Rose-Hulman Tues, Oct 23, 2007.
CSC 395 – Software Engineering Lecture 9: Testing -or- How I Stopped Worrying and Learned to Love the Bug.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Introduction to Software Testing
Regression testing Tor Stållhane. What is regression testing – 1 Regression testing is testing done to check that a system update does not re- introduce.
Emotions and Oracles Michael Bolton
DESIGNING EFFECTIVE DQS/TESTS Dr. Jey Veerasamy 1.
Test Driven Development TDD. Testing ”Testing can never demonstrate the absence of errors in software, only their presence” Edsger W. Dijkstra (but it.
Applied Software Project Management Andrew Stellman & Jennifer Greenehttp:// Applied Software Project Management Chapter 1: Introduction.
Seth Gibson Rapid Experience Development Build It On Stone.
Program Development Life Cycle (PDLC)
1. A closer look at Testing Hans Axelsson The view of testing in this presentation is that of my own and doesn’t necessarily coincide with any official.
Software Engineering Experimentation Rules for Reviewing Papers Jeff Offutt See my editorials 17(3) and 17(4) in STVR
The First in GPON Verification Classic Mistakes Verification Leadership Seminar Racheli Ganot FlexLight Networks.
(A radical interpretation) Tomo Lennox Bow Tie computer services Why Agile Works.
Black Box Software Testing Copyright © Cem Kaner & James Bach 1 Black Box Software Testing Fall 2005 Overview—Part 2 (Mission of Testing) Cem Kaner,
Moving Around in Scratch The Basics… -You do want to have Scratch open as you will be creating a program. -Follow the instructions and if you have questions.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
The next generation tester! 1 To Softec – Silicon India attendees With love, Pradeep Soundararajan Moolya Software Testing Private Limited
Software Testing and Maintenance 1 Code Review  Introduction  How to Conduct Code Review  Practical Tips  Tool Support  Summary.
1. When things go wrong: how to find SQL error Sveta Smirnova Principle Technical Support Engineer, Oracle.
Copyright © , Satisfice, Inc. V1. James Bach, Satisfice, Inc. (540)
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
Session # Rational User Conference 2002 Author Note: To edit Session # go to: View/Master/Title Master ©1998, 1999, 2000, 2001, 2002 Rational Software.
Planning in Organizations Why supervisors and managers plan: Knowing what the organization is trying to accomplish helps them set priorities and make decisions.
Chapter 1: Fundamental of Testing Systems Testing & Evaluation (MNN1063)
UHCS 2005, slide 1 About Continuous Integration. UHCS 2005, slide 2 Why do you write Unit Test ? Improve quality/robustness of your code Quick feedback.
Copyright , Dennis J. Frailey CSE7315 – Software Project Management CSE7315 M15 - Version 9.01 SMU CSE 7315 Planning and Managing a Software Project.
Week # 4 Quality Assurance Software Quality Engineering 1.
Beginning Software Craftsmanship Brendan Enrick Steve Smith
Test Automation Steffen Goerlitz Barry Lange Mitchell Meerman Harry Schultz Trevor Spees.
Designing a Research Package
CSE 303 Concepts and Tools for Software Development
that focus first on areas of risk.
Manage testing by time boxes
Presentation transcript:

© Michael Bolton, Thanks to James Bach Why Does Testing Take So Long? Michael Bolton DevelopSense

© Michael Bolton, Thanks to James Bach If you’re a tester, you’ve been asked…

© Michael Bolton, Thanks to James Bach

…and if you haven’t been asked, just stick around for a while.

© Michael Bolton, Thanks to James Bach But Hold On A Sec… There are always more conditions to check There are always more operations to perform There are always more platforms to set up There are always more variations of timing to try

© Michael Bolton, Thanks to James Bach Whether for a particular test, a given test cycle, or a test project, we stop testing when we decide to stop testing. Testing Doesn’t Stop On Its Own Whether for a particular test, a given test cycle, or a test project, we stop testing when we decide to stop testing. development project,

© Michael Bolton, Thanks to James Bach So when might we decide to stop? When we’ve exhausted the time that we initially allocated for testing, we stop. 1. The “Time’s Up!” Heuristic. Now that we know more, might we want to allocate time for more investigation?

© Michael Bolton, Thanks to James Bach So when might we decide to stop? We beat on the piñata until the candy starts falling out. The first dramatic problem we find is enough to warrant stopping. 2. The Pinata Heuristic. Might there be more interesting candy still inside?

© Michael Bolton, Thanks to James Bach So when might we decide to stop? When the application is clearly down for the count, there’s no point in continuing to test. 3. The Dead Horse Heuristic. Might we see an even more dramatic problem if we continue? Might the application only seem to be dead, and recover? I’m not dead yet!

© Michael Bolton, Thanks to James Bach So when might we decide to stop? When we’ve answered the questions that we originally set out to answer, we stop testing. 4. The Mission Accomplished Heuristic. Might the answers we’ve found trigger new questions that we should be asking?

© Michael Bolton, Thanks to James Bach So when might we decide to stop? When our client tells us to stop testing, we stop. 5. The Mission Abandoned Heuristic. If we think there are important reasons to continue, does our client know about them ?

© Michael Bolton, Thanks to James Bach So when might we decide to stop? If we’re confused, or ill-equipped, or have insufficient information, or are blocked by some bug, we stop. 6. The “I Feel Stuck!” Heuristic. With some help, could we get unstuck? Could we proceed on some other path?

© Michael Bolton, Thanks to James Bach So when might we decide to stop? When nothing changes in a load or stress test, no matter how we vary the input, we stop testing. 7. The Flatline Heuristic. Are we really varying the input sufficiently? What might happen if we kept going?

© Michael Bolton, Thanks to James Bach Actually, all the previous heuristics are founded on this one:

© Michael Bolton, Thanks to James Bach So when might we stop? Are there any interesting questions left worth answering? Are our tools and practices sufficiently inexpensive? Are we finding information that is worth the cost of continuing? 8. The Cost vs. Value Heuristic. Are there alternative choices that might be better for our current context? Or could we really stop testing now?

© Michael Bolton, Thanks to James Bach The fact is…

© Michael Bolton, Thanks to James Bach The decision to ship a product IS NOT… made by the testers governed by rules a technical decision based on whether testing is finished IS… made by the client governed by heuristics a business decision based on whether development is finished

© Michael Bolton, Thanks to James Bach Another fact is…

© Michael Bolton, Thanks to James Bach

Test Session Effectiveness A “perfectly effective” testing session is one entirely dedicated to test design, test execution, and learning –a “perfect” session is the exception, not the rule Test design and execution tend to contribute to test coverage –varied tests tend to provide more coverage than repeated tests Setup, bug investigation, and reporting take time away from test design and execution

© Michael Bolton, Thanks to James Bach Modeling Test Effort Suppose that testing a feature takes two minutes –this is a highly arbitrary and artificial assumption—that is, it’s wrong, but we use it to model an issue and make a point Suppose also that it takes an extra eight minutes to investigate and report a bug that we found with a test –another stupid, sweeping generalization in service of the point In a 90-minute session, we can run 45 feature tests—as long as we don’t find any bugs

© Michael Bolton, Thanks to James Bach How Do We Spend Time? (assuming all tests below are good tests) ModuleBug reporting/investigation (time spent on tests that find bugs) Test design and execution (time spent on tests that find no bugs) Number of tests A (good)0 minutes (no bugs found)90 minutes (45 tests)45 B (okay)10 minutes (1 bug, 1 test)80 minutes (40 tests)41 C (bad)80 minutes (8 bugs, 8 tests)10 minutes (5 tests)13 Investigating and reporting bugs means…. or… …or both. In the first instance, our coverage is great—but if we’re being assessed on the number of bugs we’re finding, we look bad. In the second instance, coverage looks good, and we found a bug, too. In the third instance, we look good because we’re finding and reporting lots of bugs—but our coverage is suffering severely. A system that rewards us or increases confidence based on the number of bugs we find might mislead us into believing that our product is well tested.

© Michael Bolton, Thanks to James Bach What Happens The Next Day? (assume 6 minutes per bug fix verification) Fix verifications Bug reporting and investigation today Test design and execution today New tests today Total over two days 0 min min10 min (1 new bug)74 min (37 tests) min40 min (4 new bugs)2 min (1 test)518 Finding bugs today means…. or… …or both. …which means…. …and note the optimistic assumption that all of our fixed verifications worked, and that we found no new bugs while running them. Has this ever happened for you?

© Michael Bolton, Thanks to James Bach With a more buggy product More time is spent on bug investigation and reporting More time is spent on fix verification Less time is available for coverage

© Michael Bolton, Thanks to James Bach With a less buggy product… (that is, one that has had some level of testing already) We’ve got some bugs out of the way already Those bugs won’t require investigation and reporting Those bugs won’t block our ability to test more deeply

© Michael Bolton, Thanks to James Bach Test Early and Often! Recurrent themes in agile development (note the small A) –test-first programming –automated unit tests, builds, and continuous integration –testability hooks in the code –lots of customer involvement The ideas are –to increase developers’ confidence in and commitment to what they’re providing (“at least it does this”) –to allow rapid feedback when it doesn’t do this –to permit robust refactoring –to increase test coverage and/or reduce testing time

© Michael Bolton, Thanks to James Bach Testing vs. Investigation Note that I just gave you a compelling-looking table, using simple measures, but notice that we still don’t really know anything about… –the quality and relevance of the tests –the quality and relevance of the bug reports –the skill of the testers in finding and reporting bugs –the complexity of the respective modules –luck …but if we ask better questions, instead of letting data make our decisions, we’re more likely to learn important things.

© Michael Bolton, Thanks to James Bach

Developer tests at the unit level –use TDD, test-first, automated unit tests, reviews and inspections, step through code in the debugger—whatever increases your own confidence that the code does what you think it does We Testers Humbly Request… (from the developers)

© Michael Bolton, Thanks to James Bach We Testers Humbly Request… (from the whole team) Focus on testability –log files –scriptable interfaces –real-time monitoring capabilities –installability and configurability –test tools, and help building our own –access to “live oracles” and other forms of information

© Michael Bolton, Thanks to James Bach Want to know more? “How Much Is Enough?”