{"id":704,"date":"2020-07-15T07:39:59","date_gmt":"2020-07-15T07:39:59","guid":{"rendered":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/?p=704"},"modified":"2020-07-15T07:40:01","modified_gmt":"2020-07-15T07:40:01","slug":"pimp-my-testautomation-part-3","status":"publish","type":"post","link":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/","title":{"rendered":"Pimp my testAUTOmation (Part 3)"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Result protocols and reports<\/h2>\n\n\n\n<p>With Selenium, as with most test automation tools, result reports can be generated. These machine-readable documents in formats such as XML or JSON are not very user-friendly, but they can be easily integrated into other tools and thus made more readable. With this blog series I want to show how important functions in Selenium can be extended or enhanced with simple means. In the first part I introduced what Selenium 4 brings and how screenshots can be used. In the second part we made a video of the test and the third part is about reports. I try to evaluate the approaches according to their added value (The Good) and their challenges (The Bad) and give useful hints (&#8230; and the Useful) if necessary.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Why do we need reports?<\/h2>\n\n\n\n<p>To answer the &#8220;why&#8221; question, I start with the &#8220;worst&#8221; case: The evaluation and audit-proof storage of all test results is mandatory in some projects, because legal or other requirements must be met. In the case of contract development, this may be a requirement of the customer. In the case of software and hardware development in the medical field, it is a mandatory requirement for approval and licensing by the authorities. But even without these specifications, reports and clear protocols offer added value for the project. They can be used to derive key figures and trends that the team needs for its retrospectives or further development.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Just a protocol&#8230;<\/h2>\n\n\n\n<p>There are many ways to generate simple machine-readable test protocols. When using automated tests (Selenium, JUnit) in Java projects, you can use <a rel=\"noreferrer noopener\" href=\"http:\/\/maven.apache.org\/surefire\/maven-surefire-plugin\/\" target=\"_blank\">Maven<\/a> to integrate the maven-surefire plugin, which creates an XML file during the build process that records the results of a test run. The XML file contains the name of the test class and all test methods, the total duration of the test execution, the duration of each test case \/ method and the test results (tests, errors, skipped, failures).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/202006_pimp_my_testautomation_3_1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"105\" src=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/202006_pimp_my_testautomation_3_1-1024x105.png\" alt=\"\" class=\"wp-image-727\" srcset=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/202006_pimp_my_testautomation_3_1-1024x105.png 1024w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/202006_pimp_my_testautomation_3_1-600x61.png 600w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/202006_pimp_my_testautomation_3_1-768x78.png 768w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/202006_pimp_my_testautomation_3_1-1536x157.png 1536w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/202006_pimp_my_testautomation_3_1-640x65.png 640w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/202006_pimp_my_testautomation_3_1-1200x123.png 1200w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/06\/202006_pimp_my_testautomation_3_1.png 1673w\" sizes=\"auto, (max-width: 639px) 98vw, (max-width: 1199px) 64vw, 770px\" \/><\/a><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">&#8230; and what do you do with it.<\/h2>\n\n\n\n<p>The machine-readable logs are usually generated automatically in the build tool and included in the result report of the build tool. Thus, Jenkins includes all results of automated testing for projects organized with Maven. In addition, most build tools have plug-ins that include the test logs or even graphically display them.<\/p>\n\n\n\n<p>The projects that need to document all of their test results usually face the problem that the test results for the different types of tests (manual, automated, etc.) are generated in different tools and therefore exist in different formats. Therefore, different test management tools offer the possibility to read in the machine-readable reports. This means that the test results of the automated tests stand next to the manual tests and can be summarized in a test report\/test report.<\/p>\n\n\n\n<p>For example, in the Jira test management plug-in Xray, the test results for JUnit and NUnit can be imported manually or automatically via a Rest API:&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/confluence.xpand-it.com\/display\/public\/XRAY\/Import+Execution+Results\" target=\"_blank\">https:\/\/confluence.xpand-it.com\/display\/public\/XRAY\/Import+Execution+Results<\/a>.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Is there more to it?<\/h2>\n\n\n\n<p>If no suitable test management tool is available or if you need a stand-alone version, I would like to introduce the&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/allure.qatools.ru\/\" target=\"_blank\">Allure Test Report<\/a>&nbsp;tool. The Allure framework is a flexible, lightweight and multilingual test report tool with the possibility to add screenshots, protocols etc. It offers a modular architecture and clear web reports with the possibility to save attachments, steps, parameters and much more. Different test frameworks are supported: JUnit4, JUnit5, Cucumber, JBehave, TestNG, &#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/06\/202006_pimp_my_testautomation_3_2.png\"><img decoding=\"async\" src=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/06\/202006_pimp_my_testautomation_3_2-600x281.png\" alt=\"Screenshot Allure Report\" class=\"wp-image-1311\"\/><\/a><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>To create better evaluation and clarity in the reports, the Allure framework uses its own annotations. This allows the results of test classes and test methods to be linked to features, epics or stories. Annotations such as @Story, @Feature or @Epic can be used to link test classes or test methods with requirements (story, epic, feature). These links can then be evaluated in the report view and statements about test coverage or project progress can be made.<\/p>\n\n\n\n<p>Furthermore, the readability of the test cases can be improved by the annotation @Step and @Attachment. We can divide our test case (@Test) into individual test methods to increase readability and reusability. With the annotation @Step of the Allure framework, these test methods or test steps can be displayed in the test log. Here @Step supports the display of a test step description of the parameters used, the step results, and attachments. This is because test steps can have texts attached in the form of strings and images in the form of byte[]. See the code example &#8230;<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Annotationen von Allure<\/strong><\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>import org.apache.commons.io.FileUtils;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.AfterEach;\nimport org.junit.jupiter.api.BeforeEach;\nimport org.junit.jupiter.api.Assertions;\n \nimport org.openqa.selenium.*;\nimport org.openqa.selenium.firefox.FirefoxDriver;\n \nimport io.qameta.allure.Allure;\nimport io.qameta.allure.Feature;\nimport io.qameta.allure.Description;\nimport io.qameta.allure.Severity;\nimport io.qameta.allure.SeverityLevel;\nimport io.qameta.allure.Step;\nimport io.qameta.allure.Attachment;\nimport io.qameta.allure.Story;\nimport io.qameta.allure.Epic;\n \nimport java.io.File;\nimport java.io.IOException;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\nimport java.util.concurrent.TimeUnit;\n \n\/**\n * Allure Framework is a flexible lightweight multi-language test report tool\n * that not only shows a very concise representation of what have been tested\n * in a neat web report form, but allows everyone participating in the development\n * process to extract maximum of useful information from everyday execution of tests.\n *\n * https:\/\/docs.qameta.io\/allure\/#_junit_5\n *\/\n@Feature(\"BMI Calculator\")\npublic class TestAllureReportAttach {\n \n    FirefoxDriver driver;\n    String url = \"https:\/\/60tools.com\/en\/tool\/bmi-calculator\";\n \n    @Test\n    @Description(\"BMI Calculator \/ Underweight \/ Male\")\n    @Severity(SeverityLevel.CRITICAL)\n    @Story(\"calc BMI\")\n    public void testUnderWeightMale() {\n        inputTestdata(\"20\", \"200\", \"20\", \"M\u00e4nnlich\");\n        clickButtonCalc();\n        compareResult(\"5\");\n    }\n \n    @Test\n    @Description(\"BMI Calculator \/ Overweight \/ Male\")\n    @Severity(SeverityLevel.BLOCKER)\n    @Story(\"calc BMI\")\n    public void testOverWeightMale() {\n        inputTestdata(\"200\", \"100\", \"20\", \"M\u00e4nnlich\");\n        clickButtonCalc();\n        compareResult(\"20\");\n    }\n \n    @BeforeEach\n    @Step(\"start FireFox and call page\")\n    public void startFirefoxWithURL() {\n        \/**\n         * What is GeckoDriver?\n         GeckoDriver is a connecting link to the Firefox browser for your scripts in Selenium.\n         GeckoDriver is a proxy which helps to communicate with the Gecko-based browsers (e.g. Firefox), for which it provides HTTP API.\n \n         Firefox's geckodriver *requires* you to specify its location.\n         *\/\n        System.setProperty(\"webdriver.gecko.driver\", \".\\\\libs\\\\geckodriver.exe\");\n         \n        driver=new FirefoxDriver();\n        driver.get(url);\n        driver.manage().timeouts().pageLoadTimeout(120, TimeUnit.SECONDS);\n    }\n \n    @Step(\"input: weight='{0}', size='{1}', age='{2}' und sex='{3}'\")\n    private void inputTestdata(String weight, String size, String age, String sex) {\n         \n        driver.findElement(By.name(\"weight\")).sendKeys(weight);\n        driver.findElement(By.name(\"size\")).sendKeys(size);\n        driver.findElement(By.name(\"age\")).sendKeys(age);\n \n         \n        WebElement gender = driver.findElement(By.name(\"sex\"));\n        gender.sendKeys(sex);\n        gender.sendKeys(Keys.RETURN);\n    }\n \n    @Step(\"click auf Calculate Body Mass Index\")\n    private void clickButtonCalc() {       \n        WebElement button = driver.findElement(By.xpath(\"\/\/*&#91;@id=\\\"toolForm\\\"]\/table\/tbody\/tr&#91;5]\/td&#91;2]\/input&#91;2]\"));\n        button.click();\n    }\n \n    @Step(\"compare with result '{0}'\")\n    private void compareResult(String result) {\n        String str2 = driver.findElement(By.xpath(\"\/\/*&#91;@id=\\\"content\\\"]\/div&#91;2]\")).getText();\n \n        System.out.println(\"str2: \" + str2);\n        attachment(str2);\n \n        System.out.println(\"getScreenshot1\");\n        \/\/make a screenshot\n        screenShot(driver, \".\\\\screenshots\\\\\" ,\"test_Oversized\");\n        System.out.println(\"getScreenshot3\");\n \n        Assertions.assertTrue(str2.contains(result));\n \n    }\n \n    @AfterEach\n    @Step(\"close\")\n    public void closeBrowser() {\n        driver.close();\n    }\n \n    @Attachment(value = \"String attachment\", type = \"text\/plain\")\n    public String attachment(String text) {\n        return \"&lt;p>\" + text + \"&lt;\/p>\";\n    }\n \n    @Attachment(value = \"4\", type = \"image\/png\")\n    private static byte&#91;] screenShot(FirefoxDriver driver, String folder, String filename) {\n \n        SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyyMMdd_HHmmss\");\n        String timestamp  = dateFormat.format(new Date());\n \n        try {\n            File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);\n            \/\/ Now you can do whatever you need to do with it, for example copy somewhere\n            FileUtils.copyFile(scrFile, new File(folder + filename + \"_\" + timestamp + \".png\"));\n            return driver.getScreenshotAs(OutputType.BYTES);\n        }\n        catch (IOException e) {\n            System.out.println(e.getMessage());\n        }\n        System.out.println(\"getScreenshot2\");\n        return new byte&#91;0];\n \n    }\n \n}<\/code><\/pre>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>&#8230; and the result in the test protocol: <\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/07\/202007_Pimp_my_TESTautomation_3_3_EN.png\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"547\" src=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/07\/202007_Pimp_my_TESTautomation_3_3_EN-600x547.png\" alt=\"screenshot results from test protocol in Allure\" class=\"wp-image-754\" srcset=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/07\/202007_Pimp_my_TESTautomation_3_3_EN-600x547.png 600w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/07\/202007_Pimp_my_TESTautomation_3_3_EN-1024x933.png 1024w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/07\/202007_Pimp_my_TESTautomation_3_3_EN-768x700.png 768w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/07\/202007_Pimp_my_TESTautomation_3_3_EN-640x583.png 640w, https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/07\/202007_Pimp_my_TESTautomation_3_3_EN.png 1111w\" sizes=\"auto, (max-width: 639px) 98vw, (max-width: 1199px) 64vw, 600px\" \/><\/a><\/figure>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>With test protocols and reports, automated test runs can be generated very easily and integrated into your own tool chain. Although this is usually associated with a little extra work, trends and problems can be identified faster and better.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong><strong>Result protocols and reports<\/strong><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>The Good<\/strong><\/td><td><strong>The Bad<\/strong><\/td><td><strong>&#8230; and the Useful<\/strong><\/td><\/tr><tr><td>\u2022 Visualization of the current status<br>\u2022 Trends and problems can be identified<br><br><\/td><td>\u2022 More effort<br>\u2022 New tools and interfaces<br>\u2022 Higher complexity<br><br><\/td><td>\u2022 Allure Test Report \u2192 <a href=\"http:\/\/allure.qatools.ru\/\" target=\"_blank\" rel=\"noreferrer noopener\">allure.qatools.ru\/<\/a><br>\u2022 Xpand Xray \u2192 <a rel=\"noreferrer noopener\" href=\"https:\/\/www.getxray.app\/\" target=\"_blank\">getxray.app\/<\/a><br>\u2022 Plugins in build tools<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>This third part of the blog series is about reports and protocols which can be used to derive key figures and trends the team needs for further development.<\/p>\n","protected":false},"author":65,"featured_media":613,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","footnotes":""},"categories":[7],"tags":[131,215,301,345],"topics":[82],"class_list":["post-704","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-quality-assurance","tag-test-automation","tag-selenium","tag-selenium-4","tag-protocols","topics-test-automation"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Pimp my testAUTOmation (Part 3) - ZEISS Digital Innovation Blog<\/title>\n<meta name=\"description\" content=\"This third part of the blog series is about reports and protocols which can be used to derive key figures and trends the team needs for further development.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pimp my testAUTOmation (Part 3) - ZEISS Digital Innovation Blog\" \/>\n<meta property=\"og:description\" content=\"This third part of the blog series is about reports and protocols which can be used to derive key figures and trends the team needs for further development.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Digital Innovation Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-15T07:39:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-15T07:40:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/06\/202006_pimp_my_testautomation.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"806\" \/>\n\t<meta property=\"og:image:height\" content=\"439\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kay Grebenstein\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kay Grebenstein\" \/>\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\":\"WebPage\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/\",\"name\":\"Pimp my testAUTOmation (Part 3) - ZEISS Digital Innovation Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/06\/202006_pimp_my_testautomation.jpg\",\"datePublished\":\"2020-07-15T07:39:59+00:00\",\"dateModified\":\"2020-07-15T07:40:01+00:00\",\"author\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/6dc424ee6360e5a9547865996d0aca1d\"},\"description\":\"This third part of the blog series is about reports and protocols which can be used to derive key figures and trends the team needs for further development.\",\"breadcrumb\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/#primaryimage\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/06\/202006_pimp_my_testautomation.jpg\",\"contentUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/06\/202006_pimp_my_testautomation.jpg\",\"width\":806,\"height\":439},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pimp my testAUTOmation (Part 3)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#website\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/\",\"name\":\"Digital Innovation Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/6dc424ee6360e5a9547865996d0aca1d\",\"name\":\"Kay Grebenstein\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/05\/grebenstein_kay-1-150x150.jpg\",\"contentUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/05\/grebenstein_kay-1-150x150.jpg\",\"caption\":\"Kay Grebenstein\"},\"description\":\"Kay Grebenstein worked as a tester and agile QA coach for ZEISS Digital Innovation, Dresden. He ensured quality and tested software in projects in various specialist domains (telecommunications, industry, mail order, energy, ...). He still shares his experiences at conferences, meetups and in publications of various kinds.\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/author\/enkaygrebenstein\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pimp my testAUTOmation (Part 3) - ZEISS Digital Innovation Blog","description":"This third part of the blog series is about reports and protocols which can be used to derive key figures and trends the team needs for further development.","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:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/","og_locale":"en_US","og_type":"article","og_title":"Pimp my testAUTOmation (Part 3) - ZEISS Digital Innovation Blog","og_description":"This third part of the blog series is about reports and protocols which can be used to derive key figures and trends the team needs for further development.","og_url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/","og_site_name":"Digital Innovation Blog","article_published_time":"2020-07-15T07:39:59+00:00","article_modified_time":"2020-07-15T07:40:01+00:00","og_image":[{"width":806,"height":439,"url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/06\/202006_pimp_my_testautomation.jpg","type":"image\/jpeg"}],"author":"Kay Grebenstein","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kay Grebenstein","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/","name":"Pimp my testAUTOmation (Part 3) - ZEISS Digital Innovation Blog","isPartOf":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/#primaryimage"},"image":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/06\/202006_pimp_my_testautomation.jpg","datePublished":"2020-07-15T07:39:59+00:00","dateModified":"2020-07-15T07:40:01+00:00","author":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/6dc424ee6360e5a9547865996d0aca1d"},"description":"This third part of the blog series is about reports and protocols which can be used to derive key figures and trends the team needs for further development.","breadcrumb":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/#primaryimage","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/06\/202006_pimp_my_testautomation.jpg","contentUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/06\/202006_pimp_my_testautomation.jpg","width":806,"height":439},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/pimp-my-testautomation-part-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/"},{"@type":"ListItem","position":2,"name":"Pimp my testAUTOmation (Part 3)"}]},{"@type":"WebSite","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#website","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/","name":"Digital Innovation Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/6dc424ee6360e5a9547865996d0aca1d","name":"Kay Grebenstein","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/image\/","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/05\/grebenstein_kay-1-150x150.jpg","contentUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2020\/05\/grebenstein_kay-1-150x150.jpg","caption":"Kay Grebenstein"},"description":"Kay Grebenstein worked as a tester and agile QA coach for ZEISS Digital Innovation, Dresden. He ensured quality and tested software in projects in various specialist domains (telecommunications, industry, mail order, energy, ...). He still shares his experiences at conferences, meetups and in publications of various kinds.","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/author\/enkaygrebenstein\/"}]}},"author_meta":{"display_name":"Kay Grebenstein","author_link":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/author\/enkaygrebenstein\/"},"featured_img":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2020\/06\/202006_pimp_my_testautomation-600x327.jpg","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">Quality Assurance<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Quality Assurance<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">test automation<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">Selenium<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">Selenium 4<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/quality-assurance\/\" class=\"advgb-post-tax-term\">protocols<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">test automation<\/span>","<span class=\"advgb-post-tax-term\">Selenium<\/span>","<span class=\"advgb-post-tax-term\">Selenium 4<\/span>","<span class=\"advgb-post-tax-term\">protocols<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 6 years ago","modified":"Updated 6 years ago"},"absolute_dates":{"created":"Posted on July 15, 2020","modified":"Updated on July 15, 2020"},"absolute_dates_time":{"created":"Posted on July 15, 2020 7:39 am","modified":"Updated on July 15, 2020 7:40 am"},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/posts\/704","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/comments?post=704"}],"version-history":[{"count":10,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/posts\/704\/revisions"}],"predecessor-version":[{"id":760,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/posts\/704\/revisions\/760"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/media\/613"}],"wp:attachment":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/media?parent=704"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/categories?post=704"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/tags?post=704"},{"taxonomy":"topics","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/topics?post=704"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}