{"id":319,"date":"2011-08-19T09:32:45","date_gmt":"2011-08-19T16:32:45","guid":{"rendered":"http:\/\/angryweasel.com\/blog\/?p=319"},"modified":"2011-08-19T09:32:45","modified_gmt":"2011-08-19T16:32:45","slug":"in-the-middle","status":"publish","type":"post","link":"https:\/\/angryweasel.com\/blog\/in-the-middle\/","title":{"rendered":"In the Middle"},"content":{"rendered":"<p>Should you automate everything, or nothing? Should you <em>test<\/em> everything, or nothing? How about leadership \u2013 should you dictate every detail of what your team should do, or give them no guidance at all. The answer for all of these questions \u2013 as you\u2019d expect, is \u201csomewhere in the middle\u201d.<\/p>\n<p>In my experience, most people handle the \u201chow much\u201d question when dealing with a range of potential solutions by starting with a reasonable mid-point and working from there \u2013 e.g. \u201clet\u2019s automate <em>half<\/em> of our tests\u201d, or, \u201cWe\u2019ll test what\u2019s most important\u201d, or, \u201cI\u2019ll give my team <em>some<\/em> guidance, and then give them some freedom in how they deal with the details.\u201d<\/p>\n<p>Those options are reasonable, so the technique seems to work. It, in fact, <em>does<\/em> work \u2013 but I think it can be better.<\/p>\n<p>A brainstorming technique I use (someone please tell me if I\u2019ve inadvertently stolen the concept) is to first spend a reasonable amount of time focusing on the extremes &#8211; because often, some great ideas for \u201cthe&#160; middle\u201d comes out of that brainstorming. Think, for example, what you\u2019d do if you tested <em>everything <\/em>(yes, I know, impossible, but <em>think<\/em> about it. You\u2019d likely use an army of vendors, need some sort of coverage metrics, etc. Then think about what you\u2019d do if you tested <em>nothing <\/em>(you may have developers own unit and functional tests, and would rely on customer feedback for scenarios, etc.). In the end, there may be something you take from both brainstorming sessions when you figure out what \u201cthe middle\u201d looks like.<\/p>\n<p>How about we try another example. Let\u2019s say you are testing application compatibility with version 2.0 of the \u201cWeasel\u201d operating system. There were 100 applications written for Weasel 1.0, and you have copies of all of them. How many of those applications do you test? If you go straight to the middle (which, again, isn\u2019t a bad choice), you\u2019d probably prioritize the apps by sales numbers and test the top <em>n<\/em> number of apps based on how much time you have. Not a bad solution, and one I\u2019d feel comfortable bringing to the team leaders.<\/p>\n<p>But let\u2019s think about the extremes for a bit. What would testing all 100 applications look like? We\u2019d definitely need to outsource the testing \u2013 but in order to do that, we\u2019d need some clear directions on what \u201ctesting\u201d an application entailed. We <em>could <\/em>write separate notes for each application, but there are probably come up with something generic (install, uninstall, copy\/paste, print, major features, etc.) that could work. This solution is certainly going to be too expensive for Weasel management to approve, but we\u2019re just brainstorming.<\/p>\n<p>Now think for a while what it would be like to test <em>none <\/em>of the apps (and not piss off customers). Well, if none of the programming interfaces used by the apps changed, they\u2019d all probably still work. But this is Weasel 2.0, so of course we\u2019re going to tweak the APIs. So, maybe it\u2019s possible to profile the APIs used by the Weasel 1.0 apps and diff that against the APIs we\u2019re changing in Weasel 2.0 and then develop an API test suite that ensured <em>API<\/em> compatibility. There may be something here\u2026<\/p>\n<p>Of course, neither of these solutions is the right answer (nor are my brainstorming sessions complete), But I\u2019ll bet that if you try this approach the next time you\u2019re dealing with a range of possible solutions, you\u2019ll come up with some new ideas on what you may choose to do \u201cin the middle\u201d.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Should you automate everything, or nothing? Should you test everything, or nothing? How about leadership \u2013 should you dictate every detail of what your team should do, or give them no guidance at all. The answer for all of these questions \u2013 as you\u2019d expect, is \u201csomewhere in the middle\u201d. In my experience, most people&#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-319","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\/319","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=319"}],"version-history":[{"count":0,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/319\/revisions"}],"wp:attachment":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/media?parent=319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/categories?post=319"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/tags?post=319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}