{"id":343,"date":"2010-10-01T10:30:22","date_gmt":"2010-10-01T17:30:22","guid":{"rendered":"http:\/\/www.ewert-technologies.ca\/blogs\/?p=343"},"modified":"2016-01-15T15:55:43","modified_gmt":"2016-01-15T23:55:43","slug":"software-test-automation","status":"publish","type":"post","link":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/","title":{"rendered":"Software Test Automation"},"content":{"rendered":"<p>Test Automation is often seen as the <em>Holy Grail<\/em> of Software Testing, and anyone who has manually executed the same test case over and over again, on various builds and releases of a software application, will attest to the usefulness of automated tests.\u00a0 <!--more-->If automating software testing is such a good idea, why isn&#8217;t it implemented more often, and why, when attempts to implement test automation are done, they often end in failure?\u00a0 In this article I will start by giving a brief history of test automation, followed by how to decide whether test automation is for you.\u00a0 Next, I will give some benefits of automation, and describe how to begin test automation.\u00a0 Finally I&#8217;ll end with a few tips to help you avoid some common pitfalls.<\/p>\n<h2>A Brief History of Test Automation<\/h2>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-386 alignleft\" src=\"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sundial-400x326.jpg?resize=400%2C326&#038;ssl=1\" alt=\"Sun Dial\" width=\"400\" height=\"326\" srcset=\"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sundial-400x326.jpg?resize=400%2C326&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sundial-400x326.jpg?resize=300%2C245&amp;ssl=1 300w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/>The earliest forms of test automation (sometimes called first generation test automation) were accomplished using basic click recording software.\u00a0 This software could record all user inputs, including mouse clicks and key strokes.\u00a0 Mouse clicks were recorded using the screen coordinates and key strokes were entered into whichever component currently had the focus.\u00a0 Tests that were recorded using this kind of software were not very robust; changes in screen size, and timing problems (for example, a dialog box not being displayed quickly enough) could very easily cause the test script to fail.\u00a0 There was also very little chance for reuse of scripts between various tests, and verification of results would need to be done visually, either by watching the script as it ran, or examining screen shots that were taken while the script ran.<\/p>\n<p>In second generation software automation, record and playback software began to be introduced.\u00a0 This software was a step up, since instead of mindlessly clicking on screen coordinates, this software can recognize the various objects (buttons, text fields, etc.) that make up the application, and be able to interact with them (e.g. click buttons, enter text, etc).\u00a0 The basic procedure was to manually execute a test case, recording it as you went and then you could play back the test case.\u00a0 Since application objects were being acted on, changing the screen size was no longer a problem, and the software was smart enough to wait for certain objects (e.g. a button on a dialog box) to appear before trying to click on it.\u00a0 These new tools also helped in automating test verification because the state of an object could be checked at various points (e.g. the text value in a text box could be checked after the application completed some calculation).<\/p>\n<p>While this was a major improvement, problems still occurred when an application was changed, e.g. a button is added, removed or renamed, or the UI redesigned.\u00a0 In this case the test script might need to be re-recorded to account for the changes.\u00a0 Some of the tools began abstracting the application object information to an Object Repository so all the information about a particular object (e.g. button) was stored in one place and could be edited if the object changed.\u00a0 Many of these second generation tools also began introducing more sophisticated scripting languages, allowing testers to organize their scripts into routines and functions, making them more robust, and more resistant to changes in the applications.\u00a0 One problem with this, is that writing test scripts became a software development project on its own, which would require testers that have programming experience.\u00a0 In response to this, some companies began marketing so-called third generation testing tools.\u00a0 These tool claim that comprehensive, robust tests can be created without any programming.\u00a0 Most tools available today fall into the area of either advanced second generation, with object management and advanced scripting, or third generation (scriptless) tools.<\/p>\n<h2>Should I automate?<\/h2>\n<p>When deciding whether to automate software testing, several things need to be considered.\u00a0\u00a0 Firstly, you must accept that implementing test automation, is a long-term investment; a lot of up front work will need to be done before any gains can be realized.\u00a0 For a larger organization, this means that one or more of your test resources will need to be dedicated to the work of automation, and won&#8217;t be available for regular testing tasks such as test planning and test execution (I believe that test automation is not something that can be done as a &#8216;side&#8217; project, or done in a tester&#8217;s &#8216;spare&#8217; time).\u00a0 For very small organizations or independent software developers, deciding to automate your application means taking time away from developing new features from your product or developing new products.\u00a0 For some, this cost may be too high.<\/p>\n<p>Another consideration, is whether you have the right resources and skill sets to take this on.\u00a0 While some automation tools claim that no scripting or programming knowledge is needed, I believe test automaters need to be a hybrid of a tester and a programmer; be able to understand the software testing processes and goals, but also possessing technical skills to develop any necessary scripts, and to understand the architecture of the application being tested.<\/p>\n<p>Finally, you need to consider the nature of the project or application you are thinking of automating.\u00a0 Is it something that will be around for a while and that will be continually worked on?\u00a0 Automating testing brings value when it can be used often.\u00a0 If a software application will only have a short lifespan, or is very stable and not being worked on or updated anymore, then it would not make much sense to automate testing for it.<\/p>\n<h2>Benefits of Test Automation<\/h2>\n<p>With all of the challenges and limitations mentioned, why would anyone want to embark on the process of automating their testing?\u00a0 If automation is done on the right types of projects and is implemented correctly, it can save a lot of time in testing and\/or will help you release higher quality software, with fewer defects.\u00a0 The main advantage comes from being able to quickly run a set of tests after some changes have been made to your application.\u00a0 Consider the following example.\u00a0 You have released your product out to the world, but a defect has been found.\u00a0 The changes needed to fix the defect are relatively minor but affect several areas of the application.\u00a0 After making the fix you have several options, you can:<\/p>\n<ol>\n<li>Do a quick test and make sure the defect is fixed, then re-release the software.<\/li>\n<li>Execute the test cases you have, that you feel test the areas that were affected by the change, then re-release the software.<\/li>\n<li>Run a complete regression test of the of software, then re-release the software.<\/li>\n<li>Re-execute all of your test cases to make sure everything is still working, and the re-release the software.<\/li>\n<\/ol>\n<p>Going from 1 to 4, the amount of time needed increases, but also your level of confidence, in the quality of the release, increases; so the decision come down to time vs quality.\u00a0 If, however, all of your test cases were automated, you could choose to re-execute all of you test cases and the time impact would be minimal.\u00a0 This is the big advantage to automation.<\/p>\n<p>Another advantage is the consistency of the testing.\u00a0 You know that testing will be done the same way every time; you will know exactly what was tested, and how it was tested.<\/p>\n<p>A further advantage is that it takes the tedium out of testing.\u00a0 Anyone who has done testing for a while knows that when testing the same features or same application again and again, it becomes difficult to remain sharp and vigilant to find any defects.\u00a0 A test script, however, will never get bored!<\/p>\n<h2>Selecting a Tool<\/h2>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-188 alignright\" src=\"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/tools-300x252.jpg?resize=300%2C252&#038;ssl=1\" alt=\"Random Tools\" width=\"300\" height=\"252\" \/>When choosing a tool to help implement test automation, there are several things to look for.\u00a0 Firstly, the tool needs to be compatible with the type of application you want to test.\u00a0 Some are for Web applications, some for VB, some for .NET, some for Java, etc.\u00a0 You will want to make sure the tool will be able to recognize and interact with the objects (buttons, tables, text boxes, etc.) in your application.<\/p>\n<p>In addition to being compatible, the tool should have a strong scripting language, as this will allow you to\u00a0 modularize your code making your test scripts more robust.\u00a0 The tool should also have a good reporting of results, to make it easy to determine the status of tests (pass or fail) and to easily determine the reason for any failures (many tools can be configured to take a screen shot of failures).<\/p>\n<p>Some tools also come with test case management software that allow you to create and manage your test cases.\u00a0 While this is a very nice option, in terms of automation it is not a must.<\/p>\n<p>There a many tools on the market, some commercial, and some free.\u00a0 The commercial ones can be quite expensive but will often contain many more features to make creating tests easier.\u00a0 With the free tools, be prepared to do a lot more of the work yourself.\u00a0 I have listed several tools in the References section.<\/p>\n<h2>Implementing Test Automation<\/h2>\n<p>The exact details of how to implement Test Automation will depend heavily on the tool you are using, and to some extent will depend on the application you are testing.\u00a0 I will present a generalized strategy that I use when implementing test automation.<\/p>\n<p>One of the key criteria to having a robust test automation system, is to abstract and separate the various actions on GUI components, so that each action is only in one place.\u00a0 For example, a screen might have a button on it that gets used in multiple test cases, but the code to press the button should only be in one place, so if the button ever changes, the code only needs to be changed in one place.<\/p>\n<p>The approach that I take, is to look at a screen, dialog, or web page, and try to think about all of the small, discreet actions a user could take.\u00a0 These actions could be filling text into a text box, selecting a cell from a table, picking an item from a combo box, etc., and then write a function to do that action.\u00a0 All of these functions for all of the screens\/pages, form an object function library.<\/p>\n<p>Next I look at the test cases that need to be automated.\u00a0 Often there are groups of test cases that are very similar, e.g. they all perform the same basic actions, but with different data and may have different results.\u00a0 Using the object function library I create a second level of functions (action function library) that perform these common tasks.<\/p>\n<p>Finally, using the various functions from the object function library and\/or the action function library, I take each test case and implement it into a test script.\u00a0 By taking this layered approach, if and when something in the application changes, hopefully my code will only need to be changed in one or two places.<\/p>\n<p>A final, but important piece that also needs to be considered, is logging.\u00a0 Because there is coding involved when writing test automation scripts, there most likely will be bugs in the code.\u00a0 When a test case script fails it is important to find out if the failure was caused by a bug in the application or a bug in the test script.\u00a0 This is where logging becomes important, so you can trace back and see what happened while the scripts were running.<\/p>\n<h2>Tips for starting Test Automation<\/h2>\n<ol>\n<li>Start small.\u00a0 If you have a well-defined Sanity Test, or moderately sized Regression Test, start by automating these before trying to automate all of you individual test cases.\u00a0 This will give quicker return on your investment.<\/li>\n<li>Don&#8217;t try to automate everything.\u00a0 Some tests are not very easily automated, and may cause more headaches than it is worth; start with the easy stuff.\u00a0 Also, if there are some test cases that you rarely execute, don&#8217;t bother automating these.<\/li>\n<li>Keep the automation up to date.\u00a0 The bulk of the work in test automation is at the beginning, but after that, the test scripts will need to be maintained, and new scripts added, as the application changes.\u00a0 If not, the automated test suite will become obsolete and will no longer be useful.<\/li>\n<li>Thoroughly evaluate tools.\u00a0 Most commercial test automation tools, allow you to try them before purchasing.\u00a0 Make sure you do this, to ensure that the tools will work for your application, and meet your needs.\u00a0 Set up a proof of concept, identifying some of the more challenges tests to automate.\u00a0 If you can automate these tests with the tool, it should be adequate.<\/li>\n<li>Remember test automation is not a silver bullet.\u00a0 Automated tested won&#8217;t necessary find all bugs.\u00a0 For example, general usability is nearly impossible to automate since it is subjective.\u00a0 Automation is not a straight replacement for manual testing, but should be seen to assist and complement manual testing.<\/li>\n<li>For larger organizations, make sure the person or team responsible for test automation, documents what they are doing, so others can take over if they leave.<\/li>\n<\/ol>\n<h2>References<\/h2>\n<p><em>QuickTest Pro<br \/><\/em><a href=\"https:\/\/h10078.www1.hp.com\/cda\/hpms\/display\/main\/hpms_content.jsp?zn=bto&amp;cp=1-11-127-24^1352_4000_100__%A0\">https:\/\/h10078.www1.hp.com\/cda\/hpms\/display\/main\/hpms_content.jsp?zn=bto&amp;cp=1-11-127-24^1352_4000_100__\u00a0<\/a><span class=\"Apple-converted-space\">\u00a0<\/span>(Commercial for Web, Windows, Java)<\/p>\n<p><em>IBM Rational Robot<\/em><span class=\"Apple-converted-space\"><br \/><\/span><a href=\"http:\/\/www-01.ibm.com\/software\/awdtools\/tester\/robot\/\">http:\/\/www-01.ibm.com\/software\/awdtools\/tester\/robot\/<\/a><span class=\"Apple-converted-space\">\u00a0<\/span>(Commercial for Web, Windows, Java)<\/p>\n<p><em><br \/>IBM Rational Functional Tester<\/em><span class=\"Apple-converted-space\"><br \/><\/span> <a href=\"http:\/\/www-01.ibm.com\/software\/awdtools\/tester\/functional\/\">http:\/\/www-01.ibm.com\/software\/awdtools\/tester\/functional\/<\/a><span class=\"Apple-converted-space\">\u00a0<\/span>(Commercial for Web, Windows, Java)<\/p>\n<p><em>Test Complete<\/em><span class=\"Apple-converted-space\"><br \/><\/span><a href=\"http:\/\/www.automatedqa.com\/products\/testcomplete\/\">http:\/\/www.automatedqa.com\/products\/testcomplete\/<\/a>(Commercial for Web, Windows, Java)<\/p>\n<p><em>Worksoft Certify<\/em><span class=\"Apple-converted-space\"><br \/><\/span><a href=\"http:\/\/www.worksoft.com\/products\/worksoft-certify.html\">http:\/\/www.worksoft.com\/products\/worksoft-certify.html<\/a>(Commerical for Web, Windows, Java)<\/p>\n<p><em>Squish<\/em><span class=\"Apple-converted-space\"><br \/><\/span><a href=\"http:\/\/www.froglogic.com\/\">http:\/\/www.froglogic.com\/<\/a><span class=\"Apple-converted-space\">\u00a0<\/span>(Commercial for Java)<\/p>\n<p><em>Marathon Tester<\/em><span class=\"Apple-converted-space\"><br \/><\/span><a href=\"http:\/\/www.marathontesting.com\/Home.html\">http:\/\/www.marathontesting.com\/Home.html<\/a><span class=\"Apple-converted-space\">\u00a0<\/span>(Open Source for Java)<\/p>\n<p><em>Watir<\/em><span class=\"Apple-converted-space\"><br \/><\/span><a href=\"http:\/\/watir.com\/\">http:\/\/watir.com\/<\/a><span class=\"Apple-converted-space\">\u00a0<\/span>(Open Source for Web)<\/p>\n<blockquote><p><em>Note: this article first appeared in the September 2010 Issue (Volume 23, No. 9) of ASPects, The Monthly Newsletter of the <a href=\"http:\/\/www.asp-software.org\/\" target=\"_blank\">Association of Shareware Professionals<\/a>.<\/em><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Test Automation is often seen as the Holy Grail of Software Testing, and anyone who has manually executed the same test case over and over again, on various builds and releases of a software application, will attest to the usefulness of automated tests.\u00a0<\/p>\n","protected":false},"author":1,"featured_media":383,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_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}},"categories":[18],"tags":[29,20],"class_list":["post-343","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","tag-automation","tag-software-testing"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Software Test Automation - Ewert Technologies Blog<\/title>\n<meta name=\"description\" content=\"This article give a brief introduction to Software Test Automation\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Software Test Automation - Ewert Technologies Blog\" \/>\n<meta property=\"og:description\" content=\"This article give a brief introduction to Software Test Automation\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/\" \/>\n<meta property=\"og:site_name\" content=\"Ewert Technologies Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/EwertTechnologies\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/EwertTechnologies\" \/>\n<meta property=\"article:published_time\" content=\"2010-10-01T17:30:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-01-15T23:55:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sammy-robot-400x300.jpg?fit=400%2C300&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Victor Ewert\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@EwertTech\" \/>\n<meta name=\"twitter:site\" content=\"@EwertTech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Victor Ewert\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/\"},\"author\":{\"name\":\"Victor Ewert\",\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/#\/schema\/person\/83341249e0e6fd8678a5f2cda46f92a0\"},\"headline\":\"Software Test Automation\",\"datePublished\":\"2010-10-01T17:30:22+00:00\",\"dateModified\":\"2016-01-15T23:55:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/\"},\"wordCount\":2315,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sammy-robot-400x300.jpg?fit=400%2C300&ssl=1\",\"keywords\":[\"Automation\",\"Software Testing\"],\"articleSection\":[\"Articles\"],\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/\",\"url\":\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/\",\"name\":\"Software Test Automation - Ewert Technologies Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sammy-robot-400x300.jpg?fit=400%2C300&ssl=1\",\"datePublished\":\"2010-10-01T17:30:22+00:00\",\"dateModified\":\"2016-01-15T23:55:43+00:00\",\"description\":\"This article give a brief introduction to Software Test Automation\",\"breadcrumb\":{\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#breadcrumb\"},\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sammy-robot-400x300.jpg?fit=400%2C300&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sammy-robot-400x300.jpg?fit=400%2C300&ssl=1\",\"width\":400,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.ewert-technologies.ca\/blogs\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Software Test Automation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/#website\",\"url\":\"https:\/\/www.ewert-technologies.ca\/blogs\/\",\"name\":\"Ewert Technologies Blog\",\"description\":\"Welcome to the Ewert Technologies Blog Site\",\"publisher\":{\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.ewert-technologies.ca\/blogs\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-CA\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/#organization\",\"name\":\"Ewert Technologies\",\"url\":\"https:\/\/www.ewert-technologies.ca\/blogs\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i1.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/logo_200.png?fit=200%2C79&ssl=1\",\"contentUrl\":\"https:\/\/i1.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/logo_200.png?fit=200%2C79&ssl=1\",\"width\":200,\"height\":79,\"caption\":\"Ewert Technologies\"},\"image\":{\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/EwertTechnologies\",\"https:\/\/x.com\/EwertTech\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/#\/schema\/person\/83341249e0e6fd8678a5f2cda46f92a0\",\"name\":\"Victor Ewert\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\/\/www.ewert-technologies.ca\/blogs\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.ewert-technologies.ca\/blogs\/wp-content\/litespeed\/avatar\/9de67af6c08020159b0c49938492aada.jpg?ver=1776826808\",\"contentUrl\":\"https:\/\/www.ewert-technologies.ca\/blogs\/wp-content\/litespeed\/avatar\/9de67af6c08020159b0c49938492aada.jpg?ver=1776826808\",\"caption\":\"Victor Ewert\"},\"description\":\"I am Victor Ewert, an Independent Software Developer and owner of Ewert Technologies. In the past I have worked as a Software Tester including working on Software Test automation. My current technology interests include Java, JavaFX, Kotlin, Swift, Privacy and Security, and Mobile App development.\",\"sameAs\":[\"https:\/\/www.ewert-technologies.ca\/home\",\"https:\/\/www.facebook.com\/EwertTechnologies\",\"https:\/\/www.linkedin.com\/in\/vewert\",\"https:\/\/x.com\/EwertTech\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Software Test Automation - Ewert Technologies Blog","description":"This article give a brief introduction to Software Test Automation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/","og_locale":"en_US","og_type":"article","og_title":"Software Test Automation - Ewert Technologies Blog","og_description":"This article give a brief introduction to Software Test Automation","og_url":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/","og_site_name":"Ewert Technologies Blog","article_publisher":"https:\/\/www.facebook.com\/EwertTechnologies","article_author":"https:\/\/www.facebook.com\/EwertTechnologies","article_published_time":"2010-10-01T17:30:22+00:00","article_modified_time":"2016-01-15T23:55:43+00:00","og_image":[{"width":400,"height":300,"url":"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sammy-robot-400x300.jpg?fit=400%2C300&ssl=1","type":"image\/jpeg"}],"author":"Victor Ewert","twitter_card":"summary_large_image","twitter_creator":"@EwertTech","twitter_site":"@EwertTech","twitter_misc":{"Written by":"Victor Ewert","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#article","isPartOf":{"@id":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/"},"author":{"name":"Victor Ewert","@id":"https:\/\/www.ewert-technologies.ca\/blogs\/#\/schema\/person\/83341249e0e6fd8678a5f2cda46f92a0"},"headline":"Software Test Automation","datePublished":"2010-10-01T17:30:22+00:00","dateModified":"2016-01-15T23:55:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/"},"wordCount":2315,"commentCount":0,"publisher":{"@id":"https:\/\/www.ewert-technologies.ca\/blogs\/#organization"},"image":{"@id":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sammy-robot-400x300.jpg?fit=400%2C300&ssl=1","keywords":["Automation","Software Testing"],"articleSection":["Articles"],"inLanguage":"en-CA","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/","url":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/","name":"Software Test Automation - Ewert Technologies Blog","isPartOf":{"@id":"https:\/\/www.ewert-technologies.ca\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#primaryimage"},"image":{"@id":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sammy-robot-400x300.jpg?fit=400%2C300&ssl=1","datePublished":"2010-10-01T17:30:22+00:00","dateModified":"2016-01-15T23:55:43+00:00","description":"This article give a brief introduction to Software Test Automation","breadcrumb":{"@id":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#breadcrumb"},"inLanguage":"en-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/"]}]},{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#primaryimage","url":"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sammy-robot-400x300.jpg?fit=400%2C300&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sammy-robot-400x300.jpg?fit=400%2C300&ssl=1","width":400,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.ewert-technologies.ca\/blogs\/articles\/software-test-automation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.ewert-technologies.ca\/blogs\/"},{"@type":"ListItem","position":2,"name":"Software Test Automation"}]},{"@type":"WebSite","@id":"https:\/\/www.ewert-technologies.ca\/blogs\/#website","url":"https:\/\/www.ewert-technologies.ca\/blogs\/","name":"Ewert Technologies Blog","description":"Welcome to the Ewert Technologies Blog Site","publisher":{"@id":"https:\/\/www.ewert-technologies.ca\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.ewert-technologies.ca\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-CA"},{"@type":"Organization","@id":"https:\/\/www.ewert-technologies.ca\/blogs\/#organization","name":"Ewert Technologies","url":"https:\/\/www.ewert-technologies.ca\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/www.ewert-technologies.ca\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/i1.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/logo_200.png?fit=200%2C79&ssl=1","contentUrl":"https:\/\/i1.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/logo_200.png?fit=200%2C79&ssl=1","width":200,"height":79,"caption":"Ewert Technologies"},"image":{"@id":"https:\/\/www.ewert-technologies.ca\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/EwertTechnologies","https:\/\/x.com\/EwertTech"]},{"@type":"Person","@id":"https:\/\/www.ewert-technologies.ca\/blogs\/#\/schema\/person\/83341249e0e6fd8678a5f2cda46f92a0","name":"Victor Ewert","image":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/www.ewert-technologies.ca\/blogs\/#\/schema\/person\/image\/","url":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-content\/litespeed\/avatar\/9de67af6c08020159b0c49938492aada.jpg?ver=1776826808","contentUrl":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-content\/litespeed\/avatar\/9de67af6c08020159b0c49938492aada.jpg?ver=1776826808","caption":"Victor Ewert"},"description":"I am Victor Ewert, an Independent Software Developer and owner of Ewert Technologies. In the past I have worked as a Software Tester including working on Software Test automation. My current technology interests include Java, JavaFX, Kotlin, Swift, Privacy and Security, and Mobile App development.","sameAs":["https:\/\/www.ewert-technologies.ca\/home","https:\/\/www.facebook.com\/EwertTechnologies","https:\/\/www.linkedin.com\/in\/vewert","https:\/\/x.com\/EwertTech"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.ewert-technologies.ca\/blogs\/wp-content\/uploads\/sammy-robot-400x300.jpg?fit=400%2C300&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-json\/wp\/v2\/posts\/343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-json\/wp\/v2\/comments?post=343"}],"version-history":[{"count":9,"href":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-json\/wp\/v2\/posts\/343\/revisions"}],"predecessor-version":[{"id":388,"href":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-json\/wp\/v2\/posts\/343\/revisions\/388"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-json\/wp\/v2\/media\/383"}],"wp:attachment":[{"href":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-json\/wp\/v2\/media?parent=343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-json\/wp\/v2\/categories?post=343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ewert-technologies.ca\/blogs\/wp-json\/wp\/v2\/tags?post=343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}