{"id":106,"date":"2010-03-15T20:46:08","date_gmt":"2010-03-16T03:46:08","guid":{"rendered":"http:\/\/angryweasel.com\/blog\/?p=106"},"modified":"2010-03-15T20:46:08","modified_gmt":"2010-03-16T03:46:08","slug":"automation-test-cases","status":"publish","type":"post","link":"https:\/\/angryweasel.com\/blog\/automation-test-cases\/","title":{"rendered":"Automation &amp; Test Cases"},"content":{"rendered":"<p>I\u2019ve come to realize that my answers to life and the universe may vary from others. Sometimes I fall in love with my answers, but I\u2019m nearly always quite open to ideas that differ from mine. In fact, I love the conflict in thought because it makes me re-think the original problem.<\/p>\n<p>One such example is in my mind. Slightly mentioned in <a href=\"http:\/\/www.hwtsam.com\">HWTSAM<\/a> and described in detail in my chapter of&#160; <a href=\"http:\/\/www.amazon.com\/Beautiful-Testing-Professionals-Software-Practice\/dp\/0596159811\/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1268710295&amp;sr=1-1\">Beautiful Testing<\/a> is <em>my <\/em>approach to automation. When I write automation, I don\u2019t think of test cases first. I may use a spec, notes from a spec, or just lot\u2019s of notes in general to help me <em>design<\/em> test automation. I explore the component I\u2019m testing\u2013 either manually, or in the debugger and create the tests as I develop the automation (skipping lot\u2019s of design stuff because that\u2019s not the point of this post). When I\u2019m done, I prefer an approach where I extract the test cases from the test automation (either via c# attributes or export names or some other form of tagging meta data) and import theses test cases into the test case management system. <\/p>\n<p>An alternate approach is to write the test cases first, import them into the TCM, then write the automation (optionally creating stubs automatically from the test cases). At first, I thought I didn\u2019t like the idea at all, but I suppose it does force you to think about the details of testing up front (if that\u2019s a good thing). One con that I haven\u2019t resolved is what to do when the automation changes. With my approach, you just re-import the metadata. If you change the automation using the alternate approach, you probably need to update the TCM manually \u2013 but I suppose you could find a way to make that easy.<\/p>\n<p>How about you \u2013 do you prefer one approach over the other or have an alternate approach?&#160; <\/p>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019ve come to realize that my answers to life and the universe may vary from others. Sometimes I fall in love with my answers, but I\u2019m nearly always quite open to ideas that differ from mine. In fact, I love the conflict in thought because it makes me re-think the original problem. One such example&#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-106","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\/106","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=106"}],"version-history":[{"count":0,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/106\/revisions"}],"wp:attachment":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/media?parent=106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/categories?post=106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/tags?post=106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}