{"id":492,"date":"2012-08-13T10:58:58","date_gmt":"2012-08-13T17:58:58","guid":{"rendered":"http:\/\/angryweasel.com\/blog\/?p=492"},"modified":"2012-08-13T10:58:58","modified_gmt":"2012-08-13T17:58:58","slug":"the-problem-with-theapp","status":"publish","type":"post","link":"https:\/\/angryweasel.com\/blog\/the-problem-with-theapp\/","title":{"rendered":"The Problem with TheApp"},"content":{"rendered":"<p>Last week, I <a href=\"http:\/\/angryweasel.com\/blog\/?p=482\">posted a small testing challenge<\/a> (in short, an application wouldn\u2019t launch).Shmuel Gershon has a wonderful write up of how he found the problem <a href=\"http:\/\/testing.gershon.info\/rapidreporter\/pairingrr\/AngryWeaselTheApp\/\">here<\/a>.<\/p>\n<p>For those too lazy to read, the problem was that the application attempted to read a reg key on launch, and failed to launch (with no diagnostics) if the reg key didn\u2019t exist.<\/p>\n<p>Having done a massive amount of application compatibility testing over the years, this is a fairly common scenario I\u2019ve run across (simplified quite a bit in this case). Typically, it works like this: a team makes an update to an application or operating system, and some application begins to fail in a bizarre way (including failing to launch, as well as functionality or stability changes). After some investigation, we usually discover that the application relied on a registry key, a file, or functionality that no longer exists, or has changed. Half of the time, the application vendor is out of business, or doesn\u2019t have the bandwidth to make an update, so we have to figure out what went wrong and <strike>hack<\/strike> do whatever is necessary to ensure the application continues to work.<\/p>\n<p>Some of the time, the investigation requires a bit of reverse engineering, but at least 9 times out of 10, I use tools like <a href=\"http:\/\/technet.microsoft.com\/en-us\/sysinternals\/bb896645.aspx\">sysinternals procmon<\/a> to see what\u2019s going on. I was happy (but not surprised) to see that Shmuel ended up using this tool to find the issue (and was even happier to see how well the tool led him to the exact issue).<\/p>\n<p>For my job, I do almost as much investigation into <em>why<\/em> things don\u2019t work as I put into discovering what works (and doesn\u2019t work). To me, the detective work is part of the testing role. I was surprised yesterday, when a tester told me that his job was problem detection only, and that the rest was for someone else. That world of testing would be boring to me \u2013 ymmv. <\/p>\n<p>Congrats Shmuel for the great investigation, and for having this valuable tool in his toolbox.<\/p>\n<p>&#160;<\/p>\n<p>Note: for simplicity, I put the key under HKCU so everyone could access it, and used an obvious key name (MagicValue) \u2013 in the real world, it\u2019s not always this way.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last week, I posted a small testing challenge (in short, an application wouldn\u2019t launch).Shmuel Gershon has a wonderful write up of how he found the problem here. For those too lazy to read, the problem was that the application attempted to read a reg key on launch, and failed to launch (with no diagnostics) if&#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-492","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\/492","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=492"}],"version-history":[{"count":0,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/492\/revisions"}],"wp:attachment":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/media?parent=492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/categories?post=492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/tags?post=492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}