{"id":11816,"date":"2018-03-26T20:25:07","date_gmt":"2018-03-26T20:25:07","guid":{"rendered":"http:\/\/blog.applitools.com\/?p=1816"},"modified":"2020-08-10T17:31:30","modified_gmt":"2020-08-10T17:31:30","slug":"visual-testing-as-an-aid-to-functional-testing","status":"publish","type":"post","link":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/","title":{"rendered":"Visual UI Testing as an Aid to Functional Testing"},"content":{"rendered":"<p>In a previous blog post of mine&nbsp;<u><a href=\"http:\/\/blog.applitools.com\/embracing-agility-a-practical-approach-for-software-testers\/?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=&amp;utm_campaign=blog-evergreen-campaign&amp;utm_subgroup=\" target=\"_blank\" rel=\"noopener noreferrer\">\u201c<\/a><\/u><span style=\"text-decoration: underline;\"><a href=\"http:\/\/blog.applitools.com\/embracing-agility-a-practical-approach-for-software-testers\/?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=&amp;utm_campaign=blog-evergreen-campaign&amp;utm_subgroup=\" target=\"_blank\" rel=\"noopener noreferrer\">Embracing Agility: A Practical Approach for Software Testers<\/a><\/span><u><a href=\"http:\/\/blog.applitools.com\/embracing-agility-a-practical-approach-for-software-testers\/?utm_term=&amp;utm_source=web-referral&amp;utm_medium=blog&amp;utm_content=&amp;utm_campaign=blog-evergreen-campaign&amp;utm_subgroup=\" target=\"_blank\" rel=\"noopener noreferrer\">\u201d<\/a><\/u>, I discussed how an agile team changes the role of the software tester. Instead of being a gatekeeper that tests the product after it is developed, the software tester is part of the development process.<\/p>\n<p>I also described how the shift-left movement enables the software tester to concentrate on the more&nbsp;<em>interesting<\/em>&nbsp;tests, and leave the boring tests (\u201cthis form field can only accept email addresses\u201d) to the software developer. But those interesting tests, at least the ones we decided to automate, need to be written, and written quickly.<\/p>\n<p>In this blog post I will discuss a technique whereby you can use visual UI testing to make writing those tests much easier.&nbsp;<!--more--><\/p>\n<h4><strong>Visual UI Testing vs Functional Testing<\/strong><\/h4>\n<p>Visual tests are usually used to check the visual aspects of your application. Makes sense, no? To automate tests that verify that your application&nbsp;<em>looks<\/em>&nbsp;OK, you write visual tests, and use visual testing tools such as&nbsp;<span style=\"text-decoration: underline;\"><a href=\"https:\/\/app14743.cloudwayssites.com\/features\/test-automation?utm_source=SOF&amp;utm_medium=GT\" target=\"_blank\" rel=\"noopener noreferrer\">Applitools Eyes<\/a><\/span>. But visual testing tools can also be used for functional tests.<\/p>\n<p>Really? How can visual testing help us write functional tests, tests that check how the application&nbsp;<em>behaves<\/em>? First, let\u2019s understand how visual testing and functional testing of applications work.<\/p>\n<h4><strong>Functional Testing<\/strong><\/h4>\n<p>A functional test (in this blog post! I am sure that you can find other people that define it differently) is a test that starts an application in a certain state, performs a set of actions, and tests that the application is in the correct state after those actions.<\/p>\n<p>So a functional test looks like this:<\/p>\n<ol>\n<li>Load a specific set of application data<\/li>\n<li>Start the application<\/li>\n<li>Execute a set of actions on the UI (or the REST API!) of the application<\/li>\n<li>Assert that the actual state of the application is the expected one<\/li>\n<\/ol>\n<p>Yes, you might argue that it is not the test that starts the application, and that the test should always create the specific set of data using other actions. You could, but that\u2019s&nbsp;<span style=\"text-decoration: underline;\"><a href=\"https:\/\/www.urbandictionary.com\/define.php?term=bikeshedding\" target=\"_blank\" rel=\"noopener noreferrer\">bikeshedding<\/a><\/span>. True, no functional tests look exactly like this, but the idea is correct:<\/p>\n<ul>\n<li>action, action, action<\/li>\n<li>assertion, assertion, assertion<\/li>\n<li>action, action, action<\/li>\n<li>assertion, assertion, assertion<\/li>\n<\/ul>\n<p>Let\u2019s take an example of a to-do list application:<\/p>\n<figure id=\"attachment_1817\" aria-describedby=\"caption-attachment-1817\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1817\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2018\/03\/Todo-List.png\" alt=\"Todo List\" width=\"640\" height=\"440\"><figcaption id=\"caption-attachment-1817\" class=\"wp-caption-text\"><em>Todo List<\/em><\/figcaption><\/figure>\n<p>One functional test would be:<\/p>\n<ul>\n<li>Action: check a todo<\/li>\n<li>Assertion: it is checked in the \u201cAll\u201d tab<\/li>\n<li>Assertion: it is gone from the \u201cActive\u201d tab<\/li>\n<li>Assertion: it is checked in the \u201cCompleted\u201d tab<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1818\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2018\/03\/todo-list-2.png\" alt=\"\" width=\"655\" height=\"444\"><\/p>\n<p>&nbsp;<\/p>\n<h4><strong>Implementing functional assertions<\/strong><\/h4>\n<p>How would one go about implementing the assertions? If it\u2019s a web application, and we\u2019re using a browser automation library like Selenium Webdriver, then the tester would need to check whether the specific todo\u2019s checkbox is checked, and also check that the other checkboxes are&nbsp;<em>not<\/em>&nbsp;checked. Also, check that the text of the todo is striked out, while the others are&nbsp;<em>not<\/em>&nbsp;striked out.<\/p>\n<p>Oh, and don\u2019t forget to check the \u201c2 items left\u201d text in the bottom left of the list.<\/p>\n<p>And each such check is a pain in the butt \u2014 the tester needs to determine what the id of the control they are checking is. And sometimes there is no specific id (or class), and so the tester needs to go to the developer and ask them to add an id for testing, or if the tester is in an agile team, maybe add it themselves!<\/p>\n<p>Also: this needs to be done across hundreds of tests, and thousands of assertions. This is practically impossible, and definitely impossible to maintain. What usually happens is that the developer chooses a&nbsp;<em>subset<\/em>&nbsp;of assertions, and tests just those. In our example, it would only assert that the checkbox of the todo item is checked, and forego the other tests.<\/p>\n<h4><strong>Visual Testing<\/strong><\/h4>\n<p>We\u2019ve seen what functional tests are, and one of the problems associated with them. Let\u2019s move on to visual tests: a functional test (in this blog post! I am sure that you can find other people that define it differently) is a test that starts an application in a certain state, performs a set of actions, and tests that the application looks good after these actions.<\/p>\n<figure id=\"attachment_1819\" aria-describedby=\"caption-attachment-1819\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1819\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2018\/03\/How-similar-are-they.png\" alt=\"How similar are they?\" width=\"800\" height=\"447\"><figcaption id=\"caption-attachment-1819\" class=\"wp-caption-text\"><em>How similar are they?<\/em><\/figcaption><\/figure>\n<p>See how similar they are? A visual test looks like this:<\/p>\n<ol>\n<li>Load a specific set of application data<\/li>\n<li>Start the application<\/li>\n<li>Execute a set of actions on the UI (or the REST API!) of the application<\/li>\n<li>Assert that the application&nbsp;<em>looks<\/em>correct<\/li>\n<\/ol>\n<p>This is exactly like functional tests, except that the assertions are different. So let\u2019s look at how assertions are performed in visual tests. How does a visual test go about testing that an application&nbsp;<em>looks&nbsp;<\/em>correct?<\/p>\n<h4><strong>Implementing visual assertions<\/strong><\/h4>\n<p>How do visual assertions work? Well, first of all, we take a screenshot of the screen \u2014 we are doing a&nbsp;<em>visual&nbsp;<\/em>assertion after all. But this screenshot, alone, is not enough. What we do is compare this to a&nbsp;<strong>baseline screenshot<\/strong>&nbsp;that we took in a previous run of the test. If the algorithm comparing the current screenshot to the baseline one tells us that they\u2019re the same, then the assertion passes, otherwise it fails.<\/p>\n<figure id=\"attachment_1820\" aria-describedby=\"caption-attachment-1820\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1820\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2018\/03\/Comparing-a-screenshot-against-a-baseline.png\" alt=\"Comparing a screenshot against a baseline\" width=\"800\" height=\"265\"><figcaption id=\"caption-attachment-1820\" class=\"wp-caption-text\"><em>Comparing a screenshot against a baseline<\/em><\/figcaption><\/figure>\n<p>And how do we generate the screenshot? In a two phase process:<\/p>\n<ol>\n<li>We define the screenshots that are created by the assertion of the&nbsp;<strong>first test<\/strong>&nbsp;the baseline screenshots. The tester manually checks each one of those baseline screenshots.<\/li>\n<li>Each time the test&nbsp;<em>fails<\/em>it could be because there is a bug in the software, but it could also be because the software changed and this is the&nbsp;<em>new<\/em> The tester in this case manually checks each one of those new screenshots and declares them as the new baseline.<\/li>\n<\/ol>\n<h4><strong>How does visual comparison work?<\/strong><\/h4>\n<p>Unfortunately, visually comparing two screenshots seems easy, but it\u2019s not.&nbsp;<em>Theoretically<\/em>, it should be as easy as comparing pixels, but this, unfortunately, is not the case. Different operating systems, browsers, even different versions of the same browser generate slightly different images. Moreover what if the screenshot includes the current time? You would need to check everything&nbsp;<em>except<\/em>&nbsp;that region of the screen.<\/p>\n<p>There are even more concerns, which we should outline in a future blog post. Fortunately, tools like&nbsp;<a href=\"https:\/\/app14743.cloudwayssites.com\/features\/test-automation?utm_source=SOF&amp;utm_medium=GT\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"text-decoration: underline;\">Applitools Eyes<\/span><\/a>&nbsp;hide us from these concerns.<\/p>\n<h4><strong>Using Visual Assertions in Functional Tests<\/strong><\/h4>\n<p>Now that we understand how functional testing works, we understand that there\u2019s no difference between functional and visual tests in how they are structured \u2014 the only difference is in what they test and in how they implement the assertions:<\/p>\n<ul>\n<li>Functional assertions check each and every control on the page to ensure that they have the correct value<\/li>\n<li>Visual assertions compares a screenshot of the page against a manually verified baseline screenshot.<\/li>\n<\/ul>\n<p>Visual assertions seem pretty easy to use. Just manually verify the first screenshot, and just take screenshots of the pages after the actions in the test. No need to check each control, determine the id of the control, or ask the developers to add ids to controls. Just take a screenshot and let visual testing frameworks like&nbsp;<span style=\"text-decoration: underline;\"><a href=\"https:\/\/github.com\/webdriverio\/webdrivercss\" target=\"_blank\" rel=\"noopener noreferrer\">WebDriverCSS<\/a><\/span>&nbsp;or&nbsp;<span style=\"text-decoration: underline;\"><a href=\"https:\/\/app14743.cloudwayssites.com\/features\/test-automation?utm_source=SOF&amp;utm_medium=GT\" target=\"_blank\" rel=\"noopener noreferrer\">Applitools Eyes<\/a><\/span>&nbsp;compare them.<\/p>\n<p>And we\u2019ve seen how functional assertions are hard. But what if we can use visual assertions in&nbsp;<em>functional&nbsp;<\/em>tests? Something like this:<\/p>\n<ol>\n<li>Load a specific set of application data<\/li>\n<li>Start the application<\/li>\n<li>Execute a set of actions on the UI (or the REST API!) of the application<\/li>\n<li>Take a screenshot to verify that the&nbsp;<em>data&nbsp;<\/em>is correct<\/li>\n<\/ol>\n<p>Think of the todos page after checking the todo item:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1821\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2018\/03\/todo-list-3.png\" alt=\"\" width=\"655\" height=\"444\"><\/p>\n<p>With one screenshot, we can check that the check was checked (ouch, too many \u201ccheck\u201d-s), verify that the other todo items weren\u2019t, that the \u201c2 items left\u201d is correct, that the todo item is in strike-out, and probably other stuff which we didn\u2019t even notice.<\/p>\n<p>Many front-end developers use this kind of \u201ctesting against a baseline\u201d, but what they test is the HTML of the components, and not how they look like. But the idea is similar. The difference is that it is much nicer to check the difference from a baseline between two images, than to compare a textual diff of HTML.<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_1822\" aria-describedby=\"caption-attachment-1822\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1822\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2018\/03\/Comparing-a-screenshot-against-a-baseline-1.png\" alt=\"Comparing a screenshot against a baseline\" width=\"800\" height=\"265\"><figcaption id=\"caption-attachment-1822\" class=\"wp-caption-text\"><em>Comparing a screenshot against a baseline<\/em><\/figcaption><\/figure>\n<p>Pleasant side benefit of using visual assertions: you get to check the visual look of your application for free!<\/p>\n<p><span style=\"font-weight: 400;\">To read more about Applitools\u2019 visual UI testing and<\/span><a href=\"https:\/\/app14743.cloudwayssites.com\/downloads\/The_Rise_of_AVM_Applitools_June_18_2018.pdf?utm_source=applitools-blog&amp;utm_medium=blog&amp;utm_campaign=blog&amp;utm_content=visual-testing-as-an-aid-to-functional-testing\"> <span style=\"font-weight: 400;\">Application Visual Management<\/span><\/a><span style=\"font-weight: 400;\"> (AVM) solutions, check out the<\/span><a href=\"https:\/\/app14743.cloudwayssites.com\/resources?utm_source=applitools-blog&amp;utm_medium=blog&amp;utm_campaign=blog&amp;utm_content=visual-testing-as-an-aid-to-functional-testing\"> <span style=\"font-weight: 400;\">resources<\/span><\/a><span style=\"font-weight: 400;\"> section on the Applitools website. To get started with Applitools, request a<\/span><a href=\"https:\/\/app14743.cloudwayssites.com\/request-demo?utm_source=applitools-blog&amp;utm_medium=blog&amp;utm_campaign=blog&amp;utm_content=visual-testing-as-an-aid-to-functional-testing\"> <span style=\"font-weight: 400;\">demo<\/span><\/a><span style=\"font-weight: 400;\"> or<\/span><a href=\"https:\/\/app14743.cloudwayssites.com\/users\/register?utm_source=applitools-blog&amp;utm_medium=blog&amp;utm_campaign=blog&amp;utm_content=visual-testing-as-an-aid-to-functional-testing\"> <span style=\"font-weight: 400;\">sign up<\/span><\/a><span style=\"font-weight: 400;\"> for a free Applitools account.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In a previous blog post of mine&nbsp;\u201cEmbracing Agility: A Practical Approach for Software Testers\u201d, I discussed how an agile team changes the role of the software tester. Instead of being&#8230;<\/p>\n","protected":false},"author":17,"featured_media":20520,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[10004],"tags":[10243,10061,12688,12690,12686],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.5 (Yoast SEO v24.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Functional Testing Needs Visual UI Testing | Applitools<\/title>\n<meta name=\"description\" content=\"Your application functional testing ensures that the output of an executed test matches expectations. Assert visually to validate what your users see.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Visual UI Testing as an Aid to Functional Testing\" \/>\n<meta property=\"og:description\" content=\"In a previous blog post of mine&nbsp;\u201cEmbracing Agility: A Practical Approach for Software Testers\u201d, I discussed how an agile team changes the role of the\" \/>\n<meta property=\"og:url\" content=\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"AI-Powered End-to-End Testing | Applitools\" \/>\n<meta property=\"article:published_time\" content=\"2018-03-26T20:25:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-08-10T17:31:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/08\/shutterstock_582394888-copy-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1590\" \/>\n\t<meta property=\"og:image:height\" content=\"1093\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Gil Tayar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gil Tayar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/\"},\"author\":{\"name\":\"Gil Tayar\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/c9e99fab0bd2081a6a36861d9ca78a12\"},\"headline\":\"Visual UI Testing as an Aid to Functional Testing\",\"datePublished\":\"2018-03-26T20:25:07+00:00\",\"dateModified\":\"2020-08-10T17:31:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/\"},\"wordCount\":1501,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/08\/shutterstock_582394888-copy-2.jpg\",\"keywords\":[\"Agile\",\"Functional Testing\",\"Technical Leaders\",\"Test Engineers\",\"Visual Testing Strategies\"],\"articleSection\":[\"Advanced Topics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/\",\"name\":\"Functional Testing Needs Visual UI Testing | Applitools\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/08\/shutterstock_582394888-copy-2.jpg\",\"datePublished\":\"2018-03-26T20:25:07+00:00\",\"dateModified\":\"2020-08-10T17:31:30+00:00\",\"description\":\"Your application functional testing ensures that the output of an executed test matches expectations. Assert visually to validate what your users see.\",\"breadcrumb\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#primaryimage\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/08\/shutterstock_582394888-copy-2.jpg\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/08\/shutterstock_582394888-copy-2.jpg\",\"width\":1590,\"height\":1093},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Advanced Topics\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/blog\/category\/advanced-topics\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Visual UI Testing as an Aid to Functional Testing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/\",\"name\":\"Applitools Visual AI\",\"description\":\"Applitools delivers full end-to-end test automation with AI infused at every step.\",\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/app14743.cloudwayssites.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\",\"name\":\"Applitools\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png\",\"width\":156,\"height\":28,\"caption\":\"Applitools\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/c9e99fab0bd2081a6a36861d9ca78a12\",\"name\":\"Gil Tayar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/566240e52d34470d5e766e232d5d59a9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/566240e52d34470d5e766e232d5d59a9?s=96&d=mm&r=g\",\"caption\":\"Gil Tayar\"},\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/author\/gil_t\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Functional Testing Needs Visual UI Testing | Applitools","description":"Your application functional testing ensures that the output of an executed test matches expectations. Assert visually to validate what your users see.","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:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/","og_locale":"en_US","og_type":"article","og_title":"Visual UI Testing as an Aid to Functional Testing","og_description":"In a previous blog post of mine&nbsp;\u201cEmbracing Agility: A Practical Approach for Software Testers\u201d, I discussed how an agile team changes the role of the","og_url":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/","og_site_name":"AI-Powered End-to-End Testing | Applitools","article_published_time":"2018-03-26T20:25:07+00:00","article_modified_time":"2020-08-10T17:31:30+00:00","og_image":[{"width":1590,"height":1093,"url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/08\/shutterstock_582394888-copy-2.jpg","type":"image\/jpeg"}],"author":"Gil Tayar","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Gil Tayar","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#article","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/"},"author":{"name":"Gil Tayar","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/c9e99fab0bd2081a6a36861d9ca78a12"},"headline":"Visual UI Testing as an Aid to Functional Testing","datePublished":"2018-03-26T20:25:07+00:00","dateModified":"2020-08-10T17:31:30+00:00","mainEntityOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/"},"wordCount":1501,"commentCount":0,"publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/08\/shutterstock_582394888-copy-2.jpg","keywords":["Agile","Functional Testing","Technical Leaders","Test Engineers","Visual Testing Strategies"],"articleSection":["Advanced Topics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/","url":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/","name":"Functional Testing Needs Visual UI Testing | Applitools","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#primaryimage"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/08\/shutterstock_582394888-copy-2.jpg","datePublished":"2018-03-26T20:25:07+00:00","dateModified":"2020-08-10T17:31:30+00:00","description":"Your application functional testing ensures that the output of an executed test matches expectations. Assert visually to validate what your users see.","breadcrumb":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#primaryimage","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/08\/shutterstock_582394888-copy-2.jpg","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/08\/shutterstock_582394888-copy-2.jpg","width":1590,"height":1093},{"@type":"BreadcrumbList","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing-as-an-aid-to-functional-testing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/app14743.cloudwayssites.com\/"},{"@type":"ListItem","position":2,"name":"Advanced Topics","item":"https:\/\/app14743.cloudwayssites.com\/blog\/category\/advanced-topics\/"},{"@type":"ListItem","position":3,"name":"Visual UI Testing as an Aid to Functional Testing"}]},{"@type":"WebSite","@id":"https:\/\/app14743.cloudwayssites.com\/#website","url":"https:\/\/app14743.cloudwayssites.com\/","name":"Applitools Visual AI","description":"Applitools delivers full end-to-end test automation with AI infused at every step.","publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/app14743.cloudwayssites.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/app14743.cloudwayssites.com\/#organization","name":"Applitools","url":"https:\/\/app14743.cloudwayssites.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png","width":156,"height":28,"caption":"Applitools"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/c9e99fab0bd2081a6a36861d9ca78a12","name":"Gil Tayar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/566240e52d34470d5e766e232d5d59a9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/566240e52d34470d5e766e232d5d59a9?s=96&d=mm&r=g","caption":"Gil Tayar"},"url":"https:\/\/app14743.cloudwayssites.com\/blog\/author\/gil_t\/"}]}},"_links":{"self":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/11816"}],"collection":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/comments?post=11816"}],"version-history":[{"count":0,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/11816\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media\/20520"}],"wp:attachment":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media?parent=11816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/categories?post=11816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/tags?post=11816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}