Deprecated: Function create_function() is deprecated in /home/qualit96/public_html/wp-content/plugins/revslider/includes/framework/functions-wordpress.class.php on line 258

Warning: Cannot modify header information - headers already sent by (output started at /home/qualit96/public_html/wp-content/plugins/revslider/includes/framework/functions-wordpress.class.php:258) in /home/qualit96/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1372

Warning: Cannot modify header information - headers already sent by (output started at /home/qualit96/public_html/wp-content/plugins/revslider/includes/framework/functions-wordpress.class.php:258) in /home/qualit96/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1372

Warning: Cannot modify header information - headers already sent by (output started at /home/qualit96/public_html/wp-content/plugins/revslider/includes/framework/functions-wordpress.class.php:258) in /home/qualit96/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1372

Warning: Cannot modify header information - headers already sent by (output started at /home/qualit96/public_html/wp-content/plugins/revslider/includes/framework/functions-wordpress.class.php:258) in /home/qualit96/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1372

Warning: Cannot modify header information - headers already sent by (output started at /home/qualit96/public_html/wp-content/plugins/revslider/includes/framework/functions-wordpress.class.php:258) in /home/qualit96/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1372

Warning: Cannot modify header information - headers already sent by (output started at /home/qualit96/public_html/wp-content/plugins/revslider/includes/framework/functions-wordpress.class.php:258) in /home/qualit96/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1372

Warning: Cannot modify header information - headers already sent by (output started at /home/qualit96/public_html/wp-content/plugins/revslider/includes/framework/functions-wordpress.class.php:258) in /home/qualit96/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1372

Warning: Cannot modify header information - headers already sent by (output started at /home/qualit96/public_html/wp-content/plugins/revslider/includes/framework/functions-wordpress.class.php:258) in /home/qualit96/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1372
{"id":13304,"date":"2017-06-29T18:52:36","date_gmt":"2017-06-29T13:52:36","guid":{"rendered":"http:\/\/quality-spectrum.com\/?p=13304"},"modified":"2019-11-20T21:02:31","modified_gmt":"2019-11-20T16:02:31","slug":"deciding-what-to-automate","status":"publish","type":"post","link":"https:\/\/quality-spectrum.com\/deciding-what-to-automate\/","title":{"rendered":"Deciding What to Automate"},"content":{"rendered":"

Managing an automation project is overlooked at times, I feel perhaps, owing to the technicality of it, undermining some essential fundamentals is a mistake all to common.\u00a0@Katrina<\/a>\u00a0shared a beautiful presentation titled\u00a0Automation and Management<\/em><\/a>\u00a0<\/em>at the\u00a0#AutomationGuild<\/a>\u00a0conference 2017. There was a whole lot content, along with my reflection on the topic for one post. Follow up posts will cover the complete session. In this post, summarizing my leanings from her talk and my thoughts around deciding what to automate.<\/p>\n

Drifting along without a concrete decision making criteria on what to automate will not render optimal utilization of automation efforts. Automating everything is not a good idea either, so how to \u201cDeciding what to automate\u201d that will fit the bill?<\/p>\n

Understand your product\u2019s strategy<\/h3>\n

How is the product being pitched in the market \/ the competitive advantage? What features are important to customers and the business, giving an idea of what\u2019s important in the overall strategy.<\/p>\n

Is the product in its growth stage? If so lots of changes are in store, for products in the maturity phase of the product\u2019s life cycle, drastic changes might not be expected. What areas are planned for changing and what does the release plan look like.<\/p>\n

Risk<\/h3>\n

The best phrase I learned here was \u201cTesting is reputation assurance, to protect corporate image\u201d. Automation can provide a big boost to build that credibility. To do that, find out what application features can be marked as high risk<\/em>. She recommended a great article by\u00a0@James Back<\/a>\u00a0on the topic\u00a0Heuristic Risk-Based Testing<\/a>\u00a0to identify risk areas and make them a priority in automation.<\/p>\n

Goals of your automation<\/h3>\n

The usual goals are increase test coverage and reduce time to market. However each product \/ company has their own unique challenges as well. Take them into consideration as well.<\/p>\n

Few places where I kicked off automation, they had no formal test scenarios. Having formal test scenarios would have a great benefit to them, which we added as a goal in our automation effort.<\/p>\n

Further goals should be quantifiable. The analogy given was ‘you should be able to add it to a check list and check it off once done’. Everyone mentions SMART goals, but creating one is not easy, not impossible either.<\/p>\n

Repetition<\/h3>\n

One of the best practices in automation has always been to make code reusable. Take that to higher layer of abstraction, at the requirements layer. Serenity, a tool which helps with that, I heard for the first time at the conference can help. Behavior Driven Development also allows repetition to some extend, however is not designed for that purpose.<\/p>\n

Could be done without a tool or framework also, as done in one of the automation projects I worked on. Functional points were automated as independent units, making them reusable to construct larger scenarios. The thought process has to be there, you can then mold any tool \/ framework in use to achieve that.<\/p>\n

Time<\/h3>\n

When should a test be automated? I had not thought about this before. Katrina quoted a great piece of research from Brian Merik “When should a test be automated<\/a>\u201d published in 1998. Some ideas from back then are now mainstream, but his answer on ‘what to automate’ is neat. One of his points is \u201cThe cost of automating a test is best measured by the number of manual tests it prevents you from running and the bugs it will therefore cause you to miss\u201d. most veterans of the industry might have thought of this earlier, but the words make it all clearer. If a certain feature is hardly used, for instance where manual testing for the feature is scheduled for just few hours per year, does not make sense to automate (that\u2019s an extreme case, I know, using an outlier example to make a point!)<\/p>\n

Also it is a good idea is to define how much time to spend automating (which is 99% of the time not going to be accurate). Having a ball park figure helps with prioritizing activities which are more important. Further, limits on execution time is a great requirement to have at the outset. Will prove to be considerable help when moving towards continuous integration<\/p>\n

Change<\/h3>\n

The only constant thing is change. Have an idea of how the above might change, that affects your decision making criteria. This is certainly hard to extrapolate; if broken down, one might have a good chance at figuring it out with reasonable probability.<\/p>\n

Companies go through change due to external and internal environments. The external is further categorized according to amount of influence from different entities, these range from direct customers and suppliers to government laws and countries trade agreements. Companies operating in disrupting industries, or ones having a tricky market segment, are more prone to external environmental change. Organizations in stable markets with comfortable market segments, tend to be less affected by external factors. Internal environment I feel is relatively simple with few ingredients like, higher management\u2019s mix, organizational structure, team\u2019s skill set and future direction at the moment.<\/p>\n

I have to admit though, C-level management is all about finding what’s changing and to navigate the ship accordingly, and it’s not an easy job. At the level of detail needed for automation, it can be managed.<\/p>\n

Collaborate<\/h3>\n

When you crunch in the numbers, add folks from all teams to derive conclusions to get the right answer. Everyone has a different insight. No one team can have the whole picture. To get the best value for time spent, get opinions from across the board.<\/p>\n

A great tip here was, \u201cAllow yourself to be influenced by others\u201d. Until others feel you can be influenced by their opinion, you might not get the best suggestions.<\/p>\n

Team\u2019s level of expertise<\/h3>\n

Although this should not be considered at the outset, but something to consider towards the end. I have seen this point coming way up the list, my rationale for bringing it down here is, as quoted from my favorite book \u201cHow google works\u201d, “the internet has rendered resources and computation power almost limitless”. If you see a clear benefit in setting the scope as, for instance, UI, integration and unit tests with 80% code coverage, while the current QA team cannot handle that, it\u2019s not hard to find resources to get it done.<\/p>\n

When bringing current expertise level at the beginning, decisions made will have that bias in them unwillingly. However, if circumstance do not permit augmenting required expertise, then current skill level is a good idea to consider.<\/p>\n

Anything else you would consider while deciding what to automate?<\/p>\n<\/div>

<\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":3,"featured_media":13305,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[43],"tags":[],"yoast_head":"\nDeciding What to Automate - Quality Spectrum<\/title>\n<meta name=\"robots\" content=\"index, follow\" \/>\n<meta name=\"googlebot\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta name=\"bingbot\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/quality-spectrum.com\/deciding-what-to-automate\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deciding What to Automate - Quality Spectrum\" \/>\n<meta property=\"og:url\" content=\"http:\/\/quality-spectrum.com\/deciding-what-to-automate\/\" \/>\n<meta property=\"og:site_name\" content=\"Quality Spectrum\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-29T13:52:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-11-20T16:02:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/quality-spectrum.com\/wp-content\/uploads\/2017\/06\/Deciding-What-to-Automate.png\" \/>\n\t<meta property=\"og:image:width\" content=\"744\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@aali_khalid\" \/>\n<meta name=\"twitter:site\" content=\"@aali_khalid\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/quality-spectrum.com\/#organization\",\"name\":\"Quality Spectrum\",\"url\":\"https:\/\/quality-spectrum.com\/\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/alikhalid\/\",\"https:\/\/www.youtube.com\/c\/QualitySpectrum\",\"https:\/\/twitter.com\/aali_khalid\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/quality-spectrum.com\/#logo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/quality-spectrum.com\/wp-content\/uploads\/2019\/11\/QS-logo-mobile-e1574510459832.png\",\"width\":40,\"height\":40,\"caption\":\"Quality Spectrum\"},\"image\":{\"@id\":\"https:\/\/quality-spectrum.com\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/quality-spectrum.com\/#website\",\"url\":\"https:\/\/quality-spectrum.com\/\",\"name\":\"Quality Spectrum\",\"description\":\"Redefining software quality\",\"publisher\":{\"@id\":\"https:\/\/quality-spectrum.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/quality-spectrum.com\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/quality-spectrum.com\/deciding-what-to-automate\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/quality-spectrum.com\/wp-content\/uploads\/2017\/06\/Deciding-What-to-Automate.png\",\"width\":744,\"height\":400},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/quality-spectrum.com\/deciding-what-to-automate\/#webpage\",\"url\":\"http:\/\/quality-spectrum.com\/deciding-what-to-automate\/\",\"name\":\"Deciding What to Automate - Quality Spectrum\",\"isPartOf\":{\"@id\":\"https:\/\/quality-spectrum.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/quality-spectrum.com\/deciding-what-to-automate\/#primaryimage\"},\"datePublished\":\"2017-06-29T13:52:36+00:00\",\"dateModified\":\"2019-11-20T16:02:31+00:00\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/quality-spectrum.com\/deciding-what-to-automate\/\"]}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/quality-spectrum.com\/deciding-what-to-automate\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/quality-spectrum.com\/deciding-what-to-automate\/#webpage\"},\"author\":{\"@id\":\"https:\/\/quality-spectrum.com\/#\/schema\/person\/4805a00d7139e111ea9430e17cc8f28c\"},\"headline\":\"Deciding What to Automate\",\"datePublished\":\"2017-06-29T13:52:36+00:00\",\"dateModified\":\"2019-11-20T16:02:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/quality-spectrum.com\/deciding-what-to-automate\/#webpage\"},\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/quality-spectrum.com\/#organization\"},\"image\":{\"@id\":\"http:\/\/quality-spectrum.com\/deciding-what-to-automate\/#primaryimage\"},\"articleSection\":\"planning\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/quality-spectrum.com\/deciding-what-to-automate\/#respond\"]}]},{\"@type\":[\"Person\"],\"@id\":\"https:\/\/quality-spectrum.com\/#\/schema\/person\/4805a00d7139e111ea9430e17cc8f28c\",\"name\":\"Ali Khalid\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/quality-spectrum.com\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70cbf539f218f275a77959dd2e56bddb?s=96&d=mm&r=g\",\"caption\":\"Ali Khalid\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/quality-spectrum.com\/wp-json\/wp\/v2\/posts\/13304"}],"collection":[{"href":"https:\/\/quality-spectrum.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/quality-spectrum.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/quality-spectrum.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/quality-spectrum.com\/wp-json\/wp\/v2\/comments?post=13304"}],"version-history":[{"count":1,"href":"https:\/\/quality-spectrum.com\/wp-json\/wp\/v2\/posts\/13304\/revisions"}],"predecessor-version":[{"id":13306,"href":"https:\/\/quality-spectrum.com\/wp-json\/wp\/v2\/posts\/13304\/revisions\/13306"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/quality-spectrum.com\/wp-json\/wp\/v2\/media\/13305"}],"wp:attachment":[{"href":"https:\/\/quality-spectrum.com\/wp-json\/wp\/v2\/media?parent=13304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/quality-spectrum.com\/wp-json\/wp\/v2\/categories?post=13304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/quality-spectrum.com\/wp-json\/wp\/v2\/tags?post=13304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}