{"id":432,"date":"2012-03-19T09:14:49","date_gmt":"2012-03-19T16:14:49","guid":{"rendered":"http:\/\/angryweasel.com\/blog\/?p=432"},"modified":"2017-04-18T08:30:50","modified_gmt":"2017-04-18T15:30:50","slug":"oops-i-did-it-again","status":"publish","type":"post","link":"https:\/\/angryweasel.com\/blog\/oops-i-did-it-again\/","title":{"rendered":"Oops, I Did it Again"},"content":{"rendered":"<p>Here\u2019s a story I hear often. The names have been changed to prevent the guilty.<\/p>\n<blockquote><p><i>Jake had barely taken a sip of his steaming coffee when he saw that thirty-two of the automated tests failed in last night\u2019s test pass. \u201cCrap, I\u2019m slammed today\u201d, thought Jake, \u201cI don\u2019t have time to look at thirty-blanking-two failures\u201d. Without a second thought, Jake clicked the \u2018re-run failures\u2019\u2019 button on the web page that displayed results and turned his attention back to his coffee. After finishing his coffee and filling a second cup, Jake was happy to see that twenty-five of the failing tests now passed. \u201cMust be a flaky environment\u201d, thought Jake as he took a big swig of coffee and got to work investigating the seven remaining failures.<\/i><\/p>\n<p><i>A few weeks later, Jake was sitting in in a meeting to go over a few of the top the live site failures reported by customers and the operations folks. Ellen, the development manager was walking through the issues and fixes, and throwing in a little lightweight root-cause analysis where appropriate. \u201cThese three\u201d, she began \u201ccaused a pretty bad customer experience. When we first looked at the errors, we figured it had to be an issue with the deployment environment, but we discovered that we could reproduce all of these in our internal test and development environments as well.\u201d Jake\u2019s stomach sunk a bit as Ellen continued. \u201cIt turns out that although the functionality is basically broken, it will work some of the time. I guess our tests were just lucky.\u201d <\/i><\/p><\/blockquote>\n<p>In some versions of this story, Jake steps up to the plate and takes responsibility. In other versions, he <em>merely <\/em>learns a lesson. In a few versions of the story, Jake calls the whole thing a fluke and goes through the same thing later in his career.<\/p>\n<p>The point of this story is simple. <strong>Every test failure means something<\/strong>. The failure <em>may <\/em>mean a product failure. It <em>may <\/em>mean you have flaky tests. When you start to <em>assume<\/em> flaky tests or environments, you\u2019re heading into the land of <a href=\"http:\/\/www.codinghorror.com\/blog\/2005\/06\/the-broken-window-theory.html\">broken windows<\/a> and product failures you <em>could<\/em> have found earlier (actually, you probably did \u2013 you just ignored them).<\/p>\n<p>Great testers rely on trustworthy tests. The goal is that <u>every<\/u> failed test represents a product failure, and any tests that fall short of that goal should be investigated and fixed \u2013 or at the very least updated with diagnostic information that lets you make a quick confident decision about the failure. <strong>Relying on test automation for any part of your testing is pointless if you don\u2019t care about the results and look at failed tests <u>every time they fail<\/u>.<\/strong><\/p>\n<p>Yes, I know. Your situation is unique, and you have a business reason for ignoring failed tests. My first response when I hear this claim is that you\u2019re probably wrong. Probably, but not definitely \u2013 but don\u2019t let flaky tests get through your reality filter. Otherwise, you\u2019ll be sitting in Jake\u2019s shoes before you know it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here\u2019s a story I hear often. The names have been changed to prevent the guilty. Jake had barely taken a sip of his steaming coffee when he saw that thirty-two of the automated tests failed in last night\u2019s test pass. \u201cCrap, I\u2019m slammed today\u201d, thought Jake, \u201cI don\u2019t have time to look at thirty-blanking-two failures\u201d&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-432","post","type-post","status-publish","format-standard","hentry","category-allposts"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/comments?post=432"}],"version-history":[{"count":0,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/432\/revisions"}],"wp:attachment":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/media?parent=432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/categories?post=432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/tags?post=432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}