Tuesday, August 24, 2010

QA or When do you flip a pancake?

When do you flip a pancake?  We know what a good pancake looks like.  It's nicely brown on both sides, with a cheery ring of white along the rim.  But when you start with a pitcher of pancake batter, and a restaurant full of hungry lumberjacks,  how do you get your pancakes to meet those requirements?

The requirements are completely unambiguous.  Brown sides.  White ring.  What could be simpler?  So let's design a development process that will make our pancakes come out right:
  1. Developer pours pancake batter.
  2. Developer flips pancakes at a rate based on the schedule.
  3. Developer throws "done" pancake over the wall to QA.
  4. QA inspects pancake.  Rejects are thrown back over the wall to the developer to "fix". 
Clearly, unless the developer is really good at estimating, the result of this process will be a lot of wasted pancakes, delayed breakfasts, angry customers, and accountants who, concerned about costs, suggest that pancake developers should be outsourced.

OK, so let's design a different process.  Based on our observations of pancake  cooking, we notice that the perfect time to flip the pancake is when the bubbles on the top have just popped, and the surface starts to look slightly dry.
  1. Developer pours pancake batter.
  2. Developer applies the test to determine when to flip the pancake.
  3. Developer sees pancakes are perfect and ships them.  
  4. QA simply observes the pancakes on a statistical basis.
When we apply this process, we find that QA hardly ever rejects a pancake.  Breakfast cooking becomes efficient.  Customers are happy.  Accountants, concerned about costs, suggest downsizing the QA group.

Moral of the story:  Developers are not done until the acceptance tests pass!

Who designs the acceptance tests?  QA of course.

I recently read a blog by Dennis Stevens entitled We Are Doing QA All Wrong. He is, of course, quite right.  We are, and have been, doing QA all wrong for years.  Indeed, the current role of QA only exists because developers have been so bad at doing their jobs.

QA is at the end of the process because development never learned when to flip the pancakes. Decades ago, frustrated by the terrible quality coming out of development, managers created an inspection step at the end of the process.  QA (or QC as Stevens would have it) was born.  This role for QA reinforced the bad behavior of development that spawned it.  Because QA was at the end, developers didn't need to care about getting things right.  Developers no longer had to worry about bugs; that was now QAs role.  All developers needed to do was to "say" that the code worked as far as they were concerned, and then throw it over the wall.  Deadlines are a lot easier to make when you don't have to make the code actually work.

Management, in order to justify the existence of QA to the accountants, who were very concerned about the cost, began to measure QAs efficiency.  The more bugs that QA found, the better the job they were doing.  Notice how insane that is!  The only way for QA to be measured well is for development to screw up royally.  The more bugs that developers create the better QA looks. 

And so an unholy alliance of blame avoidance was born.  Developers can appear to meet deadlines by delivering crap.  QA is measured highly because they find lots of bugs.  Everybody is happy -- except the end customer, and the accountants who are very concerned about costs.

Look, this isn't rocket science.  If QA's input is primarily at the back end of the process, you are going to have lots of waste, rework, delay, and angry customers.  I mean:  Duh!  (Pronounced "DUUU-uuuh")

So where do we put QA?  How do we break the unholy alliance, and stop avoiding the blame?  Simple!  Move QA to the front.

What if QA's job was not to test the product, but to design the tests that developers use to know when to flip the pancake?  If QA created suites of automated acceptance tests using tools like FitNesse, then developers would know when they were done.  Developers would continue working until the acceptance tests all passed.  Indeed, it would be the developers who executed those tests.  

This is how good agile teams are organized.  QA (and development) works with the business to define the requirements as a suite of automated tests that developers execute to know when they are done.  When all the tests pass, QA makes a final exploratory pass over the product, and sends it on to production.

That last step is a little more complicated than that, but is beyond the scope of this article.  Suffice it to say that exploratory testing is a craft in it's own right that needs to be part of the process on an on-going basis.

So, in the end, when do you flip a pancake?  What is the definition of "done"?  Developers are done when the automated acceptance tests design by QA all execute and all pass.

61 comments:

  1. I disagree with some of this because there is a major difference between pancakes and a full breakfast. If you test when the eggs are done, the bacon crisp, and the pancakes perfect and never test them together you get rubbery eggs from them sitting under the heat lamp, no one tested that the pancakes are located directly under the bacon and eggs and are inedible in this location.

    So, testing should also be done on the final product, and importantly user acceptance testing should also be done before breakfast is considered delivered.

    My point is, there are some GOOD things about QA being at the end. Most of it should be moved up front, but moving all of it is just as silly as doing it all at the end. After all, no good chef would send out a meal without proper plating and looking at how it appears visually to the diner.

    ReplyDelete
  2. A fairly good post. Have developers and QA become lazy because of corporate pushing in the wrong areas? I can see that being possible in some team environments.

    TestyReadhead adds some great insight here. Cooking is a passion of sorts that I'm always trying to learn and improve at home, so this makes me ponder, is the assumption here that the eggs and bacon are started at the same time as the pancake?

    In this analogy, the developer only has two hands and a pair of eyes, so naturally what get's started first? Is it the Developer who sides to work on X feature first, then Y? Is it the Manager, SCRUM Master, etc? This brings some interesting questions to light. The cooking analogy breaks down a bit because it is difficult for a Developer to work on multiple features at the same time, unlike on a cook top where you might have 4 or more burners, each with pans, pots, and skillets going away, allowing food to cook at the same time instead of in sequence, streaming off the grill one by one. So maybe you have a developer team working simultaneously on different features instead.


    However, this is worth considering further. I've run into this same problem in my kitchen with breakfasts actually. I've learned to mix up my batter, mix up my eggs (Since I prefer scrambled) first. Bacon is trickier to do since I often use a microwave so let me substitute sausage link or patties, for the sake of this hypothetical.

    Since I cook sausage on the stove top as well, I would always start the sausage first, and typically before I've done the egg mix. While the pancake griddle/skillet is heating up, then I throw in the first pancake, and I'll take a moment to get the egg pan ready too. Shuffling all three on the stove top though is a bit of an art form, and I gotta agree it is far too easy to overcook the pancakes, the sausage or the eggs, or worse under cook them.

    I've seen that this is a problem sometimes at restaurants. They are out of Fries so my burger often sits in a bag waiting on them to finish, and is cold by the time I get back home/work to consume it. Yuck! who wants cold food? So just like at a Steak House where I'll check to make sure the meat is done to my tastes, there actually is no way to really remove that last bit of testing by the customer, except that in the case of McDonalds, and other Drive Thru fare, how many people actually acceptance check their food before driving away? I know I try to do it with most of my orders, especially if I've special ordered something, but it is far too easy to drive off, with the order wrong I've found.

    In fact it may not even just be about testing the food. The number of straws, ketchup or other condiments missing, how about enough napkins for the entire family for the meal instead of like three for the five of us? Oh, and what if I need an extra straw for some reason or another. Sometimes the clerk at the window thinks about these things and asks. Do you need a carrier? (I've got five drinks, how do you expect me to hold them and drive, especially if my car only has 2 cup holders in the front, and there are only two persons in the car that you can see from the window? Talk about a pet peeve that is :)

    I can understand not asking if there were only say two drinks, but at 3 or more, sounds to me like these folks are probably not eating in the car, especially if I'm the only one in the car. However, not sure that fits in the analogy being hashed over here. Perhaps I've gone too far down the grease trap here.

    ReplyDelete
  3. This works very well if you're creating the same pancakes over and over again.

    The wonderful thing about testers is that they have some ideas about the ideal pancake *filling*. They got these ideas because they talk to people who love pancake filling. The real secret of their role is that they themselves *hate* pancake filling, and will happily point out your mistakes without eating all your maple syrup.

    ReplyDelete
  4. Wow, talk about people getting carried away with the food metaphor. Chefs don't delegate the quality of their food to a QA department, geddit?

    ReplyDelete
  5. Nice article! Can I translate this article and put Chinese version on my blog(http://neodream.info)?Thanks

    ReplyDelete
  6. I really dislike metaphors for software development, since there is always some piece which is totally different and kind of destroys the metaphor.

    ReplyDelete
  7. I was totally amazed when i saw this website Best testing tools Online Training first time i thought this is what i am looking for from a long time i am very thankful to you for helping not only me but to all those guys who are new to this IT SECTOR and who wants to make a career ih this sector.

    ReplyDelete

  8. We at Spark square measure committed to impact the productivity of our shoppers through our distinct coaching methodologies, tailored content and delivery systems. We interact with our shoppers to supply finish to finish Learning and Development solutions and thereby supply support to boost their sales productivity, distribution network, method and compliance, ways that of operating, client expertise and supply pre-hire solutions.Visit: HR Training in India

    ReplyDelete
  9. thanks for giving such a wonderful article.
    Thanks for Information Quality Assurance is the systematic process to check whether the product developed from the company is perfect and meeting the requirements specified for the product.

    ReplyDelete
  10. This site has lots of advantage.I found many interesting things from this site. It helps me in many ways.Thanks for posting this again.For more details please check our website.
    Oracle Fusion Training Institute

    ReplyDelete
  11. CALFRE is a local search engine for online and classroom training institute. we have online training for the course
    oracle fusion financials.our oracle fusion financials online training institute Hyderabad, Bangalore, Delhi, Chennai, Kolkata, Pune, Mumbai, Ahmedabad, Gurgon, Noida, India, Dubai, UAE, USA, Kuwait, UK, Singapore, Saudi Arabia, Canada


    Oracle fusion Financials Online Training

    Oracle Fusion Financials online Training

    ReplyDelete
  12. Thanks for Information Quality Assurance is the systematic process to check whether the product developed from the company is perfect and meeting the requirements specified for the product. and visit my website for more information
    IgoFusion


    ReplyDelete
  13. Your article is so informative and I have cleared all of my doubts. Your way of explanation is awesome, thank you for sharing useful information............for more details about Fusion Cloud SCM Coaching Institute please Click Here.

    ReplyDelete
  14. It is really a very excellent blog find all of your blogs were amazing and awesome........................Check out Oracle Financials Training Centre details at Calfre website.

    ReplyDelete
  15. Erptree is the Best Institute for learn Oracle Financials
    Training in Ameerpet,Hyderabad.This provides excellent Classroom training for Oracle Apps Financial Technical/Functional Training Online and also online training. we are providing Oracle Financials Corporate training worldwide in USA, UK, Canada, Dubai, Australia and India.
    Oracle Financials Training in Ameerpet

    ReplyDelete
  16. Wow, this blog is very nice I really like your blog and i am Impressed thank you very much for posting this blog.
    Please click the below Link

    ReplyDelete
  17. Nice post, very interesting to read and understand, hope post more blogs with more information Thank you...................................Click Here for More details about Cloud Computing Training Institutes.

    ReplyDelete
  18. Good content in this post and site. We need more fresh and good content like this. Thanks for giving such a wonderful article.
    Oracle Financials Training in Hyderabad

    ReplyDelete
  19. Very good post.
    All the ways that you suggested for find a new post was

    very good.
    Keep doing posting and thanks for sharing.

    ReplyDelete
  20. Thanks for sharing this valuable information to our vision. To get more details please visit our website.
    Best Oracle Fusion HCM Training

    ReplyDelete
  21. When you feel any kind of body pain, it is best if you go to the doctor for treating it. Sometimes body pain can be the symptom of some serious disease. Sometimes body pain attacks us suddenly because of which you may not able to get the help of the doctor. In those situations, to get quick and effective pain relief, you can take the help of painkillers though they cannot cure your pain. As your painkiller, choose Tramadol 50 mg which is very effective. This painkiller is available in the market with the name of Ultram. To use this painkiller, you can get it easily. Buy Tramadol online and get this painkiller at an affordable price
    Buy Tramadol online

    ReplyDelete
  22. Thank you so much for sharing such an awesome blog.So Inspirative
    Job support

    ReplyDelete
  23. Data backup solutions for small business could save your important business data from different types of disasters.

    ReplyDelete
  24. Thanks for sharing useful information.. we have learned so much information from your blog..
    SQL Azure Online Training
    Azure SQL Training
    SQL Azure Training

    ReplyDelete
  25. Thanks for sharing such a great information. Its really nice and informative. learn devops online and devops course.

    ReplyDelete
  26. Nice Info. Thanks for Sharing.
    Ensures Best Online Job Support.
    Best Online Job Support

    ReplyDelete
  27. Poker online situs terbaik yang kini dapat dimainkan seperti Bandar Poker yang menyediakan beberapa situs lainnya seperti http://62.171.128.49/hondaqq/ , kemudian http://62.171.128.49/gesitqq/, http://62.171.128.49/gelangqq/, dan http://62.171.128.49/seniqq. yang paling akhir yaitu http://62.171.128.49/pokerwalet/. Jangan lupa mendaftar di panenqq silakan dicoba bosku serta salam hoki

    ReplyDelete
  28. Thanks, Experience with various technologies and businesses this is generally helpful. selenium training
    selenium certification

    ReplyDelete

  29. That is nice article from you , this is informative stuff . Hope more articles from you . I also want to share some information about mainframe tutorial .

    ReplyDelete

  30. That is nice article from you , this is informative stuff . Hope more articles from you . I also want to share some information about mainframe training in hyderabad .

    ReplyDelete
  31. We provide best Selenium training in Bangalore, automation testing with live projects. Cucumber, Java Selenium and Software Testing Training in Bangalore.
    Online selenium training in India - KRN Informatix is a leading Selenium Training Institute in Bangalore offering extensive Selenium Training.
    Selenium corporate training
    Automation Testing Training in Marathahalli
    Selenium realtime training with projects
    Best Selenium Training in Bangalore
    Selenium Software Training in Bangalore
    Manual testing training in bangalore

    ReplyDelete
  32. Really amazing experience to visit your blog, thanks a lot for sharing with us. Visit Ogen Infosystem for creative website designing and ppc services at best price in Delhi.
    PPC Company in Delhi

    ReplyDelete
  33. These days, id verification service is a lot higher in preference. There are many id verification methods that one can attain on a stable site named Trust Swiftly, and an agency can implement the methods to secure their own web business effortlessly. By going to this excellent TrustSwiftly web site, you can grab more information about id verification service.

    ReplyDelete
  34. Nice Post and Appreciated your support. We are proud that clients hold against using our moving, relocation services through repeat business. Therefore our Moving Services as mentioned below! Furthermore:
    movers and packers dubai, Movers in Dubai.

    ReplyDelete
  35. You’re so interesting! I don’t believe I’ve truly read something like this before. So great to find someone with genuine thoughts on this issue. Really.. many thanks for starting this up. This website is something that’s needed on the internet, someone with some originality!

    CBSE Schools In Ahmedabad
    CBSE Schools In Surat
    CBSE Schools In Rajkot
    CBSE Schools In Visakhapatnam
    CBSE Schools In Kangra
    CBSE Schools In Shimla
    CBSE Schools In Jammu
    CBSE Schools In Solan
    CBSE Schools In Mangalore
    CBSE Schools In Mysore

    ReplyDelete
  36. SEO Company in Delhi
    Are you planning to rank your website in Google first page and looking for an SEO company in Delhi? Visit Techdost.com and grab the opportunity to get a discount in SEO services in Delhi.
    Are you planning to rank your website in Google first page and looking for an SEO company in Meerut? Visit Techdost.com and grab the opportunity to get a discount in SEO services in Meerut. Rank your keywrods within 3 months* and get the high-qualtiy traffic on your website and convert them into your customers contact us today!

    SEO Company in Delhi
    SEO Company in Meerut

    ReplyDelete
  37. I was extremely pleased to find this page. I need to to thank you for ones time for this particularly fantastic read!! I definitely enjoyed every little bit of it and I have you book-marked to check out new information in your blog.

    야한동영상
    오피헌터
    마사지
    건전마사지
    바카라사이트

    ReplyDelete
  38. Thank you, for publishing this post. I hope we will get a more useful post like this in future from you. Image Editing Service that consists of for Image Clipping Path Service, White Background for Image, Shadow | Reflection, Masking, Color Adjustment, Coloring, Mannequin, Retouching, Jewelry Image Editing, Product Image Editing, Image Cropping | Resizing all types image editing service

    ReplyDelete
  39. This is really an amazing article. Thanks a lot for sharing a piece of wonderful information keep it up and best of luck for your future article and posts아산스웨디시
    천안스웨디시
    예산스웨디시
    당진스웨디시
    충주스웨디시
    제천스웨디시
    청주스웨디시
    광양스웨디시

    ReplyDelete
  40. Thanks for sharing this blog, great information.
    https://www.fastprepacademy.com/ucat-coaching-in-india/

    ReplyDelete
  41. Excellent blog! Such clever work and exposure! Keep up the very good work. Elder Maxson Coat

    ReplyDelete