tag:blogger.com,1999:blog-50084071203595492102024-02-26T12:13:21.140-08:00QA by PassionYagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.comBlogger32125tag:blogger.com,1999:blog-5008407120359549210.post-351876990410472182016-08-11T04:33:00.001-07:002016-08-11T04:33:18.036-07:00JIRA Customization - Jenkins Integration for running Automated Tests<div dir="ltr" style="text-align: left;" trbidi="on">
<span id="docs-internal-guid-fb27e7d0-7956-1e05-cc2e-26699e02b554"></span><br />
<h3 style="text-align: left;">
<span style="color: #4d4f53; font-family: Arial;"><span style="line-height: 19.2px;">Goals </span></span></h3>
<div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="color: #4d4f53; font-family: Arial; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 4pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Get all issues of given Filter</span></div>
</li>
<li dir="ltr" style="color: #4d4f53; font-family: Arial; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Get custom field from every Test Case</span></div>
</li>
<li dir="ltr" style="color: #4d4f53; font-family: Arial; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Maintain a Map of JIRA ID to Custom Field</span></div>
</li>
<li dir="ltr" style="color: #4d4f53; font-family: Arial; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Create a TestNG XML suite Programmatically and run it</span></div>
</li>
<li dir="ltr" style="color: #4d4f53; font-family: Arial; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Get results programmatically from TestNG</span></div>
</li>
<li dir="ltr" style="color: #4d4f53; font-family: Arial; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Update the issues by using Reverse mapping of Custom Field to JIRA ID</span></div>
</li>
</ul>
<div>
<span style="color: #4d4f53; font-family: Arial;"><span style="line-height: 19.2px; white-space: pre-wrap;"><br /></span></span></div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0cEJSRhYdgPq6VIAzP243DwVGB-rpH7lQJDzKBDgdw0ctG24QwhqpDeLG6JSqzIN_DfRV6NY629K_MBnR21tZ3BK1oSXDW5mNWGTsJds-Mf242pSrm_RQMLP-HbnOMcJuRhIxkxcv8oHT/s1600/Screen+Shot+2016-08-11+at+5.00.24+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0cEJSRhYdgPq6VIAzP243DwVGB-rpH7lQJDzKBDgdw0ctG24QwhqpDeLG6JSqzIN_DfRV6NY629K_MBnR21tZ3BK1oSXDW5mNWGTsJds-Mf242pSrm_RQMLP-HbnOMcJuRhIxkxcv8oHT/s400/Screen+Shot+2016-08-11+at+5.00.24+PM.png" width="400" /></a></div>
<h3 style="text-align: left;">
How to Achieve</h3>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 4pt;">
<span style="background-color: transparent; color: #0098db; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><a href="https://github.com/rcarz/jira-client" style="text-decoration: none;">https://github.com/rcarz/jira-client</a></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Create a Filter </span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">project = MFS AND issuetype = "Test Case" AND "Test Cycle" = "Version 4.0 - Cycle 1" AND "Automation Status" = Automated AND status = "In Progress"</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Build jar from the code at the end of this Post and run on Jenkins. </span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This code needs following inputs</span></div>
</li>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">JIRA URL</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">JIRA Credentials</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Filter like “filter=10112”</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #4d4f53; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">customField="customfield_10032"</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: #cc0000; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cc0000; font-family: Arial; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Note: You can get custom field name from JIRA Rest API and this name is different from what you see in JIRA UI</span></div>
</li>
</ul>
</ul>
<div>
<span id="docs-internal-guid-fa3a287a-7956-376a-aa0f-53184b2d1161"><div>
<span style="color: #4d4f53; font-family: Arial;"><span style="line-height: 19.2px; white-space: pre-wrap;"><br /></span></span></div>
<div>
<span id="docs-internal-guid-315cb701-7956-722b-14d5-260cb5e9de3e"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">package com.company.qa.project.test;</span></span></div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import java.util.ArrayList;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import java.util.Arrays;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import java.util.Collection;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import java.util.HashMap;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import java.util.List;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import java.util.Map;</span></span></div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import org.testng.IReporter;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import org.testng.ISuite;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import org.testng.ISuiteResult;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import org.testng.ITestContext;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import org.testng.ITestResult;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import org.testng.TestNG;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import org.testng.xml.XmlClass;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import org.testng.xml.XmlInclude;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import org.testng.xml.XmlSuite;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import org.testng.xml.XmlTest;</span></span></div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import net.rcarz.jiraclient.BasicCredentials;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import net.rcarz.jiraclient.Field;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import net.rcarz.jiraclient.Issue;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import net.rcarz.jiraclient.JiraClient;</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">import net.rcarz.jiraclient.JiraException;</span></span></div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">public class JIRATest implements IReporter{</span></span></div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">ArrayList<String> failedTests = new ArrayList<String>();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Collection<String> passedTests = new ArrayList<String>();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Collection<String> skippedTests = new ArrayList<String>();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">BasicCredentials creds = new BasicCredentials("username@mail.com", "password");</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">JiraClient jira = new JiraClient("https://domain.atlassian.net", creds);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">String filter = "filter=10112";</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">String customField = "customfield_10032";</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> public static void main(String[] args) {</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">JIRATest jiraTest = new JIRATest();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">jiraTest.runTests();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> public void runTests(){</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> TestNG testNG = new TestNG();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> XmlSuite suite = new XmlSuite();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> suite.setName( "MFS Automated Suite" );</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> XmlTest xmlTest = new XmlTest(suite);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> xmlTest.setName( "MFS Autmation Test" );</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> xmlTest.setVerbose( 0 );</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> List<Class> ListenerClasses = new ArrayList<Class>();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> ListenerClasses.add(<span style="line-height: 14.4px;">com.company.qa.project.test</span>.JIRATest.class);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> testNG.setListenerClasses(ListenerClasses);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> try {</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">HashMap<String,ArrayList<String>> map = new HashMap<String,ArrayList<String>>();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> /* Retrieve issue TEST-123 from JIRA. We'll get an exception if this fails. */</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> Issue.SearchResult sr = jira.searchIssues(filter);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> System.out.println("Total number of Tests to be run: " + sr.total);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> for (Issue i : sr.issues){</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> /* Pretend customfield_1234 is a text field. Get the raw field value... */</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> Object cfvalue = i.getField(customField);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> /* ... Convert it to a string and then print the value. */</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> String[] cfstrings = Field.getString(cfvalue).trim().split("#");</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> if(cfstrings.length == 2){</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">ArrayList<String> methods = map.get(cfstrings[0]);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">if(null == methods){</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">methods = new ArrayList<String>();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">methods.add(cfstrings[1]);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">}else{</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">methods.add(cfstrings[1]);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">}</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">map.put(cfstrings[0], methods);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> for (Map.Entry<String,ArrayList<String>> entry : map.entrySet()) {</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> String key = entry.getKey();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> ArrayList<String> methods = entry.getValue();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> XmlClass xmlClass = new XmlClass(key);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> xmlTest.getClasses().add(xmlClass);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> for(String method: methods){</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> XmlInclude xmlInclude = new XmlInclude(method);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> xmlClass.getIncludedMethods().add(xmlInclude);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> System.out.println("Running Tests using command ..");</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> List<XmlTest> tests = suite.getTests();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> for(XmlTest test: tests){</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">List<XmlClass> classes = test.getClasses();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">for(XmlClass xmlClass: classes){</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">List<XmlInclude> methods = xmlClass.getIncludedMethods();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">for(XmlInclude xmlInclude : methods){</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">System.out.println("Class: "+xmlClass.getName()+" Method: "+xmlInclude.getName() );</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">}</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">}</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> testNG.setXmlSuites( Arrays.asList( suite ) );</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> testNG.setUseDefaultListeners( false );</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> testNG.run();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> } catch (JiraException ex) {</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> System.err.println(ex.getMessage());</span></span></div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> if (ex.getCause() != null)</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> System.err.println(ex.getCause().getMessage());</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> }</span></span></div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">@Override</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> //Iterating over each suite included in the test</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">try{</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> HashMap<String,String> mapOfTCAndMethods = new HashMap<String,String>();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Issue.SearchResult srlt = jira.searchIssues(filter);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> System.out.println("Total number of Tests to be run: " + srlt.total);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> for (Issue i : srlt.issues){</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> /* Pretend customfield_1234 is a text field. Get the raw field value... */</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> Object cfvalue = i.getField(customField);</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> /* ... Convert it to a string and then print the value. */</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> String[] cfstrings = Field.getString(cfvalue).trim().split("#");</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> if(cfstrings.length == 2){</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">mapOfTCAndMethods.put(Field.getString(cfvalue).trim(),i.getKey());</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> for (ISuite suite : suites) {</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> //Following code gets the suite name</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> String suiteName = suite.getName();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> //Getting the results for the said suite</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> Map<String,ISuiteResult> suiteResults = suite.getResults();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> for (ISuiteResult sr : suiteResults.values()) {</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> ITestContext tc = sr.getTestContext();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> System.out.println("Passed tests for suite '" + suiteName +</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> "' is:" + tc.getPassedTests().getAllResults().size());</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> System.out.println("Passed Tests : ");</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> for (ITestResult s : tc.getPassedTests().getAllResults()) {</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">System.out.println("Marking "+mapOfTCAndMethods.get(s.getTestClass().getName()+"#"+s.getMethod().getMethodName())+" as Passed ...");</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Issue issue = jira.getIssue(mapOfTCAndMethods.get(s.getTestClass().getName()+"#"+s.getMethod().getMethodName()));</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">issue.transition().execute("Pass");</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> System.out.println("Failed Tests : ");</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> for (ITestResult s : tc.getFailedTests().getAllResults()) {</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">System.out.println("Marking "+mapOfTCAndMethods.get(s.getTestClass().getName()+"#"+s.getMethod().getMethodName())+" as Failed ...");</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">Issue issue = jira.getIssue(mapOfTCAndMethods.get(s.getTestClass().getName()+"#"+s.getMethod().getMethodName()));</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">issue.transition().execute("Fail");</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> System.out.println("Failed tests for suite '" + suiteName +</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> "' is:" + </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> tc.getFailedTests().getAllResults().size());</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> System.out.println("Skipped tests for suite '" + suiteName +</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> "' is:" + </span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> tc.getSkippedTests().getAllResults().size());</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;"> }</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">}catch(Exception e){</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">e.printStackTrace();</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">}</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="font-family: Courier New, Courier, monospace;"><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;">}</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span style="color: #4d4f53; font-size: 12px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Courier New, Courier, monospace;">}</span></span></div>
</span></div>
<div>
<span>~Yagna</span></div>
</span></div>
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-48659026332168485792016-08-10T08:31:00.000-07:002016-08-11T04:19:34.800-07:00Test Case Management using JIRA Customization - Version 2.0<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "times" , "times new roman" , serif;">In the last Post we have seen how we can do Test Management by creating a Custom field "Test Status at Build". But due to change in requirements I tried another approach.</span><br />
<span style="font-family: "times" , "times new roman" , serif;"><br /></span>
<span style="font-family: "times" , "times new roman" , serif;"> Now go to Issues page from JIRA Administration->Issues as shown in below picture</span><br />
<span style="font-family: "times" , "times new roman" , serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjUPpYUOG9ozZfUmnAsH629ReVPi7E1difNEawZvpGL84JsmfFRSZRNKOWziUwl68MPz0HnToazOSPYAVGdK6whBMX8_Zg2xbMboemAFYXyKJMMedE8EFLonkEUhb8kEg1KBAIgasNKELA/s1600/Screen+Shot+2016-08-05+at+4.41.52+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black; font-family: "times" , "times new roman" , serif;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjUPpYUOG9ozZfUmnAsH629ReVPi7E1difNEawZvpGL84JsmfFRSZRNKOWziUwl68MPz0HnToazOSPYAVGdK6whBMX8_Zg2xbMboemAFYXyKJMMedE8EFLonkEUhb8kEg1KBAIgasNKELA/s320/Screen+Shot+2016-08-05+at+4.41.52+PM.png" width="232" /></span></a></div>
<span style="font-family: "times" , "times new roman" , serif;"><br /></span>
<span style="font-family: "times" , "times new roman" , serif;">Then Add Issue Type like below</span><br />
<span style="font-family: "times" , "times new roman" , serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJIniVxLFHXuL6tXRn2rBZDRuZwVQCGaparoimABkAnLN9W6f6EqcDNPnKNbch2t_v3gQrnQRMBPAO8t_L3n4NMYpW2j10vCOiS60XnAlE5sCmnc0ykLmP4m-7VNkKiXTXmz_qSFmOhiAT/s1600/Screen+Shot+2016-08-05+at+4.42.52+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black; font-family: "times" , "times new roman" , serif;"><img border="0" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJIniVxLFHXuL6tXRn2rBZDRuZwVQCGaparoimABkAnLN9W6f6EqcDNPnKNbch2t_v3gQrnQRMBPAO8t_L3n4NMYpW2j10vCOiS60XnAlE5sCmnc0ykLmP4m-7VNkKiXTXmz_qSFmOhiAT/s320/Screen+Shot+2016-08-05+at+4.42.52+PM.png" width="320" /></span></a></div>
<span style="font-family: "times" , "times new roman" , serif;">Now go to Issue Type Schema and associate it with some Issue Type Schema</span><br />
<span style="font-family: "times" , "times new roman" , serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD2GOUqnVF4dt-If_eN-OwcvF9Lc01_mjFP0yVOUX1-4W7jI6EFU7jJlY-8m_V1nPfeYJAw89_yCA2NvwnTZ4nG92cG1N0GmGzTYRex4Jqudb-tF4h9VnrBBtggZXmYE7_sUrSgYvN-WUp/s1600/Screen+Shot+2016-08-05+at+4.45.08+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black; font-family: "times" , "times new roman" , serif;"><img border="0" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD2GOUqnVF4dt-If_eN-OwcvF9Lc01_mjFP0yVOUX1-4W7jI6EFU7jJlY-8m_V1nPfeYJAw89_yCA2NvwnTZ4nG92cG1N0GmGzTYRex4Jqudb-tF4h9VnrBBtggZXmYE7_sUrSgYvN-WUp/s400/Screen+Shot+2016-08-05+at+4.45.08+PM.png" width="400" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;">Now go to Workflows and Import from Marketplace a new Workflow called "Test Case Management Workflow" </span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXKTgglNUMCrUhyphenhyphenJLOfhmE4-7ahQjR4ChGEMWYOtUFTYASvRhQ63yQhMrWLv2Pottm1SyAlcRJ5D9KWGmZ1d9HXImkdUseAADilNS6ri5mvr_6ffPyIVJYrLX4LT83ZYSkmmh_hSfxdyvg/s1600/Screen+Shot+2016-08-05+at+4.47.33+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black; font-family: "times" , "times new roman" , serif;"><img border="0" height="40" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXKTgglNUMCrUhyphenhyphenJLOfhmE4-7ahQjR4ChGEMWYOtUFTYASvRhQ63yQhMrWLv2Pottm1SyAlcRJ5D9KWGmZ1d9HXImkdUseAADilNS6ri5mvr_6ffPyIVJYrLX4LT83ZYSkmmh_hSfxdyvg/s200/Screen+Shot+2016-08-05+at+4.47.33+PM.png" width="200" /></span></a></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;">Assign this workflow to Workflow Scheme at Workflow Schemes and Assign "Test Case" issue type to this Workflow Scheme</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU7hB64H-r3PvIngWvvDEll8n8SvjIMuw-B_5-MDWOHX2sgbLpmaxUGUaox4gTcnIlbJfY6qieAkbL9lsYzXr8SS6IizvCR9ltCTnRKfTx2XaqCmJMJM2s8E1OyhHelxtBkNdBNJthRvl9/s1600/Screen+Shot+2016-08-05+at+4.51.55+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black; font-family: "times" , "times new roman" , serif;"><img border="0" height="125" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU7hB64H-r3PvIngWvvDEll8n8SvjIMuw-B_5-MDWOHX2sgbLpmaxUGUaox4gTcnIlbJfY6qieAkbL9lsYzXr8SS6IizvCR9ltCTnRKfTx2XaqCmJMJM2s8E1OyhHelxtBkNdBNJthRvl9/s400/Screen+Shot+2016-08-05+at+4.51.55+PM.png" width="400" /></span></a></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;">Add a new Screen </span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjctEs9zLCp4eQWEt1_IFWBL4ajHA5I0TGr1uzlFUbaNkY74HDLS0a84pAtzAm9i_m4s80D2XPBPbse07uyzRpKvruI358jqNb8phtBsoQMwuR3LVRJFUf5dKRODfYlLdjieDou9ed2R7W3/s1600/Screen+Shot+2016-08-05+at+4.56.15+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black; font-family: "times" , "times new roman" , serif;"><img border="0" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjctEs9zLCp4eQWEt1_IFWBL4ajHA5I0TGr1uzlFUbaNkY74HDLS0a84pAtzAm9i_m4s80D2XPBPbse07uyzRpKvruI358jqNb8phtBsoQMwuR3LVRJFUf5dKRODfYlLdjieDou9ed2R7W3/s400/Screen+Shot+2016-08-05+at+4.56.15+PM.png" width="400" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;">Now Add a New Screen Scheme</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1EEvDYgRk9Cfkzyb9tcdRvKI37mWMYvMQ00NW4prbpIuL5WKxrIPlmQv9ZCXsZPL_TskO6vXT3usiYXn-JBtUyV4eIM2XJW5gxB5USpHf8aY0PKYkdIjJziLdGQdqU8oThIkK00TNjtv1/s1600/Screen+Shot+2016-08-05+at+4.57.33+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black; font-family: "times" , "times new roman" , serif;"><img border="0" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1EEvDYgRk9Cfkzyb9tcdRvKI37mWMYvMQ00NW4prbpIuL5WKxrIPlmQv9ZCXsZPL_TskO6vXT3usiYXn-JBtUyV4eIM2XJW5gxB5USpHf8aY0PKYkdIjJziLdGQdqU8oThIkK00TNjtv1/s400/Screen+Shot+2016-08-05+at+4.57.33+PM.png" width="400" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;">Associate Issue Type with a Screen Scheme</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg93_SAHgS5NQfB_yU4vn_tDjZBvJELgk5pyTFujYTlmsJ8YeJLv5La7hEW2SSN72UAV3nUxKvADOnjrqlQWYjOYE0VvU60KoizZjnX3eVYuf3r64FUosIRKEfZ46aOYj6ZPaePEHadzgWZ/s1600/Screen+Shot+2016-08-05+at+4.58.23+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black; font-family: "times" , "times new roman" , serif;"><img border="0" height="138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg93_SAHgS5NQfB_yU4vn_tDjZBvJELgk5pyTFujYTlmsJ8YeJLv5La7hEW2SSN72UAV3nUxKvADOnjrqlQWYjOYE0VvU60KoizZjnX3eVYuf3r64FUosIRKEfZ46aOYj6ZPaePEHadzgWZ/s400/Screen+Shot+2016-08-05+at+4.58.23+PM.png" width="400" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;">Create following Custom Fields and associate with Screens</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4UPg-cxhUeYggAAVbys6lCLX0aDyHUO9X6UxmEzjFJyULbZDiptj1BdawSI1MFkDk2siq6o82bZZmooNgJqV0qczdpO6wL-YJ72D-TS9d8LCdyog0wwfkAC7c2DsAILNtSJ_NKzNTkIEZ/s1600/Screen+Shot+2016-08-10+at+8.43.51+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: black; font-family: "times" , "times new roman" , serif;"><img border="0" height="242" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4UPg-cxhUeYggAAVbys6lCLX0aDyHUO9X6UxmEzjFJyULbZDiptj1BdawSI1MFkDk2siq6o82bZZmooNgJqV0qczdpO6wL-YJ72D-TS9d8LCdyog0wwfkAC7c2DsAILNtSJ_NKzNTkIEZ/s400/Screen+Shot+2016-08-10+at+8.43.51+PM.png" width="400" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "times" , "times new roman" , serif;">Project/Component/Story</span></div>
<div class="separator" style="clear: both;">
</div>
<ul style="text-align: left;">
<li><span style="font-family: "times" , "times new roman" , serif;">In JIRA Project will be top level entity</span></li>
<li><span style="font-family: "times" , "times new roman" , serif;">Every Project will be having several Components</span></li>
<li><span style="font-family: "times" , "times new roman" , serif;">Stories will be created per Project and will be associated with one or more Components</span></li>
</ul>
<div>
<span style="font-family: "times" , "times new roman" , serif;">New IssueType called Test Case added into JIRA with CFs </span></div>
<div>
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span id="docs-internal-guid-a50e19e7-7506-72a7-9c79-04ac2203c1b5" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "times" , "times new roman" , serif;"><img alt="Screen Shot 2016-08-10 at 6.49.32 PM.png" height="258" src="https://lh6.googleusercontent.com/drN_lvVLi4cbeYWAugAzdzXsqouxxvwDfXPyVgudf0VULCvHiqKveNwMrNeTX-v-h5xlpGZMAeanN7A3pnsNIqRPGQoZ8YKA_TvWOV3FgQq8PkMsV1o81v9uosJ47IMLYPAj68Djrck" width="400" /></span></span></div>
<div style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: left;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: left;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Requirement Traceability</span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<b id="docs-internal-guid-fcb50469-7507-b9d0-cf4a-7ca6cebf06a2" style="font-weight: normal;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></b></div>
<div style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-align: left; text-indent: -9pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Test Case should be linked to Requirement </span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<b style="font-weight: normal;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></b></div>
<a href="https://lh6.googleusercontent.com/G67ad00hpZVChbNsu1bf_6JWJKhUJRY-86d9GFvskvoIqK-HFRj-Dk1mGU0DqFy5m4qw7t8nECI4VQRUcVCA1yMt64-MhZCpcGjMQOQ-AqpYyxaZ8tBR62hkfvJ19J1I07xih36CQ3U" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="color: black; font-family: "times" , "times new roman" , serif;"><img alt="Screen Shot 2016-08-10 at 6.48.18 PM.png" border="0" height="80" src="https://lh6.googleusercontent.com/G67ad00hpZVChbNsu1bf_6JWJKhUJRY-86d9GFvskvoIqK-HFRj-Dk1mGU0DqFy5m4qw7t8nECI4VQRUcVCA1yMt64-MhZCpcGjMQOQ-AqpYyxaZ8tBR62hkfvJ19J1I07xih36CQ3U" width="400" /></span></a><span style="font-family: "times" , "times new roman" , serif;"><b style="font-weight: normal;"><br /></b><b style="font-weight: normal;"><br /></b><b style="font-weight: normal;"><br /></b></span><br />
<br />
<div style="line-height: 1.2; margin-bottom: 0pt; margin-top: 4pt; text-align: left;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div style="line-height: 1.2; margin-bottom: 0pt; margin-top: 4pt; text-align: left;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div style="line-height: 1.2; margin-bottom: 0pt; margin-top: 4pt; text-align: left;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div style="line-height: 1.2; margin-bottom: 0pt; margin-top: 4pt; text-align: left;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;"> This allows Requirement Traceability</span></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;"><br /><img alt="Screen Shot 2016-08-10 at 6.47.01 PM.png" height="111" src="https://lh5.googleusercontent.com/eM42niUDXiM8XjdcAmhb9L5GVetE9x7fOWF53Idz_MaZK6gYdbK7XMTyn5sFFcJTwaxEGCfmoUzguedxH_3aM0Ju3rR9OLI7y4f23B9QVxsRCrcgOFsGxQuNykKCKJRJYKJPlCkotoA" width="400" /></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Test Cases for Different Platforms(OS)</span></span></div>
<div class="separator" style="clear: both;">
<span id="docs-internal-guid-fcb5048a-7508-f0a3-c84b-8a9b6d7ea6ce"><span style="font-family: "times" , "times new roman" , serif;"><br /><img alt="Screen Shot 2016-08-10 at 3.55.43 PM.png" height="32" src="https://lh6.googleusercontent.com/NcCtPtigEUB4cGDKCipXaW61T1t4cx0fWlvvcShyMTuZDO_kWKJO3Sy24V4WrfVzo6D_qR5Rn8g36P8PGfXvVIv_Cm420nHLriAxas4EppzJ6oNog7T8FAUXshGuVAXWGZc-2UicoUA" width="400" /><img alt="Screen Shot 2016-08-10 at 3.57.06 PM.png" height="140" src="https://lh5.googleusercontent.com/5IuVKQo1LCUGh6IToLtp8oIoDhcfCt7zgG3LX1RvNkQKBcaYPCF0fBU3_Y-6RYbGiglxX3mC4cWFr_60-Fg2TP9RMEk2HGtKdY5FixSAgH8YEKGaCkMD1U0JM59d8RtgkxyXiZhugbk" width="400" /></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Test Cases for Different Platforms(OS)</span></span></div>
<div class="separator" style="clear: both;">
<b id="docs-internal-guid-fcb50470-7509-41d3-01c1-864544fc351f" style="font-weight: normal;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></b></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 4pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Create Test Case for a Platform and upon review Clone them if Test Steps are same for all the Platforms</span></span></div>
</li>
<li dir="ltr" style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Create Different Test Cases for different Platforms if they are platform dependent Test Cases</span></span></div>
</li>
<li dir="ltr" style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Link a Test Case of different Environments</span></span></div>
</li>
</ul>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;"><br /><img alt="Screen Shot 2016-08-10 at 3.58.21 PM.png" height="138px;" src="https://lh5.googleusercontent.com/ldZNosGldtXLT62BsoHr0ubHzNbYvGlNIOA1t_G8_bC-lndrmC_RhIZtzehkjlgCEIui9dbgCeH8Ele7KPGA22juGWbC4tEgcURh-pSFXrLGLBJw4ucsJDfWO-P_ARxnEe2v3STjwC8" width="414px;" /></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Test cycle creation</span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div class="separator" style="clear: both;">
<span id="docs-internal-guid-fcb504a7-7509-7a13-37e3-7547e9697048"><span style="font-family: "times" , "times new roman" , serif;"><img alt="Screen Shot 2016-08-10 at 4.01.08 PM.png" height="241" src="https://lh5.googleusercontent.com/-dmZD9VSaJrxAar9SXWXODmZVTKO9bbGCT6mfh8m5-TWhETw4xzyMAiYXBdleQKaTYtCayyFkyykOMyyXDt09LyQpMJkLUDe46beX5UKsiTM3TE9zVQbSxPiBApTfwVulC7lofCn_UA" width="400" /></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Clone Regression Tests from Previous Test Cycle</span></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="margin-bottom: 0pt; margin-top: 4pt;">
<span style="font-family: "times" , "times new roman" , serif;"><span style="line-height: 19.2px; white-space: pre-wrap;">Get All Test Cases from Test Case Repository which are not invalid</span></span></div>
</li>
<li dir="ltr" style="background-color: transparent; list-style-type: disc; vertical-align: baseline;"><span style="font-family: "times" , "times new roman" , serif;"><span style="line-height: 19.2px; white-space: pre-wrap;">Clone them</span></span></li>
<li dir="ltr" style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="font-family: "times" , "times new roman" , serif; line-height: 1.2; white-space: pre-wrap;">Change the Test Cycle and Assign them</span></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<span id="docs-internal-guid-fcb504ae-750a-2552-8252-1e71511e6203" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "times" , "times new roman" , serif;"></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: left;">
<span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: left;">
<span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;">Assign Test Cases for Execution - </span><span style="line-height: 1.2; text-indent: -9pt; white-space: pre-wrap;">Using JQL and Bulk Upload</span></span></div>
<div style="text-align: left;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: "times" , "times new roman" , serif;"><img alt="Screen Shot 2016-08-10 at 4.03.30 PM.png" height="176" src="https://lh5.googleusercontent.com/hGjUsevehiGPND_hGEylKuiLE1zg9wchNO-EXe3WWAObZ05huEmJPdi6pPDXlgrom3ruhUGGRXUq0BMBH-Of3VobKdlgXUBnPMxfY8rRSf5L3-iasCJyYEoqGBF35Een1HPzd7OcdOk" width="400" /></span></div>
<div style="text-align: left;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Test case assignment for automation</span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="margin-left: 1em; margin-right: 1em;"><b id="docs-internal-guid-fcb504c9-750a-a6a7-6344-4027beaee4bd" style="font-weight: normal;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></b></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 4pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Change Automation Status as “To be Automated” in Test Case</span></span></div>
</li>
<li dir="ltr" style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Create a Sub-Task for Test Case</span></span></div>
</li>
<li dir="ltr" style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Add to appropriate Test Cycle </span></span></div>
</li>
<li dir="ltr" style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Assign it to a QA Engineer</span></span></div>
</li>
</ul>
<div class="separator" style="clear: both; text-align: left;">
<span style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div>
</div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Test cycle execution assignments</span></span></div>
<div class="separator" style="clear: both;">
<span id="docs-internal-guid-fcb504e4-750c-6e70-1941-8c5f3188d1a2"><span style="font-family: "times" , "times new roman" , serif;"><img alt="Screen Shot 2016-08-10 at 4.07.31 PM.png" height="149" src="https://lh5.googleusercontent.com/VQ2EiiL5si9VLZbRe_jqpbHqgf1bju6RLNZcDSP8npyJV5ZkSPRuje8pMFFfK1iljY6yqZN2__P3MiFCJY70TY6KpdQdqgNXt44VRrRH3RCb7qlMBLIg_cxU3KuvksqDLjq8qes018I" width="400" /></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Automation assignments</span></span></div>
<div class="separator" style="clear: both;">
<span id="docs-internal-guid-fcb504ea-750d-92e0-ec09-2d0ed5c6ba49"><span style="font-family: "times" , "times new roman" , serif;"><img alt="Screen Shot 2016-08-10 at 4.09.27 PM.png" height="99" src="https://lh5.googleusercontent.com/EOJVI1powqVq-TsCiDpEAZPWbm5Tx3TgJ1qxYiqfqmlbqVSYtle3P2FELJRy8zaoc0Gepfscgstyh3V50NV8O7VPVHpjvGFPVfFpQDCf1CT8Jat-Oor3OBAtakJHIb-uPCn0_l20Vi8" width="400" /></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">User Dashboard</span></span></div>
<div class="separator" style="clear: both;">
<span id="docs-internal-guid-fcb50506-750d-c1c2-9b46-5ac5bf8e5270"><span style="font-family: "times" , "times new roman" , serif;"><img alt="Screen Shot 2016-08-10 at 4.14.01 PM.png" height="128" src="https://lh5.googleusercontent.com/8qLiUyMm3dUFnCvnTh-werKL0gvZbvJoqMubAjTXYlzktYC44nG7PTC7v9TDNjoeFCl45j0ZWu-Z6oe4hAsnNHns-Y1nUMtUdjnl-14Us4i_vWfZKQ8u2LLpO89W9lmxg3X0fLg4-uc" width="400" /></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Test Execution</span></span></div>
<div class="separator" style="clear: both;">
<span id="docs-internal-guid-fcb50521-750d-f5e9-0b45-fa0a44275f94"><span style="font-family: "times" , "times new roman" , serif;"><img alt="Screen Shot 2016-08-10 at 4.15.58 PM.png" height="400" src="https://lh4.googleusercontent.com/lm2_2Ku1ANzRsu25aRtIw4You9EeZORZN_AjlRmgcPb6RVeDF_iLf2ZS82nX4F4K1DhgLR9JweeTe1Osnu4zlnUj95rQ-LxDTFscsrSpCqrgaswuCC1tMZCicY83GDAWEkIYHB51ZFc" width="315" /></span></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Automation Activity</span></span></div>
<span style="line-height: 1.2; white-space: pre-wrap;"></span><br />
<ul><span style="line-height: 1.2; white-space: pre-wrap;">
<li><span style="font-family: "times" , "times new roman" , serif;"><span style="line-height: 1.2;">QA Engineer looks at User Dashboard for Automation Activities</span><a href="https://lh4.googleusercontent.com/NJ-fhxYAST-8iB0rMkhRvi7Gf4_XD7MjAV92M6_GNdeXwC5o8G6DFJUYJ5wjgNtqk59e-CzvfbWRGCpYpeYf8o_pAGThtPjWpwz2TJea0K8kL0mGsxbZ0y2Qk6tDKF7SYzSf8AZOodU" imageanchor="1" style="clear: left; display: inline !important; line-height: 1.2; margin-bottom: 1em; margin-left: 1em;"><img alt="Screen Shot 2016-08-10 at 4.18.41 PM.png" border="0" height="108" src="https://lh4.googleusercontent.com/NJ-fhxYAST-8iB0rMkhRvi7Gf4_XD7MjAV92M6_GNdeXwC5o8G6DFJUYJ5wjgNtqk59e-CzvfbWRGCpYpeYf8o_pAGThtPjWpwz2TJea0K8kL0mGsxbZ0y2Qk6tDKF7SYzSf8AZOodU" width="400" /></a></span></li>
</span></ul>
<span style="line-height: 1.2; white-space: pre-wrap;">
</span>
<ul style="text-align: left;">
<li><span style="line-height: 1.2; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">QA Engineer will put it in Progress</span></span></li>
<li><span style="line-height: 1.2; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Complete it and mark it as Done</span></span></li>
<li><span style="line-height: 1.2; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Change Automation Status as “Automated” in Test Case</span></span></li>
<li><span style="line-height: 1.2; white-space: pre-wrap;"><span style="font-family: "times" , "times new roman" , serif;">Update “Automation Code” with Fully Qualified Class Name and @Test Method Name</span></span></li>
</ul>
<div>
<span id="docs-internal-guid-fcb50543-750f-fa85-5b5d-5b1f31bf4533"><span style="font-family: "times" , "times new roman" , serif;"></span></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span id="docs-internal-guid-fcb50543-750f-fa85-5b5d-5b1f31bf4533"><span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;">Test progress in a Test cycle</span></span></span></div>
<span id="docs-internal-guid-fcb50543-750f-fa85-5b5d-5b1f31bf4533"><span style="font-family: "times" , "times new roman" , serif;">
<img alt="Screen Shot 2016-08-10 at 4.20.13 PM.png" height="125" src="https://lh4.googleusercontent.com/0uXREsDHcq_Y0sx4YdFoZzwWypudIc0yIarQdbJSJeT-1oUhakpywFMZlPrLUti5mYgWE-dbP0SJe0OJEq3LIWLYNl0I3fa4g-uGULgdCfl9FQX1ouoYNi8KEERbCVD870C4J1IHq_c" width="400" /></span></span></div>
<div>
<span id="docs-internal-guid-fcb50549-7510-2051-0ffa-26c64b5f8bc9"><span style="font-family: "times" , "times new roman" , serif;"></span></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span id="docs-internal-guid-fcb50549-7510-2051-0ffa-26c64b5f8bc9"><span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;">Test progress at Component level</span></span></span></div>
<span id="docs-internal-guid-fcb50549-7510-2051-0ffa-26c64b5f8bc9"><span style="font-family: "times" , "times new roman" , serif;">
<img alt="Screen Shot 2016-08-10 at 4.22.55 PM.png" height="157" src="https://lh6.googleusercontent.com/7eE3Y9dFV6naKIjg1rM_JkZl96ij4qgCRJVcfSbFtNacDMSGoDC6ADTz9JWDRMmcza-oRZ9OBQwbjNVXL7uE3hNSTsw9VdH_HKpACPRWiO-L3nBCHwdixxSyKaDK7ru4t5P-tePiU34" width="400" /></span></span></div>
<div>
<span id="docs-internal-guid-fcb50909-7510-5d6d-2c2a-6583f2664ce8"><span style="font-family: "times" , "times new roman" , serif;"></span></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span id="docs-internal-guid-fcb50909-7510-5d6d-2c2a-6583f2664ce8"><span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;">Test progress at Feature Level</span></span></span></div>
<span id="docs-internal-guid-fcb50909-7510-5d6d-2c2a-6583f2664ce8"><span style="font-family: "times" , "times new roman" , serif;">
<img alt="Screen Shot 2016-08-10 at 6.50.13 PM.png" height="153" src="https://lh3.googleusercontent.com/fin71ifcrsKpFTfojKVIxuVa9UWXF-T40agADcGzprb9ghV-23KY6qDYzMMZ1T1IlQtItjf-DxlGCMn8gj0i_SvA9x8tTrtuwBexb-TrYsi7Mdtmc-FV5X0CtnrvqT4FOFabhsoD2Mg" width="400" /></span></span></div>
<div>
<span id="docs-internal-guid-fcb50565-7510-93cb-365c-cd81ff705055"><span style="font-family: "times" , "times new roman" , serif;"></span></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span id="docs-internal-guid-fcb50565-7510-93cb-365c-cd81ff705055"><span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;">Automation Progress</span></span></span></div>
<span id="docs-internal-guid-fcb50565-7510-93cb-365c-cd81ff705055"><span style="font-family: "times" , "times new roman" , serif;">
<img alt="Screen Shot 2016-08-10 at 4.24.41 PM.png" height="103" src="https://lh3.googleusercontent.com/x5MWz7ioFAczhU0gstpWI4bTnRlRIUW1nf7Tm9lMGaSEpR_O_rGaXHDpos2-CKOpL06h-A-vVltzYNZ9R_HYIxahiR6cXaF3klGmuxKd9sxaJXeHfrXLbKk5yc56asLJETBMpQCNREM" width="400" /></span></span></div>
<div>
<span id="docs-internal-guid-fcb50580-7510-d44a-f02e-3868fdabf449"><span style="font-family: "times" , "times new roman" , serif;"></span></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span id="docs-internal-guid-fcb50580-7510-d44a-f02e-3868fdabf449"><span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;">Test execution report with teststeps</span></span></span></div>
<span id="docs-internal-guid-fcb50580-7510-d44a-f02e-3868fdabf449"><span style="font-family: "times" , "times new roman" , serif;">
<img alt="Screen Shot 2016-08-10 at 4.27.12 PM.png" height="165" src="https://lh6.googleusercontent.com/yjLjREYrWVnz9Ah1C_bupAbb1h0H4A1Kn-nBXHa-v1bclHfeZYbkPuRLG2IKCGKo8A7oGCz7tMF1SAg4R74gSpJMFQjCNO038CKAbpzDNYUDf067dnV8m_wjD-jxoNvU7h9mq42Mw2s" width="400" /></span></span></div>
<div>
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div>
<span id="docs-internal-guid-fcb50829-7511-050d-18f0-8db61ee30bb9"><span style="font-family: "times" , "times new roman" , serif;"></span></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span id="docs-internal-guid-fcb50829-7511-050d-18f0-8db61ee30bb9"><span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;">No. of Test Cases added in Latest Release</span></span></span></div>
<span id="docs-internal-guid-fcb50829-7511-050d-18f0-8db61ee30bb9"><span style="font-family: "times" , "times new roman" , serif;">
<img alt="Screen Shot 2016-08-10 at 4.28.56 PM.png" height="128" src="https://lh3.googleusercontent.com/60EWGFNRPFcb4zAH_YeRAQkUQJQb5wPPUKEdYj0F365A11DxBEVWHZDI2s18uBNT5PnjPc__yvGdmyCdHDaTceNixqVxSGafJrgfy6vGKeoqasKyVeqUDuDo1Zq1YPDB1IW4HE5YdcI" width="400" /></span></span></div>
<div>
<span id="docs-internal-guid-fcb5086a-7511-35e4-4bc0-bc635a59aeea"><span style="font-family: "times" , "times new roman" , serif;"></span></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span id="docs-internal-guid-fcb5086a-7511-35e4-4bc0-bc635a59aeea"><span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;">No. of Regressions across Versions</span></span></span></div>
<span id="docs-internal-guid-fcb5086a-7511-35e4-4bc0-bc635a59aeea"><span style="font-family: "times" , "times new roman" , serif;">
</span></span><br />
<ul style="margin-bottom: 0pt; margin-top: 0pt;"><span id="docs-internal-guid-fcb5086a-7511-35e4-4bc0-bc635a59aeea"><span style="font-family: "times" , "times new roman" , serif;">
<li dir="ltr" style="list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 4pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Bug should be linked to Test Case with “is regressed by” link type, if it a regression Bug. </span></div>
</li>
</span></span></ul>
<span id="docs-internal-guid-fcb5086a-7511-35e4-4bc0-bc635a59aeea"><span style="font-family: "times" , "times new roman" , serif;">
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 4pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">If not it should be linked to Test Case with “is caused by”</span></div>
</li>
</ul>
<br /><img alt="Screen Shot 2016-08-10 at 4.38.55 PM.png" height="120px;" src="https://lh5.googleusercontent.com/iT8OsOAkU7gS6uOg6aymvzC5yWwnXJLY6BKhkmUHZmDFFxp1mFxt6__SgLq5KevqugRklrojIPLAeGhpbmoitMuQsCUeZIstkWjx_Kat1zQGukJQe5HUi7e67kINKCLmSQJe_GvY61M" width="539px;" /><img alt="Screen Shot 2016-08-10 at 4.42.14 PM.png" height="140px;" src="https://lh3.googleusercontent.com/db5UFv-b1r969m77MPphe0BQDG3PscG0thRtUBBgaa6No2F5Km4cxYybsDXN-ZNaLlOvFsRkFk6DsWVkjLFcyjH3aDCs3r2pUfHKF5lN3ULTw1K1Z8nDKucr0N-mPegxMGV_xDs5OHg" width="539px;" /></span></span></div>
<div>
<span id="docs-internal-guid-fcb50886-7511-59da-7b25-f328f29ae722"><span style="font-family: "times" , "times new roman" , serif;"></span></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span id="docs-internal-guid-fcb50886-7511-59da-7b25-f328f29ae722"><span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;"><br /></span></span></span></div>
<span id="docs-internal-guid-fcb50886-7511-59da-7b25-f328f29ae722"><span style="font-family: "times" , "times new roman" , serif;">
</span></span>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span id="docs-internal-guid-fcb50886-7511-59da-7b25-f328f29ae722"><span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;">No. of regressions within Release</span></span></span></div>
<span id="docs-internal-guid-fcb50886-7511-59da-7b25-f328f29ae722"><span style="font-family: "times" , "times new roman" , serif;">
<img alt="Screen Shot 2016-08-10 at 4.44.06 PM.png" height="136" src="https://lh5.googleusercontent.com/HJklrxMtZpRchDuj_EKx-g29qpoSsmCnj8wSxMxnbf9kL3Ocod-QcTzvqvzgxuwF2byOgg_XHNc_QVsKOPzltWrFHhjCU5drYk44swpfPVw3H9lfelD8QX5-wiiBXVW2CKdgqHbR4hs" width="400" /></span></span></div>
<div>
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div>
<span id="docs-internal-guid-fcb508a6-7511-af46-8308-4b54d198504a"><span style="font-family: "times" , "times new roman" , serif;"></span></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span id="docs-internal-guid-fcb508a6-7511-af46-8308-4b54d198504a"><span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;">Test execution history for a Test Case</span></span></span></div>
<span id="docs-internal-guid-fb27e7aa-7953-2cd5-942d-2e4f65890ce2"><img height="122" src="https://lh4.googleusercontent.com/nfFh4wPfY20cfBW-7AU2eM-BDwql51U1BMvSpC4PoBy1RMmRZb1x8P-ha0py41tjj6KqmaPkDoZIJ76DUSj3dIEhmPrH3nfVQD__EH1nA1Vd1uN8I8ryv-Yl6c1IwBZJjdHE8mjd-gI" width="400" /></span></div>
<div>
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div>
<span id="docs-internal-guid-fcb508eb-7512-173e-dc20-35edf2edd769"><span style="font-family: "times" , "times new roman" , serif;"></span></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span id="docs-internal-guid-fcb508eb-7512-173e-dc20-35edf2edd769"><span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;">Add-ons Required</span></span></span></div>
<span id="docs-internal-guid-fcb508eb-7512-173e-dc20-35edf2edd769"><span style="font-family: "times" , "times new roman" , serif;">
</span></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 20pt; margin-top: 4pt; text-indent: -9pt;">
<span id="docs-internal-guid-fcb508eb-7512-173e-dc20-35edf2edd769"><span style="font-family: "times" , "times new roman" , serif;"><span style="vertical-align: baseline; white-space: pre-wrap;">JQL Extensions for Querying linked issues </span><a href="https://marketplace.atlassian.com/plugins/jql-extensions/cloud/pricing" style="text-decoration: none;"><span style="text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">https://marketplace.atlassian.com/plugins/jql-extensions/cloud/pricing</span></a><span style="vertical-align: baseline; white-space: pre-wrap;"> </span></span></span></div>
<span id="docs-internal-guid-fcb508eb-7512-173e-dc20-35edf2edd769"><span style="font-family: "times" , "times new roman" , serif;">
<div>
<span style="vertical-align: baseline; white-space: pre-wrap;"></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;"><span style="vertical-align: baseline;"><br /></span></span></div>
<span style="vertical-align: baseline; white-space: pre-wrap;">
</span>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;"><span style="vertical-align: baseline;">Issue Links Used</span></span></div>
<span style="vertical-align: baseline; white-space: pre-wrap;">
<img alt="Screen Shot 2016-08-10 at 6.52.11 PM.png" height="185" src="https://lh6.googleusercontent.com/PPb-vsO61LVCkeXko72qz6fL1CCqQbNdEOxREBWS-GT9ObSpyw8pIrbLYBNjq10E-r7EDiDmao_TdNiT3tMVBvDSrGlJqToCOAaX9RyroEIlk3eXZz61n--z528IqQy-MrOi9P2_paA" width="400" /></span></div>
<div>
<span style="vertical-align: baseline; white-space: pre-wrap;"><span id="docs-internal-guid-fcb5082f-7512-6c64-31ea-3421c9f80c74"></span></span><br />
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;"><span id="docs-internal-guid-fcb5082f-7512-6c64-31ea-3421c9f80c74"><span style="vertical-align: baseline;"><br /></span></span></span></div>
<span style="vertical-align: baseline; white-space: pre-wrap;"><span id="docs-internal-guid-fcb5082f-7512-6c64-31ea-3421c9f80c74">
</span></span>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;"><span id="docs-internal-guid-fcb5082f-7512-6c64-31ea-3421c9f80c74"><span style="vertical-align: baseline;">Filters Used</span></span></span></div>
<span style="vertical-align: baseline; white-space: pre-wrap;"><span id="docs-internal-guid-fcb5082f-7512-6c64-31ea-3421c9f80c74">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="224px"></col><col width="669px"></col></colgroup><tbody>
<tr style="height: 33px;"><td style="background-color: #cc4125; border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; filter: alpha(opacity=100); opacity: 1; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; vertical-align: baseline; white-space: pre-wrap;">Filter Name</span></div>
</td><td style="background-color: #cc4125; border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; filter: alpha(opacity=100); opacity: 1; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; vertical-align: baseline; white-space: pre-wrap;">JQL</span></div>
</td></tr>
<tr style="height: 33px;"><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Bugs with Test Cases</span></div>
</td><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">project = MFS AND linkType = "is regressed by" AND issuetype = Bug AND affectedVersion = "Version 3.0"</span></div>
</td></tr>
<tr style="height: 33px;"><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Test Case Repository</span></div>
</td><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">project = MFS AND issuetype = "Test Case" AND (linkType not in (clones) OR linkType is EMPTY)</span></div>
</td></tr>
<tr style="height: 33px;"><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Test Cases Added in Latest Version</span></div>
</td><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">project = MFS AND issuetype = "Test Case" AND affectedVersion = "Version 4.0"</span></div>
</td></tr>
<tr style="height: 33px;"><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Test Cases Caused Regression</span></div>
</td><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">project = MFS AND linkType = regresses AND issuetype = "Test Case"</span></div>
</td></tr>
<tr style="height: 48px;"><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Test Cases With Open Bugs</span></div>
</td><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">project = MFS AND issuetype = "Test Case" AND status = "TC - Failed" AND linkedIssueType = Bug AND linkedIssueStatus = "To Do"</span></div>
</td></tr>
<tr style="height: 33px;"><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Test Execution of Latest Test Cycle</span></div>
</td><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">project = MFS AND issuetype = "Test Case" AND "Test Cycle" = "Version 4.0 - Cycle 1"</span></div>
</td></tr>
<tr style="height: 33px;"><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Requirement Traceability</span></div>
</td><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">project = MFS AND issuetype = Story AND linkType = "is requirement of"</span></div>
</td></tr>
<tr style="height: 48px;"><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">All Bugs with Test Cases</span></div>
</td><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">project = MFS AND (linkType = "is caused by" OR linkType = "is regressed by") AND issuetype = Bug AND affectedVersion = "Version 3.0"</span></div>
</td></tr>
<tr style="height: 33px;"><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Automation Progress</span></div>
</td><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">project = MFS AND issuetype = Sub-task AND "Test Cycle" = "Version 4.0 - Cycle 1"</span></div>
</td></tr>
<tr style="height: 33px;"><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">Regression Bugs with Test Cases</span></div>
</td><td style="border-bottom: solid #9E9E9E 1px; border-left: solid #9E9E9E 1px; border-right: solid #9E9E9E 1px; border-top: solid #9E9E9E 1px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px; padding-top: 2px; vertical-align: bottom;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="vertical-align: baseline; white-space: pre-wrap;">project = MFS AND linkType = "is regressed by" AND issuetype = Bug AND affectedVersion = "Version 3.0"</span></div>
</td></tr>
</tbody></table>
</span></span></div>
</span></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "times" , "times new roman" , serif;">~Yagna</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "times" , "times new roman" , serif;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="margin-left: 1em; margin-right: 1em;"><br /></span></div>
<div>
</div>
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com2tag:blogger.com,1999:blog-5008407120359549210.post-72435759392969144262016-08-08T23:47:00.001-07:002016-08-10T08:11:20.304-07:00Test Case Management using JIRA Customization<div dir="ltr" style="text-align: left;" trbidi="on">
Most of the companies are using JIRA for Project Management whether its for Agile or not. As Product Managers/Product Owners start writing Requirements/Stories in JIRA and Test Team is using it to create Bugs, it is pushing to integrate Test Management System with JIRA. But integration is not giving all the benefits like Requirement - Test Case Traceability, Bug - Test Case Traceability.<br />
<br />
Another solution for this is to use JIRA Test Management Add-ons like Zephyr, TestFlo. But JIRA Cloud is not same as JIRA Server. JIRA cloud is very restricted and these Add-ons are not complete due to the restrictions on JIRA cloud.<br />
<br />
The place at which I am working has their JIRA hosted on cloud. Hence tools gave very less value addition for us. So I decided to try some JIRA customization and create my own TMS in JIRA. This post describes the steps to achieve this.<br />
<br />
To Try this you can host a JIRA trial on cloud at https://www.atlassian.com/ondemand/signup/<br />
<br />
Once you signup and select your site name, it will be hosted.<br />
<br />
Now go to Issues page from JIRA Administration->Issues as shown in below picture<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjUPpYUOG9ozZfUmnAsH629ReVPi7E1difNEawZvpGL84JsmfFRSZRNKOWziUwl68MPz0HnToazOSPYAVGdK6whBMX8_Zg2xbMboemAFYXyKJMMedE8EFLonkEUhb8kEg1KBAIgasNKELA/s1600/Screen+Shot+2016-08-05+at+4.41.52+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjUPpYUOG9ozZfUmnAsH629ReVPi7E1difNEawZvpGL84JsmfFRSZRNKOWziUwl68MPz0HnToazOSPYAVGdK6whBMX8_Zg2xbMboemAFYXyKJMMedE8EFLonkEUhb8kEg1KBAIgasNKELA/s320/Screen+Shot+2016-08-05+at+4.41.52+PM.png" width="232" /></a></div>
<br />
Then Add Issue Type like below<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJIniVxLFHXuL6tXRn2rBZDRuZwVQCGaparoimABkAnLN9W6f6EqcDNPnKNbch2t_v3gQrnQRMBPAO8t_L3n4NMYpW2j10vCOiS60XnAlE5sCmnc0ykLmP4m-7VNkKiXTXmz_qSFmOhiAT/s1600/Screen+Shot+2016-08-05+at+4.42.52+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJIniVxLFHXuL6tXRn2rBZDRuZwVQCGaparoimABkAnLN9W6f6EqcDNPnKNbch2t_v3gQrnQRMBPAO8t_L3n4NMYpW2j10vCOiS60XnAlE5sCmnc0ykLmP4m-7VNkKiXTXmz_qSFmOhiAT/s320/Screen+Shot+2016-08-05+at+4.42.52+PM.png" width="320" /></a></div>
Now go to Issue Type Schema and associate it with some Issue Type Schema<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD2GOUqnVF4dt-If_eN-OwcvF9Lc01_mjFP0yVOUX1-4W7jI6EFU7jJlY-8m_V1nPfeYJAw89_yCA2NvwnTZ4nG92cG1N0GmGzTYRex4Jqudb-tF4h9VnrBBtggZXmYE7_sUrSgYvN-WUp/s1600/Screen+Shot+2016-08-05+at+4.45.08+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD2GOUqnVF4dt-If_eN-OwcvF9Lc01_mjFP0yVOUX1-4W7jI6EFU7jJlY-8m_V1nPfeYJAw89_yCA2NvwnTZ4nG92cG1N0GmGzTYRex4Jqudb-tF4h9VnrBBtggZXmYE7_sUrSgYvN-WUp/s400/Screen+Shot+2016-08-05+at+4.45.08+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now go to Workflows and Import from Marketplace a new Workflow called "Test Case Management Workflow" </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXKTgglNUMCrUhyphenhyphenJLOfhmE4-7ahQjR4ChGEMWYOtUFTYASvRhQ63yQhMrWLv2Pottm1SyAlcRJ5D9KWGmZ1d9HXImkdUseAADilNS6ri5mvr_6ffPyIVJYrLX4LT83ZYSkmmh_hSfxdyvg/s1600/Screen+Shot+2016-08-05+at+4.47.33+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="40" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXKTgglNUMCrUhyphenhyphenJLOfhmE4-7ahQjR4ChGEMWYOtUFTYASvRhQ63yQhMrWLv2Pottm1SyAlcRJ5D9KWGmZ1d9HXImkdUseAADilNS6ri5mvr_6ffPyIVJYrLX4LT83ZYSkmmh_hSfxdyvg/s200/Screen+Shot+2016-08-05+at+4.47.33+PM.png" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Assign this workflow to Workflow Scheme at Workflow Schemes and Assign "Test Case" issue type to this Workflow Scheme</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU7hB64H-r3PvIngWvvDEll8n8SvjIMuw-B_5-MDWOHX2sgbLpmaxUGUaox4gTcnIlbJfY6qieAkbL9lsYzXr8SS6IizvCR9ltCTnRKfTx2XaqCmJMJM2s8E1OyhHelxtBkNdBNJthRvl9/s1600/Screen+Shot+2016-08-05+at+4.51.55+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU7hB64H-r3PvIngWvvDEll8n8SvjIMuw-B_5-MDWOHX2sgbLpmaxUGUaox4gTcnIlbJfY6qieAkbL9lsYzXr8SS6IizvCR9ltCTnRKfTx2XaqCmJMJM2s8E1OyhHelxtBkNdBNJthRvl9/s400/Screen+Shot+2016-08-05+at+4.51.55+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Add a new Screen </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjctEs9zLCp4eQWEt1_IFWBL4ajHA5I0TGr1uzlFUbaNkY74HDLS0a84pAtzAm9i_m4s80D2XPBPbse07uyzRpKvruI358jqNb8phtBsoQMwuR3LVRJFUf5dKRODfYlLdjieDou9ed2R7W3/s1600/Screen+Shot+2016-08-05+at+4.56.15+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjctEs9zLCp4eQWEt1_IFWBL4ajHA5I0TGr1uzlFUbaNkY74HDLS0a84pAtzAm9i_m4s80D2XPBPbse07uyzRpKvruI358jqNb8phtBsoQMwuR3LVRJFUf5dKRODfYlLdjieDou9ed2R7W3/s400/Screen+Shot+2016-08-05+at+4.56.15+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now Add a New Screen Scheme</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1EEvDYgRk9Cfkzyb9tcdRvKI37mWMYvMQ00NW4prbpIuL5WKxrIPlmQv9ZCXsZPL_TskO6vXT3usiYXn-JBtUyV4eIM2XJW5gxB5USpHf8aY0PKYkdIjJziLdGQdqU8oThIkK00TNjtv1/s1600/Screen+Shot+2016-08-05+at+4.57.33+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1EEvDYgRk9Cfkzyb9tcdRvKI37mWMYvMQ00NW4prbpIuL5WKxrIPlmQv9ZCXsZPL_TskO6vXT3usiYXn-JBtUyV4eIM2XJW5gxB5USpHf8aY0PKYkdIjJziLdGQdqU8oThIkK00TNjtv1/s400/Screen+Shot+2016-08-05+at+4.57.33+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Associate Issue Type with a Screen Scheme</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg93_SAHgS5NQfB_yU4vn_tDjZBvJELgk5pyTFujYTlmsJ8YeJLv5La7hEW2SSN72UAV3nUxKvADOnjrqlQWYjOYE0VvU60KoizZjnX3eVYuf3r64FUosIRKEfZ46aOYj6ZPaePEHadzgWZ/s1600/Screen+Shot+2016-08-05+at+4.58.23+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg93_SAHgS5NQfB_yU4vn_tDjZBvJELgk5pyTFujYTlmsJ8YeJLv5La7hEW2SSN72UAV3nUxKvADOnjrqlQWYjOYE0VvU60KoizZjnX3eVYuf3r64FUosIRKEfZ46aOYj6ZPaePEHadzgWZ/s400/Screen+Shot+2016-08-05+at+4.58.23+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Create following Custom Fields and associate with Screens</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOPpB1JBLxSopxbLy2dsGuwX72XK4D8KjOHJ5OV3GCPkCRZoRrk4sUg-aXjAsj6pMvtLUdExDakwRFlrjvOP5qj9cnIQufEvHol-_r5Ue_ufrypxPwZRCsbcnThGKN2O0vn6jGjwT7qJsS/s1600/Screen+Shot+2016-08-05+at+5.00.00+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOPpB1JBLxSopxbLy2dsGuwX72XK4D8KjOHJ5OV3GCPkCRZoRrk4sUg-aXjAsj6pMvtLUdExDakwRFlrjvOP5qj9cnIQufEvHol-_r5Ue_ufrypxPwZRCsbcnThGKN2O0vn6jGjwT7qJsS/s400/Screen+Shot+2016-08-05+at+5.00.00+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Values for Test Status at Build will be like</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGeTPm7sw-M6cQG-MPnRhrTloJvRtZc6gOqGpPYh27Nneb7ePPBhe8ZeWM-9Prk76c2gHHvTuLzXShqPqDQT7H6urvAt4pMvidCh_dvDjf_CSByEHR1oIyfLpcNSY-P0XH-qm7bjRTU9S5/s1600/Screen+Shot+2016-08-05+at+5.01.39+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="143" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGeTPm7sw-M6cQG-MPnRhrTloJvRtZc6gOqGpPYh27Nneb7ePPBhe8ZeWM-9Prk76c2gHHvTuLzXShqPqDQT7H6urvAt4pMvidCh_dvDjf_CSByEHR1oIyfLpcNSY-P0XH-qm7bjRTU9S5/s320/Screen+Shot+2016-08-05+at+5.01.39+PM.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Values like this will help you to track execution history at build level for every cycle and release with out cloning Test Cases and can get metrics at build level.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both;">
Create two more custom fields like below to track Automation related things</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo13cQGdsrTqFIXmR6NmN_Tj3_WfnHLgLw1KyeRBkw_pckmCBDqX-6HLlHRO4IHv3HDzQ7e_n4n3C6c6dK6HjuSpeIpXDI970P_uF7msWVh2YTBAdDSD_j7v7EcyBCg36U2v0Nw2WQKD4-/s1600/Screen+Shot+2016-08-09+at+11.52.01+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="90" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo13cQGdsrTqFIXmR6NmN_Tj3_WfnHLgLw1KyeRBkw_pckmCBDqX-6HLlHRO4IHv3HDzQ7e_n4n3C6c6dK6HjuSpeIpXDI970P_uF7msWVh2YTBAdDSD_j7v7EcyBCg36U2v0Nw2WQKD4-/s400/Screen+Shot+2016-08-09+at+11.52.01+AM.png" width="400" /></a></div>
<div class="separator" style="clear: both;">
Automation status should have values like</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcJWxw-xWEyd9_JP-NCNoHNEUjRCmB9fAh8_q9-zr9x1CzVtO5WppRfcNAl9yFpw1JA699SFgDApGAthfqnIMnonTH3kilMjALeJIrSHHFn6LeV_qtyoJCQj7AFWsdEPuk0ZMrIUy886Mr/s1600/Screen+Shot+2016-08-09+at+11.53.54+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcJWxw-xWEyd9_JP-NCNoHNEUjRCmB9fAh8_q9-zr9x1CzVtO5WppRfcNAl9yFpw1JA699SFgDApGAthfqnIMnonTH3kilMjALeJIrSHHFn6LeV_qtyoJCQj7AFWsdEPuk0ZMrIUy886Mr/s400/Screen+Shot+2016-08-09+at+11.53.54+AM.png" width="400" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Now JIRA Customization is done. Lets start using this.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
You can create Test Case like below</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbR4Zfloxwl_Zz3W6iLez0iEzgsTi21jKPiiChna_t6DyVdVhR-vWd9owdaUuGancM7pYdomcBNY7Rs2JJvMDxR2l-74w5GsHU9YdJt71-iy4JSnEsTFDKDDgeqfVEcBOMdqESulJ1UBb_/s1600/Screen+Shot+2016-08-09+at+11.57.49+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbR4Zfloxwl_Zz3W6iLez0iEzgsTi21jKPiiChna_t6DyVdVhR-vWd9owdaUuGancM7pYdomcBNY7Rs2JJvMDxR2l-74w5GsHU9YdJt71-iy4JSnEsTFDKDDgeqfVEcBOMdqESulJ1UBb_/s320/Screen+Shot+2016-08-09+at+11.57.49+AM.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuBkrnrZXkgC1nP_fdyUCaMCpKo_rppVpGP91HgXzboSq82GGKcbO200P7MG9YmpeD2J6XLbpTawzhFj-RdWFrL4x2drATEAlJlqyq-49wsbFxhnmkE5lKUGudef6RLR90CAyckKGjMO8O/s1600/Screen+Shot+2016-08-09+at+11.57.58+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuBkrnrZXkgC1nP_fdyUCaMCpKo_rppVpGP91HgXzboSq82GGKcbO200P7MG9YmpeD2J6XLbpTawzhFj-RdWFrL4x2drATEAlJlqyq-49wsbFxhnmkE5lKUGudef6RLR90CAyckKGjMO8O/s320/Screen+Shot+2016-08-09+at+11.57.58+AM.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
You can link a Bug with Test Case as shown below</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrfoCdO6BxfbIqOIi-IKkLANO_bSDqDBsWK4nrerxK6jKNQAxJSY4aWHOIrrzDEnEWFPdGIded4TpXFnHSp-1MQHLsn917YmQgAlw05OFx71SwSCgNytzfKhxQp7jRXoTaPXjNJT-ge4di/s1600/Screen+Shot+2016-08-09+at+11.59.00+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrfoCdO6BxfbIqOIi-IKkLANO_bSDqDBsWK4nrerxK6jKNQAxJSY4aWHOIrrzDEnEWFPdGIded4TpXFnHSp-1MQHLsn917YmQgAlw05OFx71SwSCgNytzfKhxQp7jRXoTaPXjNJT-ge4di/s320/Screen+Shot+2016-08-09+at+11.59.00+AM.png" width="283" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Now Bug will be shown in the Test Case as shown below</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC7Ck5nDC0_RRdCT8JlWZSpp4lb-kvm0DVFnUxz1UsKvZJnjbHA2JM_o2HeRi0NrJ3g03J4T1YFkldcDdW2p09OGDsT0EcJW6V3NNA1C8-6YJf8AyFA4yo4pBAQt4PpMpOH95_Pa1NfipZ/s1600/Screen+Shot+2016-08-09+at+12.04.07+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="182" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC7Ck5nDC0_RRdCT8JlWZSpp4lb-kvm0DVFnUxz1UsKvZJnjbHA2JM_o2HeRi0NrJ3g03J4T1YFkldcDdW2p09OGDsT0EcJW6V3NNA1C8-6YJf8AyFA4yo4pBAQt4PpMpOH95_Pa1NfipZ/s320/Screen+Shot+2016-08-09+at+12.04.07+PM.png" width="320" /></a></div>
<div class="separator" style="clear: both;">
Also this helps in Bug Traceability using linkIssues in JQL</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Now lets add Post Functions in a Workflow</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Go to Admin->System->Workflows, Click on the Workflow in which you want to add post functions.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Now click on Edit Button</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ0WJ4NDNwHrKz6PGB633HCko7Hw9kl5kBb3zSaYa748suP62VdQcZTAZ2bBED3dkMYOT8ltmVYDaGbuq6pyO6bPX8b-Vbo6hthC_l46SvhqomKZNxsDdgK1wsC8nYsYpIlKWEoN0N-vl4/s1600/Screen+Shot+2016-08-09+at+12.07.08+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="165" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ0WJ4NDNwHrKz6PGB633HCko7Hw9kl5kBb3zSaYa748suP62VdQcZTAZ2bBED3dkMYOT8ltmVYDaGbuq6pyO6bPX8b-Vbo6hthC_l46SvhqomKZNxsDdgK1wsC8nYsYpIlKWEoN0N-vl4/s400/Screen+Shot+2016-08-09+at+12.07.08+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
Click on the Transition you want to edit and add a Post Function. Don't forget to Publish Draft after changes are made.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj31w8aDaRdy2FSVmSLucn2CkivC-8YipYZ5qA9m3dJed-PNd9-v32FECdjFvr_qdpxDBrwiJMlGt6Z74nmKfJ3Jk-RCjdGiAA_-FQG20x5ymLrw1muQgMubHTH4mU4ipOTaUfSjb4O_a_h/s1600/Screen+Shot+2016-08-09+at+12.08.18+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="182" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj31w8aDaRdy2FSVmSLucn2CkivC-8YipYZ5qA9m3dJed-PNd9-v32FECdjFvr_qdpxDBrwiJMlGt6Z74nmKfJ3Jk-RCjdGiAA_-FQG20x5ymLrw1muQgMubHTH4mU4ipOTaUfSjb4O_a_h/s400/Screen+Shot+2016-08-09+at+12.08.18+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
I have added following Post Function to save Multi Select output to a Text for JQL</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJer3iu_fvux1p5qNutXfY7S-yRvFdcmYNf6lF6TyZgtxY6l4XDaslbrSYUq2gaqXuHykuhKArjtgksH_A1e1c1Pp_7ESV88dmT6qQGygWrMcYcuf_hj70GgVGrOAq28ZavcaHfVJZYDo5/s1600/Screen+Shot+2016-08-09+at+12.09.28+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="183" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJer3iu_fvux1p5qNutXfY7S-yRvFdcmYNf6lF6TyZgtxY6l4XDaslbrSYUq2gaqXuHykuhKArjtgksH_A1e1c1Pp_7ESV88dmT6qQGygWrMcYcuf_hj70GgVGrOAq28ZavcaHfVJZYDo5/s400/Screen+Shot+2016-08-09+at+12.09.28+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Now create a Filter like below</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNRTUnM1H2yW-t5zaNPCN_H4pMuaNrajbIDTHjOZLDmPrsNq7CQiMHny2f8pXNknjZAGKJoIHyBsaTuxz58-7x8yEXnMl4QNzBsMlaZ7xMexg0-QkrVh-RRlAYSlRyTYJmMJ5Qlz3OiKth/s1600/Screen+Shot+2016-08-09+at+12.11.29+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="55" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNRTUnM1H2yW-t5zaNPCN_H4pMuaNrajbIDTHjOZLDmPrsNq7CQiMHny2f8pXNknjZAGKJoIHyBsaTuxz58-7x8yEXnMl4QNzBsMlaZ7xMexg0-QkrVh-RRlAYSlRyTYJmMJ5Qlz3OiKth/s400/Screen+Shot+2016-08-09+at+12.11.29+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
You can create Dashboards like below</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSwaqdU6cFkJ4HQ-VRj17Ghh-r3DhCTBX_w7gQeZqzeJRB44ejLqf7J2KsP0E4KYwoiNQziNbV6Hon5T-vMBxydlPnSoIdYcpEcaxNOgUCeIVQwt6exDjF9qJA-UpTTSS1McQSyOnET1dH/s1600/Screen+Shot+2016-08-09+at+12.14.02+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSwaqdU6cFkJ4HQ-VRj17Ghh-r3DhCTBX_w7gQeZqzeJRB44ejLqf7J2KsP0E4KYwoiNQziNbV6Hon5T-vMBxydlPnSoIdYcpEcaxNOgUCeIVQwt6exDjF9qJA-UpTTSS1McQSyOnET1dH/s400/Screen+Shot+2016-08-09+at+12.14.02+PM.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimW0jqaYYG2sVPMadQhy5pWxkVLj2U1JTxU6GKyVubzg6TBCiED9ZnB1kT6Jb0rFLVstepjjNdISLJuDHhSfBaJKWFOGQOBWyb85iuZtXZSrpMRM8dutDE0mbQ12OubrS_FM4Kp0Qc4SA-/s1600/Screen+Shot+2016-08-09+at+12.14.33+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimW0jqaYYG2sVPMadQhy5pWxkVLj2U1JTxU6GKyVubzg6TBCiED9ZnB1kT6Jb0rFLVstepjjNdISLJuDHhSfBaJKWFOGQOBWyb85iuZtXZSrpMRM8dutDE0mbQ12OubrS_FM4Kp0Qc4SA-/s400/Screen+Shot+2016-08-09+at+12.14.33+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
This is the best that I can get out of JIRA cloud as this is not supporting groovy scripts and lot of Add-ons. </div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
~Yagna</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-578787743396297742016-05-11T05:26:00.000-07:002016-05-11T05:26:15.222-07:00Pig Script for Comparison of 2 Big Files<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="columnLayout single" data-layout="single" style="background-color: white; color: #333333; display: table; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; margin: 0px 0px 8px; padding: 0px; table-layout: fixed; width: 985px;">
<div class="cell normal" data-type="normal" style="border-radius: 5px; box-sizing: border-box; display: table-cell; margin: 8px 0px; padding: 0px 15px; vertical-align: top; word-wrap: break-word;">
<div class="innerCell" style="margin: 0px; overflow-x: auto; padding: 0px;">
<h2 id="SporkTesting-PigScriptforComparisonof2Files" style="border-bottom-color: rgb(23, 72, 92); font-weight: normal; line-height: 1.5; margin: 0px; padding: 0px;">
<span style="font-size: x-small;">Pig Script for Comparison of 2 Files</span></h2>
<h3 id="SporkTesting-Goals" style="line-height: 1.5; margin: 10px 0px 0px; padding: 0px;">
<span style="font-size: x-small;">Goals</span></h3>
<ul style="margin: 10px 0px 0px;">
<li><span style="font-size: x-small;">Find out whether both the files/folders have same number of lines</span></li>
<li><span style="font-size: x-small;">Find out whether both the files/folders have same number of tuples when grouped by all dimensions</span></li>
<li><span style="font-size: x-small;">Find out all the tuples in a Group of one File should be having a one to one match(Measures will match with a tolerance) in another file/folder</span></li>
</ul>
<h3 id="SporkTesting-Script" style="line-height: 1.5; margin: 30px 0px 0px; padding: 0px;">
<span style="font-size: x-small;">Script</span></h3>
<div>
<span style="font-size: x-small;"><br /></span></div>
<blockquote class="tr_bq">
<pre style="color: black; line-height: normal; white-space: pre-wrap; word-wrap: break-word;"><span style="font-size: x-small;">#!/bin/bash
FIRST_FILE="/input/output-mapred.txt";
SECOND_FILE="/input/output-spork.txt";
OUTPUT_FILE="/input/output-diff.txt";
DIMENSION_STRING="1,2,4"
MEASURE_STRING="3";
UNIVERSAL_TOLERANCE="2";
PIG_STORAGE_DELIMETER="\t";
DIFF_PIG_SCRIPT_LOCATION="/tmp/diff-f1.pig";
DIFF_PIG_SCRIPT_LOCATION_REVERSE="/tmp/diff-f2";
function usage () {
me=$(basename $BASH_SOURCE)
echo
echo "$me script helps to get diff of 2 files in HDFS with given tolerance."
echo
echo "Usage : "
echo "./$me [Options]"
echo " Options : "
echo -e "\t -h --help"
echo -e "\t\t - Print this"
echo -e "\t -file1=[ABSOLUTE_FILE_PATH]"
echo -e "\t\t - File/Folder to compare with"
echo -e "\t -file2=[ABSOLUTE_FILE_PATH]"
echo -e "\t\t - File/Folder to compare to"
echo -e "\t -outputfile=[ABSOLUTE_FILE_PATH]"
echo -e "\t\t - File/Folder to save difference to"
echo -e "\t -dimpos=[COMMA_SEPERATED_DIMENSIONS_POSITIONS]"
echo -e "\t\t - Positions of Dimensions in files"
echo -e "\t -meapos=[COMMA_SEPERATED_MEASURES_POSITIONS]"
echo -e "\t\t - Positions of Measures in files"
echo -e "\t -tollimit=[TOLERANCE_LIMIT]"
echo -e "\t\t - Tolerance limit when comparing measures"
echo -e "\t -delimeter=[DELIMETER]"
echo -e "\t\t - Delimeter to be used in PigStorage. Default is tab"
}
if [ -z "$1" ]
then
usage
exit
fi
while [ "$1" != "" ]; do
PARAM=`echo $1 | awk -F= '{print $1}'`
VALUE=`echo $1 | awk -F= '{print $2}'`
case $PARAM in
-h | --help)
usage
exit
;;
-tollimit)
UNIVERSAL_TOLERANCE=$VALUE
;;
-delimeter)
PIG_STORAGE_DELIMETER=$VALUE
;;
-meapos)
MEASURE_STRING=$VALUE
;;
-dimpos)
DIMENSION_STRING=$VALUE
;;
-file2)
SECOND_FILE=$VALUE
;;
-file1)
FIRST_FILE=$VALUE
;;
-outputfile)
OUTPUT_FILE=$VALUE
;;
*)
echo "ERROR: unknown parameter \"$PARAM\""
usage
exit 1
;;
esac
shift
done
#Convert Strings to Arrays
IFS=', ' read -r -a DIMENSIONS_ARRAY <<< "$DIMENSION_STRING"
IFS=', ' read -r -a MEASURES_ARRAY <<< "$MEASURE_STRING"
containsElement () {
local e
for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
return 1
}
#Check if any column is in both Dimensions and Measures
for element in "${MEASURES_ARRAY[@]}"
do
containsElement "$element" ${DIMENSIONS_ARRAY[@]}
if [ $? = 0 ] ; then
echo "I am confused about column $element .. its both in Dimensions and Measures .. "
echo "Can't go forward ... exiting ... "
exit 1;
fi
done
MEASURES_SIZE=${#MEASURES_ARRAY[@]};
DIMENSIONS_SIZE=${#DIMENSIONS_ARRAY[@]};
COLUMNS_SIZE=$MEASURES_SIZE+$DIMENSIONS_SIZE;
SCHEMA_STRING="";
ALL_DIMENSIONS="";
ALL_MEASURES="";
for element in "${DIMENSIONS_ARRAY[@]}"
do
SCHEMA_STRING="$SCHEMA_STRING , field$element:chararray";
ALL_DIMENSIONS="$ALL_DIMENSIONS , field$element";
done
for element in "${MEASURES_ARRAY[@]}"
do
SCHEMA_STRING="$SCHEMA_STRING , field$element:float";
ALL_MEASURES="$ALL_MEASURES , field$element";
done
SCHEMA_STRING=`echo "$SCHEMA_STRING" | sed 's/ , //'`;
ALL_DIMENSIONS=`echo "$ALL_DIMENSIONS" | sed 's/ , //'`;
ALL_MEASURES=`echo "$ALL_MEASURES" | sed 's/ , //'`;
#Starting to create pig script
SCRIPT_CONTENT="";
echo "f1 = LOAD '$FIRST_FILE' USING PigStorage('$PIG_STORAGE_DELIMETER') as ($SCHEMA_STRING);" >$DIFF_PIG_SCRIPT_LOCATION
echo "f2 = LOAD '$SECOND_FILE' USING PigStorage('$PIG_STORAGE_DELIMETER') as ($SCHEMA_STRING);" >>$DIFF_PIG_SCRIPT_LOCATION
echo "g_f1 = GROUP f1 BY ($ALL_DIMENSIONS);" >>$DIFF_PIG_SCRIPT_LOCATION
echo "g_f2 = GROUP f2 BY ($ALL_DIMENSIONS);" >>$DIFF_PIG_SCRIPT_LOCATION
echo "g_f1_flatten = FOREACH g_f1 GENERATE FLATTEN (group) as ($ALL_DIMENSIONS)" >>$DIFF_PIG_SCRIPT_LOCATION
TMP="";
for element in "${MEASURES_ARRAY[@]}"
do
TMP="$TMP , SUM(f1.field$element) as field$element"
done
echo "$TMP;" >>$DIFF_PIG_SCRIPT_LOCATION
echo "g_f2_flatten = FOREACH g_f2 GENERATE FLATTEN (group) as ($ALL_DIMENSIONS)" >>$DIFF_PIG_SCRIPT_LOCATION
TMP="";
for element in "${MEASURES_ARRAY[@]}"
do
TMP="$TMP , SUM(f2.field$element) as field$element"
done
echo "$TMP;" >>$DIFF_PIG_SCRIPT_LOCATION
echo "joined = JOIN g_f1_flatten by ($ALL_DIMENSIONS),g_f2_flatten by ($ALL_DIMENSIONS);" >>$DIFF_PIG_SCRIPT_LOCATION
echo "list = FOREACH joined " >>$DIFF_PIG_SCRIPT_LOCATION
echo "GENERATE " >>$DIFF_PIG_SCRIPT_LOCATION
for element in "${MEASURES_ARRAY[@]}"
do
echo "g_f1_flatten::field$element as f1field$element, g_f2_flatten::field$element as f2field$element," >>$DIFF_PIG_SCRIPT_LOCATION
done
count=${#DIMENSIONS_ARRAY[@]};
for element in "${DIMENSIONS_ARRAY[@]}"
do
echo "g_f1_flatten::field$element as f1field$element, g_f2_flatten::field$element as f2field$element" >>$DIFF_PIG_SCRIPT_LOCATION
if [ "$count" -ge 2 ];then
echo "," >>$DIFF_PIG_SCRIPT_LOCATION
fi
count=`expr $count - 1`;
done
echo ";" >>$DIFF_PIG_SCRIPT_LOCATION
echo "filtered_list = FILTER list by " >>$DIFF_PIG_SCRIPT_LOCATION
TMP="";
for element in "${MEASURES_ARRAY[@]}"
do
TMP="$TMP AND ((f1field$element-f2field$element>$UNIVERSAL_TOLERANCE) OR (f1field$element-f2field$element<-$UNIVERSAL_TOLERANCE))";
done
TMP=`echo $TMP | sed 's/AND//'`;
echo $TMP >>$DIFF_PIG_SCRIPT_LOCATION
echo ";" >>$DIFF_PIG_SCRIPT_LOCATION
echo "store filtered_list INTO '$OUTPUT_FILE';" >>$DIFF_PIG_SCRIPT_LOCATION
cat $DIFF_PIG_SCRIPT_LOCATION</span></pre>
</blockquote>
<ul style="margin: 10px 0px 0px;">
<li><span style="font-size: x-small;">chmod +x generateDiffPigScripts.sh<br /></span></li>
</ul>
<div class="aui-message hint shadowed information-macro" style="background: rgb(252, 252, 252); border-radius: 5px; border: 1px solid rgb(170, 184, 198); box-shadow: none; margin: 10px 0px 0px; padding: 10px 10px 10px 36px; position: relative;">
<div class="title" style="font-weight: bold; padding: 0px;">
<span style="font-size: x-small;">Usage</span></div>
<div class="title" style="font-weight: bold; padding: 0px;">
<span class="aui-icon icon-hint" style="background-image: url("data:image/png; background-position: 50% 50%; background-repeat: no-repeat; border: none; display: inline-block; font-weight: normal; height: 16px; left: 10px; margin: 0px; padding: 0px; position: absolute; text-indent: -999em; top: 12px; vertical-align: text-bottom; width: 16px;"><span style="font-size: x-small;">Icon</span></span></div>
<div class="message-content" style="margin: 0px; padding: 0px;">
<pre class="p1" style="padding: 0px;"><span style="font-size: x-small;">generateDiffPigScripts.sh script helps to get diff of 2 files in HDFS with given tolerance.</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;">Usage : </span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;">./generateDiffPigScripts.sh [Options]</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> Options : </span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> -h --help</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> - Print this</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> -file1=[ABSOLUTE_PATH]</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> - File/Folder to compare with</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> -file2=[ABSOLUTE_PATH]</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> - File/FOLDER to compare to</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> -dimpos=[COMMA_SEPERATED_DIMENSIONS_POSITIONS]</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> - Positions of Dimensions in files</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> -meapos=[COMMA_SEPERATED_MEASURES_POSITIONS]</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> - Positions of Measures in files</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> -tollimit=[TOLERANCE_LIMIT]</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> - Tolerance limit when comparing measures</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> -delimeter=[DELIMETER]</span></pre>
<pre class="p1" style="margin-top: 10px; padding: 0px;"><span style="font-size: x-small;"> - Delimeter to be used in PigStorage. Default is tab</span></pre>
</div>
</div>
<div class="aui-message success shadowed information-macro" style="background: rgb(243, 249, 244); border-radius: 5px; border: 1px solid rgb(145, 200, 156); box-shadow: none; margin: 10px 0px 0px; padding: 10px 10px 10px 36px; position: relative;">
<div class="title" style="font-weight: bold; padding: 0px;">
<span style="font-size: x-small;">Usage Example</span></div>
<span class="aui-icon icon-success" style="background-image: url("data:image/png; background-position: 50% 50%; background-repeat: no-repeat; border: none; display: inline-block; height: 16px; left: 10px; margin: 0px; padding: 0px; position: absolute; text-indent: -999em; top: 12px; vertical-align: text-bottom; width: 16px;"><span style="font-size: x-small;">Icon</span></span><div class="message-content" style="margin: 0px; padding: 0px;">
<ul class="_mce_tagged_br" style="margin: 0px;">
<li><div class="p1" style="padding: 0px;">
<span class="s1"><span style="font-size: x-small;">./generateDiffPigScripts.sh -file2="/input/output-mapred.txt" -file1="/input/output-spork.txt" -dimpos="1,2,4,5" -meapos="3,6" -tollimit="2" -delimeter='\u0001'</span></span></div>
</li>
<li class="p1"><div class="p1" style="padding: 0px;">
<span style="font-size: x-small;">This will generate a file /tmp/diff-f1.pig</span></div>
</li>
<li class="p1"><div class="p1" style="padding: 0px;">
<span style="font-size: x-small;">/usr/hdp/current/pig-client/bin/pig /tmp/diff-f1.pig</span></div>
</li>
<li><span style="font-size: x-small;">This will show difference of file2 w.r.t file1</span></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="columnLayout two-equal" data-layout="two-equal" style="background-color: white; color: #333333; display: table; font-family: Arial, sans-serif; line-height: 20px; margin: 0px 0px 8px; padding: 0px; table-layout: fixed; width: 985px;">
<div class="cell normal" data-type="normal" style="border-radius: 5px; box-sizing: border-box; display: table-cell; margin: 8px 0px; padding: 0px 15px; vertical-align: top; word-wrap: break-word;">
<div class="innerCell" style="margin: 0px; overflow-x: auto; padding: 0px;">
<h2 class="p1" id="SporkTesting-InputFiles" style="border-bottom-color: rgb(23, 72, 92); font-weight: normal; line-height: 1.5; margin: 0px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">Input Files</span></span></h2>
<ul style="margin: 10px 0px 0px;">
<li class="p1"><span style="font-size: x-small;"><strong>hadoop fs -cat /input/output-mapred.txt</strong></span><div class="p1" style="margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;"> yagna<span class="Apple-tab-span"> </span>dande<span class="Apple-tab-span"> </span>28.5<span class="Apple-tab-span"> </span>company</span></code></div>
<div class="p1" style="margin-left: 30px; margin-top: 10px; padding: 0px;">
<span style="font-size: x-small;"><code>yagna<span class="Apple-tab-span"> </span>dande<span class="Apple-tab-span"> </span>26.5<span class="Apple-tab-span"> </span></code><span style="font-family: monospace;">company</span></span></div>
<div class="p1" style="margin-left: 30px; margin-top: 10px; padding: 0px;">
<span style="font-size: x-small;"><code>yagna<span class="Apple-tab-span"> </span>dande<span class="Apple-tab-span"> </span>29.5<span class="Apple-tab-span"> </span></code><span style="font-family: monospace;">company</span></span></div>
<div class="p1" style="margin-left: 30px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">hemanth<span class="Apple-tab-span"> </span>dande<span class="Apple-tab-span"> </span>33<span class="Apple-tab-span"> </span>planetsoft</span></code></div>
<div class="p1" style="margin-left: 30px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">hema<span class="Apple-tab-span"> </span>ch<span class="Apple-tab-span"> </span>28<span class="Apple-tab-span"> </span>satyam</span></code></div>
<div class="p1" style="margin-left: 30px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">giri<span class="Apple-tab-span"> </span>ch<span class="Apple-tab-span"> </span>32<span class="Apple-tab-span"> </span>narayana</span></code></div>
</li>
</ul>
<h2 id="SporkTesting-diff12-Toleranceis2.0" style="border-bottom-color: rgb(23, 72, 92); font-weight: normal; line-height: 1.5; margin: 30px 0px 0px; padding: 0px;">
<span style="font-size: x-small;">diff 1 2 - Tolerance is 2.0</span></h2>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">yagna,dande,<span style="font-family: monospace;">company</span>,26.5</span></span></div>
</div>
</div>
<div class="cell normal" data-type="normal" style="border-radius: 5px; box-sizing: border-box; display: table-cell; margin: 8px 0px; padding: 0px 15px; vertical-align: top; word-wrap: break-word;">
<div class="innerCell" style="margin: 0px; overflow-x: auto; padding: 0px;">
<div style="margin: 0px; padding: 0px;">
<strong><span style="font-size: x-small;"><br /></span></strong></div>
<ul style="margin: 10px 0px 0px;">
<li class="p1"><strong><span style="font-size: x-small;">hadoop fs -cat /input/output-spork.txt</span></strong></li>
</ul>
<div class="p1" style="margin-left: 60px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">giri<span class="Apple-tab-span"> </span>ch<span class="Apple-tab-span"> </span>32<span class="Apple-tab-span"> </span>narayana</span></code></div>
<div class="p1" style="margin-left: 60px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">hema<span class="Apple-tab-span"> </span>ch<span class="Apple-tab-span"> </span>28<span class="Apple-tab-span"> </span>satyam</span></code></div>
<div class="p1" style="margin-left: 60px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">hemanth<span class="Apple-tab-span"> </span>dande<span class="Apple-tab-span"> </span>33<span class="Apple-tab-span"> </span>planetsoft</span></code></div>
<div class="p1" style="margin-left: 60px; margin-top: 10px; padding: 0px;">
<span style="font-size: x-small;"><code>yagna<span class="Apple-tab-span"> </span>dande<span class="Apple-tab-span"> </span>29<span class="Apple-tab-span"> </span></code><span style="font-family: monospace;">company</span></span></div>
<div class="p1" style="margin-left: 60px; margin-top: 10px; padding: 0px;">
<span style="font-size: x-small;"><code>yagna<span class="Apple-tab-span"> </span>dande<span class="Apple-tab-span"> </span>39<span class="Apple-tab-span"> </span></code><span style="font-family: monospace;">company</span></span></div>
<div class="p1" style="margin-left: 60px; margin-top: 10px; padding: 0px;">
<span style="font-size: x-small;"><code>yagna1<span class="Apple-tab-span"> </span>dande<span class="Apple-tab-span"> </span>29<span class="Apple-tab-span"> </span></code><span style="font-family: monospace;">company</span></span></div>
<h2 class="p1" id="SporkTesting-diff21-Toleranceis2.0" style="border-bottom-color: rgb(23, 72, 92); font-weight: normal; line-height: 1.5; margin: 30px 0px 0px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">diff 2 1 - Tolerance is 2.0</span></span></h2>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">yagna,dande,<span style="font-family: monospace;">company</span>,39.0</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">yagna1,dande,<span style="font-family: monospace;">company</span>,29.0</span></span></div>
</div>
</div>
</div>
<div class="columnLayout single" data-layout="single" style="background-color: white; color: #333333; display: table; font-family: Arial, sans-serif; line-height: 20px; margin: 0px 0px 8px; padding: 0px; table-layout: fixed; width: 985px;">
<div class="cell normal" data-type="normal" style="border-radius: 5px; box-sizing: border-box; display: table-cell; margin: 8px 0px; padding: 0px 15px; vertical-align: top; word-wrap: break-word;">
<div class="innerCell" style="margin: 0px; overflow-x: auto; padding: 0px;">
<h2 id="SporkTesting-ProofforColumnsorderwillbeintactwhenrunwithMapReduceandSpark" style="border-bottom-color: rgb(23, 72, 92); font-weight: normal; line-height: 1.5; margin: 0px; padding: 0px;">
<span style="font-size: x-small;">Proof for Columns order will be intact when run with MapReduce and Spark</span></h2>
<ol style="margin: 10px 0px 0px;">
<li><span style="font-size: x-small;">wget <a class="external-link" href="http://hortonassets.s3.amazonaws.com/pig/lahman591-csv.zip" rel="nofollow" style="color: #3b73af; text-decoration: none;">http://hortonassets.s3.amazonaws.com/pig/lahman591-csv.zip</a></span></li>
<li><span style="font-size: x-small;">unzip it</span></li>
<li><span style="font-size: x-small;">upload M<code>aster.csv</code> and B<code>atting.csv</code></span></li>
<li><span style="font-size: x-small;">Execute pig Script</span></li>
</ol>
<div class="p1" style="margin-left: 90px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">batting = load '/input/Batting.csv' using PigStorage(',');</span></code></div>
<div class="p1" style="margin-left: 90px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">raw_runs = FILTER batting BY $1>0;</span></code></div>
<div class="p1" style="margin-left: 90px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">runs = FOREACH raw_runs GENERATE $0 as playerID, $1 as year, $8 as runs;</span></code></div>
<div class="p1" style="margin-left: 90px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">grp_data = GROUP runs by (year);</span></code></div>
<div class="p1" style="margin-left: 90px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">max_runs = FOREACH grp_data GENERATE group as grp,MAX(runs.runs) as max_runs;</span></code></div>
<div class="p1" style="margin-left: 90px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">join_max_run = JOIN max_runs by ($0, max_runs), runs by (year,runs);</span></code></div>
<div class="p1" style="margin-left: 90px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">join_data = FOREACH join_max_run GENERATE $0 as year, $2 as playerID, $1 as runs;</span></code></div>
<div class="p1" style="margin-left: 90px; margin-top: 10px; padding: 0px;">
<code><span style="font-size: x-small;">DUMP join_data;</span></code></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<br /></div>
</div>
</div>
</div>
<div class="columnLayout two-equal" data-layout="two-equal" style="background-color: white; color: #333333; display: table; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; margin: 0px 0px 8px; padding: 0px; table-layout: fixed; width: 985px;">
<div class="cell normal" data-type="normal" style="border-radius: 5px; box-sizing: border-box; display: table-cell; margin: 8px 0px; padding: 0px 15px; vertical-align: top; word-wrap: break-word;">
<div class="innerCell" style="margin: 0px; overflow-x: auto; padding: 0px;">
<h3 class="p1" id="SporkTesting-Spark" style="line-height: 1.5; margin: 0px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">Spark</span></span></h3>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1966,aloufe01,122.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1966,robinfr02,122.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1876,barnero01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1957,mantlmi01,121.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1872,eggleda01,94.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1894,hamilbi01,192.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1904,brownge01,99.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1906,chancfr01,103.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1906,wagneho01,103.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1955,snidedu01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1913,collied01,125.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1940,willite01,134.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1902,fultzda01,109.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1902,hartsto01,109.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1889,griffmi01,152.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1889,stoveha01,152.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1937,dimagjo01,151.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1926,ruthba01,139.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1878,highadi01,60.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1980,wilsowi02,133.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1951,kinerra01,124.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1951,musiast01,124.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1997,biggicr01,146.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1968,beckegl01,98.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1939,rolfere01,139.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1931,gehrilo01,163.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1908,mcintma01,105.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2006,sizemgr01,134.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1944,stirnsn01,125.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1977,carewro01,128.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1911,cobbty01,147.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1962,robinfr02,134.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1915,cobbty01,144.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1960,mantlmi01,119.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1896,burkeje01,160.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1933,gehrilo01,138.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1883,stoveha01,110.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1942,willite01,141.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1900,thomaro01,132.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1890,duffyhu01,161.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1953,snidedu01,132.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1986,henderi01,130.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1975,rosepe01,112.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1898,mcgrajo01,143.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1964,allendi01,125.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2000,bagweje01,152.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1881,gorege01,86.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1988,boggswa01,128.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1922,hornsro01,141.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1971,brocklo01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2002,soriaal01,128.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1979,baylodo01,120.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1874,mcveyca01,91.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1999,bagweje01,143.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1892,childcu01,136.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2008,ramirha01,125.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2004,pujolal01,133.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1982,molitpa01,136.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1973,bondsbo01,131.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1887,oneilti01,167.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1885,stoveha01,130.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1924,ruthba01,143.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1917,bushdo01,112.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1991,molitpa01,133.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1935,galanau01,133.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1920,ruthba01,158.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1959,pinsova01,131.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1919,ruthba01,103.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1928,ruthba01,163.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1995,biggicr01,123.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2011,grandcu01,136.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1948,henrito01,138.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1993,dykstle01,143.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1984,evansdw01,121.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1946,willite01,142.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1921,ruthba01,177.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1893,longhe01,149.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1990,henderi01,119.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1934,gehrich01,134.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2010,pujolal01,115.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1918,grohhe01,86.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1901,lajoina01,145.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1996,burksel01,142.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1963,aaronha01,121.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1923,ruthba01,151.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1932,kleinch01,152.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1916,cobbty01,113.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1877,orourji01,68.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1958,mantlmi01,127.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1978,lefloro01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2001,sosasa01,146.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1936,gehrilo01,167.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1974,rosepe01,110.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1965,harpeto01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1965,versazo01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1947,mizejo01,137.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1873,barnero01,125.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1956,mantlmi01,132.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1985,henderi01,146.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1888,pinknge01,134.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1994,thomafr04,106.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2003,pujolal01,137.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1884,dunlafr01,160.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1970,willibi01,137.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1967,aaronha01,113.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1967,brocklo01,113.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1871,barnero01,66.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1910,mageesh01,110.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1925,cuyleki01,144.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2007,rodrial01,143.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1938,greenha01,144.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1981,henderi01,89.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1929,hornsro01,156.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1927,ruthba01,158.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1905,donlimi01,124.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1912,collied01,137.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1914,collied01,122.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1943,vaughar01,112.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1983,raineti01,133.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1972,morgajo02,122.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1976,rosepe01,130.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1969,jacksre01,123.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1895,hamilbi01,166.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1941,willite01,135.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1945,stanked01,128.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1998,sosasa01,134.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1954,mantlmi01,129.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1897,hamilbi01,152.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1907,shannsp01,104.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2005,pujolal01,129.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1879,jonesch01,85.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1903,beaumgi01,137.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1930,kleinch01,158.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1909,leachto01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2009,pujolal01,124.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1952,hemusso01,105.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1952,musiast01,105.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1875,barnero01,115.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1880,dalryab01,91.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1899,keelewi01,140.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1899,mcgrajo01,140.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1949,willite01,150.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1989,boggswa01,113.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1961,mantlmi01,132.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1961,marisro01,132.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1891,brownto01,177.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1987,raineti01,123.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1992,phillto02,114.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1886,kellyki01,155.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1882,gorege01,99.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1950,dimagdo01,131.0)</span></span></div>
</div>
</div>
<div class="cell normal" data-type="normal" style="border-radius: 5px; box-sizing: border-box; display: table-cell; margin: 8px 0px; padding: 0px 15px; vertical-align: top; word-wrap: break-word;">
<div class="innerCell" style="margin: 0px; overflow-x: auto; padding: 0px;">
<h3 class="p1" id="SporkTesting-MapReduce" style="line-height: 1.5; margin: 0px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">Map Reduce</span></span></h3>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1871,barnero01,66.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1872,eggleda01,94.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1873,barnero01,125.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1874,mcveyca01,91.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1875,barnero01,115.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1876,barnero01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1877,orourji01,68.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1878,highadi01,60.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1879,jonesch01,85.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1880,dalryab01,91.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1881,gorege01,86.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1882,gorege01,99.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1883,stoveha01,110.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1884,dunlafr01,160.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1885,stoveha01,130.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1886,kellyki01,155.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1887,oneilti01,167.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1888,pinknge01,134.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1889,griffmi01,152.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1889,stoveha01,152.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1890,duffyhu01,161.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1891,brownto01,177.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1892,childcu01,136.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1893,longhe01,149.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1894,hamilbi01,192.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1895,hamilbi01,166.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1896,burkeje01,160.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1897,hamilbi01,152.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1898,mcgrajo01,143.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1899,keelewi01,140.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1899,mcgrajo01,140.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1900,thomaro01,132.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1901,lajoina01,145.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1902,hartsto01,109.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1902,fultzda01,109.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1903,beaumgi01,137.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1904,brownge01,99.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1905,donlimi01,124.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1906,wagneho01,103.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1906,chancfr01,103.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1907,shannsp01,104.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1908,mcintma01,105.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1909,leachto01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1910,mageesh01,110.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1911,cobbty01,147.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1912,collied01,137.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1913,collied01,125.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1914,collied01,122.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1915,cobbty01,144.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1916,cobbty01,113.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1917,bushdo01,112.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1918,grohhe01,86.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1919,ruthba01,103.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1920,ruthba01,158.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1921,ruthba01,177.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1922,hornsro01,141.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1923,ruthba01,151.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1924,ruthba01,143.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1925,cuyleki01,144.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1926,ruthba01,139.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1927,ruthba01,158.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1928,ruthba01,163.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1929,hornsro01,156.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1930,kleinch01,158.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1931,gehrilo01,163.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1932,kleinch01,152.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1933,gehrilo01,138.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1934,gehrich01,134.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1935,galanau01,133.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1936,gehrilo01,167.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1937,dimagjo01,151.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1938,greenha01,144.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1939,rolfere01,139.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1940,willite01,134.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1941,willite01,135.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1942,willite01,141.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1943,vaughar01,112.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1944,stirnsn01,125.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1945,stanked01,128.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1946,willite01,142.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1947,mizejo01,137.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1948,henrito01,138.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1949,willite01,150.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1950,dimagdo01,131.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1951,kinerra01,124.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1951,musiast01,124.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1952,hemusso01,105.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1952,musiast01,105.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1953,snidedu01,132.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1954,mantlmi01,129.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1955,snidedu01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1956,mantlmi01,132.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1957,mantlmi01,121.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1958,mantlmi01,127.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1959,pinsova01,131.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1960,mantlmi01,119.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1961,marisro01,132.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1961,mantlmi01,132.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1962,robinfr02,134.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1963,aaronha01,121.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1964,allendi01,125.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1965,harpeto01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1965,versazo01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1966,robinfr02,122.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1966,aloufe01,122.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1967,aaronha01,113.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1967,brocklo01,113.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1968,beckegl01,98.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1969,jacksre01,123.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1970,willibi01,137.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1971,brocklo01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1972,morgajo02,122.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1973,bondsbo01,131.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1974,rosepe01,110.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1975,rosepe01,112.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1976,rosepe01,130.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1977,carewro01,128.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1978,lefloro01,126.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1979,baylodo01,120.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1980,wilsowi02,133.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1981,henderi01,89.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1982,molitpa01,136.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1983,raineti01,133.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1984,evansdw01,121.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1985,henderi01,146.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1986,henderi01,130.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1987,raineti01,123.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1988,boggswa01,128.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1989,boggswa01,113.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1990,henderi01,119.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1991,molitpa01,133.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1992,phillto02,114.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1993,dykstle01,143.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1994,thomafr04,106.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1995,biggicr01,123.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1996,burksel01,142.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1997,biggicr01,146.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1998,sosasa01,134.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(1999,bagweje01,143.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2000,bagweje01,152.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2001,sosasa01,146.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2002,soriaal01,128.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2003,pujolal01,137.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2004,pujolal01,133.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2005,pujolal01,129.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2006,sizemgr01,134.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2007,rodrial01,143.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2008,ramirha01,125.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2009,pujolal01,124.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2010,pujolal01,115.0)</span></span></div>
<div class="p1" style="margin-top: 10px; padding: 0px;">
<span class="s1"><span style="font-size: x-small;">(2011,grandcu01,136.0)</span></span></div>
</div>
</div>
</div>
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-58793364744857753732016-04-26T02:31:00.003-07:002016-04-26T02:31:48.684-07:00UI Test Automation using Page Object Model<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
The toughest part in UI automation is to maintain scripts with the latest changes happening on the pages like changes in DOM. This is because of having same XPATH or CSS at multiple locations.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
To solve this the first step could be moving all these elements to single constant class. But then it would be difficult when this list grows. So to categorize these elements, one can create separate class per page. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
But next hardship comes with different actions that we can perform on multiple pages. For example initially accepting Terms and Conditions is a checkbox then they have changed it to radio button. So both the XPATH and method got changed here. So one can put all these methods into the same classes that we have created per page.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
So now we have one class per page which has elements of that page and actions on that page are defined. This ideology is the basis for new approach in UI Automation called Page Object Model. Its essentially same ideology which don't allow duplication of code or scattering of code.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Selenium Webdriver provides Page Object Model (POM) as a feature. It allows you to defined Page Objects and it takes care of initializing these objects using Page Factory.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>For example</b> if you have Google Home Page, the elements like Text Box, Search Box, Language Options will be elements defined as XPaths or CSS in POM and Search is an action that you can perform on the page. That will be a method in POM. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Also when you write test cases using POM, all the UIness will be abstracted in Page Objects. So your tests can be executed against APIs if they are valid in that context.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
~Yagna</div>
<div style="text-align: justify;">
<br /></div>
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-77220893557659422452016-04-26T02:12:00.002-07:002016-04-26T02:12:33.932-07:00Approach for Data Generation to test Big Data<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
There are several ways that we can test Big Data Pipelines.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>1. Golden Data Set</b></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
In this approach, one will create a Data Set either by Hand or by copying it from Production. Manually expected output is determined by running the logic in Human brain. Once expected output is determined, the data set along with expected output will be called as Golden Set. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
This is a good approach to begin with. But when more number of columns gets added (Regular activity in Data Team) and they have relation with existing columns then it will become really tedious to maintain this data. Also as expected output has to be determined by running logic manually one cannot do this for a bigger data set or for complex logic which involves more columns to determine a column in the output.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
In this case, one solution can be writing a parallel code to the dev code using different technological stack to determine expected output. But the biggest disadvantage of this approach is that QA need to have the knowledge of the alternative stack(huge learning curve) and QA can make the same mistake that of Dev while developing this pipeline.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>2. Controlled Data Generation using contracts (Based on Use case Testing)</b></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
In this approach every input logline and output logline/Table will be defined either as a POJO(Plain Old Java Object) or will be used from existing contracts like Thrifts. A test case writer will be defining the input columns and valued and expected output columns and values in the form of CSV using logline definitions.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
The generator will be padding all other columns from logline definitions by providing valid values. This gives biggest benefit in terms of extendability of the same test cases even if 100 new columns gets added. Also as Test case writer is handling one column or one relation (having multiple columns) at a time in a test case, he has to modify only those test cases which have columns that got affected due to addition of new columns. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
In normal case, all the old test cases will remain same and new test cases are added for new columns and definitions are updated with new columns. This can also work with optional columns kind of situations.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
~Yagna</div>
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-37558938091914834212016-04-13T04:34:00.000-07:002016-04-13T04:34:15.349-07:00Simplify Big Data Testing through Spark library<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 3pt; margin-top: 0pt; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<b id="docs-internal-guid-224e9189-0f61-8173-0c43-d33e0a702e6f" style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Testing Big Data Pipelines is increasingly becoming complex. This has two factors. One is with maintaining setup and one is with defining or deriving the expected result.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Maintaining Setup</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Hadoop ecosystem is growing rapidly and different teams are utilizing different components of ecosystem which suite their need. This increases number of components of Hadoop ecosystem to be maintained in Test Setup. This includes maintaining correct versions, required directories with correct ownership, local users and hdfs users, status of services. It is estimated that 60-70% of test cycle is vested on deployments and configurations. </span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Defining or deriving Expected Results</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">After setup the biggest challenge will be to figure out a substance with which the output is compared to. This substance is known as expected Result. There are different ways to do that. We will talk about 3 major variances.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Golden Dataset</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">A predefined data set which is mostly hand woven and expected result is derived by going through the data manually.</span></div>
<ol start="2" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Production Dataset</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This data is a subset of data copied from Production System. Expected result will be derived by running SQL, HQL or Pig Scripts that are hand written.</span></div>
<ol start="3" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Generated Dataset</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify; text-indent: 36pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This data is generated with variety of tools/programs with a predefined set of rules. Expected result will be derived by running the SQL, HQL or Pig Scripts that are derived by the tool/program.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Proposal</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The proposed system will deal with these complexities by providing various REST Services like </span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Infrastructure Service</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This service provides APIs to deploy given set of machines with different components, configure and validate the deployments. Deploying, Configuring and Validating deployments are three independent services so that one can use them independently based on the kind of setup he has.</span></div>
<ol start="2" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Data Service</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This service provides APIs to generate data, ingest data into HDFS with given rules. Generating data and ingesting data are two independent services so that one can use them based on their requirement.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<ol start="3" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Execution Service</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This service provides APIs to utilize various executors to run their Pipelines and monitor them. Again utilizing executors and monitors are independent. This service also provides APIs to retrieve performance related Metrics.</span></div>
<ol start="4" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Validation Service</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This service provides APIs to invoke various validators based on the dataset.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh82kSESY0_desQpVkunGEJdumHiEFkWZZUAYkqVWEEFc-ROHKLL9b3_7iG68LWfB9Ee6k48IEF9v22jljrE39tb0DlyhmS4zo8bXtVQ7BUADmMy_leDZfDAbDd4Aho7lFbziuknslqXZtz/s1600/Screen+Shot+2016-04-13+at+5.00.33+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh82kSESY0_desQpVkunGEJdumHiEFkWZZUAYkqVWEEFc-ROHKLL9b3_7iG68LWfB9Ee6k48IEF9v22jljrE39tb0DlyhmS4zo8bXtVQ7BUADmMy_leDZfDAbDd4Aho7lFbziuknslqXZtz/s320/Screen+Shot+2016-04-13+at+5.00.33+PM.png" width="320" /></a></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Each service will use utility methods provided in a separate repository.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Utilities</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Following utilities will be provided as part of this framework.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">SSH Utils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help to connect to a remote machine and execute commands on it. It also provides capabilities to transfer files from and to remote machine.</span></div>
<ol start="2" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Benerator Utils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help in generating data using Benerator tool, creating schema for HSQLDB and deriving expected results.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<ol start="3" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Hadoop Utils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help in executing hadoop commands, copying files to and from hadoop.</span></div>
<ol start="4" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">String Utils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help in dealing with all kinds of String operations.</span></div>
<ol start="5" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">JSON Utils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help in dealing with JSON related complexities like getting value of a given element in a complex JSON, creation of JSON using objects.</span></div>
<ol start="6" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Database Utils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help in maintaining connection pool, connecting and executing and retrieving results from any Database using JDBC connector.</span></div>
<ol start="7" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">lzo Utils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help in compressing and uncompressing files using lzop.</span></div>
<ol start="8" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Pig Utils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help in executing pig scripts, monitoring the execution.</span></div>
<ol start="9" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Falcon Utils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help in creating cluster, submitting feeds, submitting process and monitoring.</span></div>
<ol start="10" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Storm Utils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help in submitting Storm Topologies and monitoring them.</span></div>
<ol start="11" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Kafka Utils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help in start/stop/restart producer/consumer/Kafka server.</span></div>
<ol start="12" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Ambari Utils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help in deploying through Ambari blueprints, start/stop/status/restart of services and components, configuring services and components, sync configs from another cluster.</span></div>
<ol start="13" style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">RESTUtils</span></div>
</li>
</ol>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">These will help in creating GET/POST/PUT REST requests, submit them and get results in JSON.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: italic; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">All utility methods should provide Java Documentation. </span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This framework will be provided as </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Hosted Service </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">from Data QA Team. But the infrastructure to run the pipelines will not be a hosted service and should be registered with this framework while calling REST APIs.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Advantages</span></div>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><br /></b></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Existing framework only works with in-memory dataset due to tight coupling of Benerator. With new design one can use any Dataset and any Validation.</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In the current system there is no way to test with production Dataset or Golden Dataset. With new design one can use any Dataset</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Current system cannot be used for Performance or Stability related testing as it works with in-memory dataset. With new design one can pump large data sets and can measure performance, stability or reliability of the platform.</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">During a test cycle if one wants to use some operations available in the framework, he has to gather a lot of information to segregate that code and use. This will be taken care with the new design due to introduction of REST APIs.</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">As this framework will be a </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Hosted Service, </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">adaptability will be more and resistance will be less. </span></div>
</li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: left;">
<span style="font-family: Arial; font-size: 14.6667px; font-weight: bold; line-height: 20.24px; text-align: justify; white-space: pre-wrap;">Implementation</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPnZE8SX3ri4iB7UaVVKGogIhU251HyWwTNgoe2086iDsiiHM7CjHGkPuydrSGmQP7RsPDkw30br_s5g2aqnAP2t7T2ZE8TpY8nqb-xhE7HPWhMJQUMS0FuSb72xt2UQa8Phg4OrEsBH7g/s1600/Screen+Shot+2016-04-13+at+4.29.01+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPnZE8SX3ri4iB7UaVVKGogIhU251HyWwTNgoe2086iDsiiHM7CjHGkPuydrSGmQP7RsPDkw30br_s5g2aqnAP2t7T2ZE8TpY8nqb-xhE7HPWhMJQUMS0FuSb72xt2UQa8Phg4OrEsBH7g/s1600/Screen+Shot+2016-04-13+at+4.29.01+PM.png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5zOTvsL5VqZ7q6Wc_Qh17zvQW8Ly2pu7FiptYJlnLHtYoeSKUPFWWWKZ90gb7FxvbddySCA9Q9uvnN4H76-IRNg28ClAipRyRwFB1U8ysup8aXW34PkpfcSi9zkhVtd7I55oHqybVabPZ/s1600/Screen+Shot+2016-04-13+at+4.46.12+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="341" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5zOTvsL5VqZ7q6Wc_Qh17zvQW8Ly2pu7FiptYJlnLHtYoeSKUPFWWWKZ90gb7FxvbddySCA9Q9uvnN4H76-IRNg28ClAipRyRwFB1U8ysup8aXW34PkpfcSi9zkhVtd7I55oHqybVabPZ/s400/Screen+Shot+2016-04-13+at+4.46.12+PM.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial; font-size: 14.6667px; font-weight: bold; line-height: 20.24px; text-align: justify; white-space: pre-wrap;">Execution</span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">mvn exec:java -Dexec.mainClass=<Fully_Qualified_Class_Name_Main_Method></span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">~Yagna</span></div>
<div class="p1">
<span class="s1"><br /></span></div>
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-29622824221264096092016-04-13T03:43:00.001-07:002016-04-13T03:47:49.044-07:00RestAPI Docs using apidocjs during build on Jenkins<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;">* Installation - <span style="background-color: #292b36; color: white; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;">npm install apidoc -g</span></span><br />
<br />
<br />
<br />
<article id="run" style="background-color: #fcfcfc; border: 0px; color: #3a3a3a; font-stretch: inherit; line-height: 20px; margin: 0px; padding: 0px; vertical-align: baseline;"></article><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;">* Sample Documentation done for a Distcp(Hadoop File System) utility method is shown below</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif; margin-left: 1em; margin-right: 1em;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVDVP2gi9F1hx2IQF6dGLB3hjitGKZBIJCdoB2wKqjUlVPz4r-SowzCRdGyvsVfNB0iv2VjQ4yuWHHOx-mR8MZcYZVR9Rv3KSuL6xmhVT_c6Pr4g-dZVClW6UVsdR6PIqrvgYGtkOSSNdu/s1600/Screen+Shot+2016-04-13+at+3.52.26+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="142" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVDVP2gi9F1hx2IQF6dGLB3hjitGKZBIJCdoB2wKqjUlVPz4r-SowzCRdGyvsVfNB0iv2VjQ4yuWHHOx-mR8MZcYZVR9Rv3KSuL6xmhVT_c6Pr4g-dZVClW6UVsdR6PIqrvgYGtkOSSNdu/s400/Screen+Shot+2016-04-13+at+3.52.26+PM.png" width="400" /></a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: xx-small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;">* Create a file called apidoc.json with following content</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOe3LXHXec_xLMii4EVFtPbMyRXh1wi2Ljl2FyGenWRJ66cBM2G_3J0LVVkv8reRNdXwszaqSMdUakD9Fkr0eMIB3AfWBhNM9TWttmC-LK4dJ99AcqwgwN5TSVQ8VUCRLeda0-IcFHNxL7/s1600/Screen+Shot+2016-04-13+at+3.55.24+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;"><img border="0" height="127" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOe3LXHXec_xLMii4EVFtPbMyRXh1wi2Ljl2FyGenWRJ66cBM2G_3J0LVVkv8reRNdXwszaqSMdUakD9Fkr0eMIB3AfWBhNM9TWttmC-LK4dJ99AcqwgwN5TSVQ8VUCRLeda0-IcFHNxL7/s400/Screen+Shot+2016-04-13+at+3.55.24+PM.png" width="400" /></span></a></div>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;">* Now in Jenkins </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTd5UkdtLE3lT62tKFDQfAZQqSRtUxugzAXPPprSOQ4WjzlJ_bM0ROvNtheg7UznOKqr5hYTcY5xA_I5iC3b2EsubfeBAJRgCYdT2sB839DWyQIeDA91keYJHxdHWROflMAG148IB2lQH8/s1600/Screen+Shot+2016-04-13+at+3.56.23+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;"><img border="0" height="152" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTd5UkdtLE3lT62tKFDQfAZQqSRtUxugzAXPPprSOQ4WjzlJ_bM0ROvNtheg7UznOKqr5hYTcY5xA_I5iC3b2EsubfeBAJRgCYdT2sB839DWyQIeDA91keYJHxdHWROflMAG148IB2lQH8/s640/Screen+Shot+2016-04-13+at+3.56.23+PM.png" width="640" /></span></a></div>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;">* Now from the browser go to the workspace of this Project in Jenkins and see docs folder and point to index.html, you can see following icon</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGrJC1qdAQpA6WZKper-NuD4DW9EM3WjrQllS3VOt-bdpQ7feFstpBD-OBKOW4rjkMDziHmoopI3Ot8sL5sYam_jIHERBrVkYB2PKoFUo7r2dyEA8vtTli5O55k_umljkmSdUCw4gMnW1O/s1600/Screen+Shot+2016-04-13+at+3.57.00+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;"><img border="0" height="92" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGrJC1qdAQpA6WZKper-NuD4DW9EM3WjrQllS3VOt-bdpQ7feFstpBD-OBKOW4rjkMDziHmoopI3Ot8sL5sYam_jIHERBrVkYB2PKoFUo7r2dyEA8vtTli5O55k_umljkmSdUCw4gMnW1O/s200/Screen+Shot+2016-04-13+at+3.57.00+PM.png" width="200" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;">* Left side of the page will have </span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjXF02rb9J9-MNaxN9Yw0KUm2uq4315YPgI1r80h83PE1-I_aIV_Dem3sEjT_mr3IPCJ3FlYoJeW10KdpY_ItWmWAOeO0hYeoXbmvg0gMNBbmjyMXcY0SCAbLEkjkO6pPfp7NLkhzWpahz/s1600/Screen+Shot+2016-04-13+at+3.57.29+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjXF02rb9J9-MNaxN9Yw0KUm2uq4315YPgI1r80h83PE1-I_aIV_Dem3sEjT_mr3IPCJ3FlYoJeW10KdpY_ItWmWAOeO0hYeoXbmvg0gMNBbmjyMXcY0SCAbLEkjkO6pPfp7NLkhzWpahz/s1600/Screen+Shot+2016-04-13+at+3.57.29+PM.png" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;">* On Right side of the page shows actual documentation</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS0MoAklPcFBiNsbpM70QA_e7bGJNYApnIJSR7Dz3y67k9gLvgephI4cGbetsiSxDWBkSZIiPo0cQDBQTUjVe7HqMWWE-AFIkYcZr7sOLcsaUtmOb4nYbiLXacVDwohxrM9abaYpg4ffoR/s1600/Screen+Shot+2016-04-13+at+3.57.17+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;"><img border="0" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS0MoAklPcFBiNsbpM70QA_e7bGJNYApnIJSR7Dz3y67k9gLvgephI4cGbetsiSxDWBkSZIiPo0cQDBQTUjVe7HqMWWE-AFIkYcZr7sOLcsaUtmOb4nYbiLXacVDwohxrM9abaYpg4ffoR/s400/Screen+Shot+2016-04-13+at+3.57.17+PM.png" width="400" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;">* One can get more detailed examples at http://apidocjs.com/</span></div>
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;">~Yagna</span><br />
<br /></div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-26610074331525962262015-12-08T20:35:00.003-08:002016-06-14T00:11:00.557-07:00Testing in Agile Sprint using SuiTest (TestFlo)<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tim and Joe are members of an agile Team. Tim playing a developer role and Joe playing QA role. John is Scrum master. They are working in a Sprint of 2 Weeks. Let us illustrate several situations arises during a Sprint.</span></div>
<b id="docs-internal-guid-4c66615c-8501-c0a6-8ce2-32f26836be5b" style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tim: Hi Joe, coming for Sprint Planning meeting?</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Joe: Yeah, let’s go.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tim: Oh! Hectic meeting. But I am sure of what to deliver for this Sprint.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Joe: But tell me more about Story JTP-227.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tim: Story on JIRA is updated with links where you can find more details. You can come back to me if you need more clarifications.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Joe: Thanks Tim.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Joe: Hi Tim. I have written Test Cases for Story JTP-227, can you review?</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tim: Sure! Where can I see Test Cases and how do I know which one is related to Story?</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Joe: </span><span style="background-color: transparent; color: #ff9900; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Test Cases are listed down under a Story in JIRA</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tim: Really!! I have never seen like that. Are they subtasks for Story? </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Joe: No. They are not subtasks. They are Test Cases in JIRA. We are using a plugin called SuiTest. See here how they look</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://intenso.atlassian.net/wiki/download/attachments/21987683/control_r_coverage1.png?version=1&modificationDate=1444999697673&api=v2" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="164" src="https://intenso.atlassian.net/wiki/download/attachments/21987683/control_r_coverage1.png?version=1&modificationDate=1444999697673&api=v2" width="320" /></a></div>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tim: That’s awesome. Let me review and revert back by EOD.</span></div>
<b style="font-weight: normal;"><br /><br /><br /><br /><br /></b><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tim: Hey Joe, I have review and have put </span><span style="background-color: transparent; color: #ff9900; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">review comments for Test Cases in JIRA</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Joe: Sure I will look into them.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<br /></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tim: Hey Joe, just want to check what's the status of Test execution for Story JTP-227.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Joe: 1 sec, let me open JIRA to see </span><span style="background-color: transparent; color: #ff9900; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Test Execution status for Story</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> … Okay here is the status. Executed 2 Test cases out of 3, 1 Pass, 1 Fail. </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://intenso.atlassian.net/wiki/download/attachments/23265410/panel%20filter%20result%20simple%20preview.png?version=1&modificationDate=1445858992349&api=v2" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="214" src="https://intenso.atlassian.net/wiki/download/attachments/23265410/panel%20filter%20result%20simple%20preview.png?version=1&modificationDate=1445858992349&api=v2" width="320" /></a></div>
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tim: Is JTP-235 failing? What the Bug id?</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Joe: JTP-238. You can find </span><span style="background-color: transparent; color: #ff9900; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Bug ID against failed Test Case.</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tim: Cool! That made it easy for me to understand the steps with which I can reproduce the issue. I can execute this test case to verify my Fix.</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">John: Hi Joe, what the status of Test execution for Release.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Joe: Hi John. What a pleasant surprise! One sec, I will open JIRA to check</span><span style="background-color: transparent; color: #ff9900; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Test Execution Status of Test Plan for Release</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> X.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://intenso.atlassian.net/wiki/download/attachments/21987683/control_r_tpprog1.png?version=1&modificationDate=1444999697571&api=v2" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="160" src="https://intenso.atlassian.net/wiki/download/attachments/21987683/control_r_tpprog1.png?version=1&modificationDate=1444999697571&api=v2" width="320" /></a></div>
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Okay here it is. We have executed 67% and there is one Open Bug JTP-238.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">John: That’s a quick answer. Thanks Joe. I am going for lunch. Bye.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">John: Hey Joe, are all the test cases written by you ported to JIRA?</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Joe: Yeah, we have</span><span style="background-color: transparent; color: #ff9900; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><a href="https://intenso.atlassian.net/wiki/display/SUIT/CSV+TCT+Importer" style="text-decoration: none;"><span style="background-color: transparent; color: #ff9900; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">imported all existing Test Cases using CSV importer </span></a></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">John: One last question, I can see that there are 267 regression tests, do you run all of these and update on JIRA? It will take a lot of time to do this right?</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Joe: No John, we don’t update JIRA manually, we use </span><span style="background-color: transparent; color: #ff9900; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">JIRA API to run Automated Tests and update JIRA automatically</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://intenso.atlassian.net/wiki/download/attachments/21987696/Automate_u_JIRA_REST_API_Bamboo_Jenkins.png?version=1&modificationDate=1445000130544&api=v2" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="165" src="https://intenso.atlassian.net/wiki/download/attachments/21987696/Automate_u_JIRA_REST_API_Bamboo_Jenkins.png?version=1&modificationDate=1445000130544&api=v2" width="320" /></a></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">From above illustrations we can understand the following benefits </span></div>
<br />
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Building repository of Test Cases allowing you to create Test Plans</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Snapshots of test cases within Test Plan or Story</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Establish real-time insights and clear traceability between requirements, test cases, and defects to determine test coverage and ensure tests exists for all requirements.</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">JIRA Software integration and Sprint reports</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Import Test Cases from CSV, TestLink and other systems</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Run automated tests on Bamboo/Jenkins by changing the status of your Test Plan and receive updates about the results of tests execution in JIRA using comprehensive REST API </span></div>
</li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Plan, track, and proactively manage manual, automated, and API tests in one repository to mitigate risk. </span></div>
</li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Use reports to get better understanding of test coverage, defect trending, and sprint status. </span></div>
</li>
</ul>
<div>
<span style="font-family: "arial";"><span style="font-size: 14.6667px; white-space: pre-wrap;"><br /></span></span></div>
<div>
<span style="font-family: "arial";"><span style="font-size: 14.6667px; white-space: pre-wrap;">Image Courtesy: Images are taken from https://intenso.atlassian.net/wiki/ </span></span></div>
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-66099627518455429242015-04-27T11:39:00.001-07:002015-04-27T11:39:19.206-07:00Traceability Matrix using TestLink/github and Jenkins/Hudson<div dir="ltr" style="text-align: left;" trbidi="on">
At my current work place we were using TestLink (We have moved to SuiTest now) for writing TestCases and my boss asked me to see if all the Stories have Test Cases or not. I have written this simple program and integrated with Jenkins to get a nice graph showing Test Case traceability like below<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrp711mG5bpq5TsPJ1ThKgEovBYzgTOouvMNxI7DN-RivrHcCXfbVe6z0k2OKlex0nhmU7MIy8qsdLJPJtxdeV3oHZxc3p4nGlh7LL8CUu3LttVUPXVSrSzNS_ipQn54gMxUaQNdCE2b5J/s1600/Traceability.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrp711mG5bpq5TsPJ1ThKgEovBYzgTOouvMNxI7DN-RivrHcCXfbVe6z0k2OKlex0nhmU7MIy8qsdLJPJtxdeV3oHZxc3p4nGlh7LL8CUu3LttVUPXVSrSzNS_ipQn54gMxUaQNdCE2b5J/s1600/Traceability.png" height="240" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
In the above graph<span style="color: red;"> red line</span> shows total Stories in a sprint, <span style="color: lime;">green line</span> shows Stories which have at least one Test Case and <span style="color: blue;">blue line</span> shows stories which have at least one automated test case.<br />
<br />
To achieve this we have followed below rules as a Team.<br />
<br />
<br />
<ol style="text-align: left;">
<li>Test Suite in TestLink has same name as Story ID in JIRA</li>
<li>Test Suite Name in Java/Script in github has same as Story ID in JIRA</li>
</ol>
<div>
This traceability program takes stories in a Sprint as input and do following things</div>
<div>
<ol style="text-align: left;">
<li>Connects to TestLink and searches for Test Suites corresponding to Stories, also creates statistics </li>
<li>Connects to github and searches for Test Suites corresponding to Stories, also creates statistics</li>
</ol>
<div>
A Jenkins job is created with configuration as follows</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL9Jo62wAW2OVKPWIJj6ymsG2XLBydTp_GWZ040HQ9CEgentlKLt0rC1uzwy6xPkZriYswO0fzZJNvDGywu_L7oOUavaBQXCxit7f-HIHb1xN6afcIl4iRUkQ0BDxfA6RZhMxO_u6b6W1X/s1600/Screen+Shot+2015-04-27+at+11.46.31+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL9Jo62wAW2OVKPWIJj6ymsG2XLBydTp_GWZ040HQ9CEgentlKLt0rC1uzwy6xPkZriYswO0fzZJNvDGywu_L7oOUavaBQXCxit7f-HIHb1xN6afcIl4iRUkQ0BDxfA6RZhMxO_u6b6W1X/s1600/Screen+Shot+2015-04-27+at+11.46.31+pm.png" height="184" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq2ZXaoFlsASedY23QrlODdlGsdd-pvajk_xBSRkmZADwnbjBGJkyVOYmT-95W-Xm9_TDvuwGuXN3RUF3v1TkqhT-SnDlaaudkTi262CgWsFLK-RiYDcKmyMe7ttMf1Xk8PGOFY4ob_Ty8/s1600/Screen+Shot+2015-04-27+at+11.46.38+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq2ZXaoFlsASedY23QrlODdlGsdd-pvajk_xBSRkmZADwnbjBGJkyVOYmT-95W-Xm9_TDvuwGuXN3RUF3v1TkqhT-SnDlaaudkTi262CgWsFLK-RiYDcKmyMe7ttMf1Xk8PGOFY4ob_Ty8/s1600/Screen+Shot+2015-04-27+at+11.46.38+pm.png" height="196" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBP0sfCyspO_nS0Mu7FFQZEl3HJ3-zjkklwduhUqp8kbDFtwUjHSKMSP1sRl8TC9pKbWW_Sa1J4cz5spTWY-gx7pYPNBw1zmLk7luJeSg3JDfntK3-gQ3SjnBNHtqX5ilWOIZGjtIDEmq7/s1600/Screen+Shot+2015-04-27+at+11.46.45+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBP0sfCyspO_nS0Mu7FFQZEl3HJ3-zjkklwduhUqp8kbDFtwUjHSKMSP1sRl8TC9pKbWW_Sa1J4cz5spTWY-gx7pYPNBw1zmLk7luJeSg3JDfntK3-gQ3SjnBNHtqX5ilWOIZGjtIDEmq7/s1600/Screen+Shot+2015-04-27+at+11.46.45+pm.png" height="193" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKfTPvUsoj0UmBy6SLMkubI5nd31dSPK4WhwHOB4AypXIa1sYpCbq76lyuwEjcJFxLS7e-fDHp0poCsB9FtEnYjmuznKPk9d-lKY_tb4EX2Dl8tCS5O440HCLSNm51pydGDwMhG6oj6r2V/s1600/Screen+Shot+2015-04-27+at+11.46.51+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKfTPvUsoj0UmBy6SLMkubI5nd31dSPK4WhwHOB4AypXIa1sYpCbq76lyuwEjcJFxLS7e-fDHp0poCsB9FtEnYjmuznKPk9d-lKY_tb4EX2Dl8tCS5O440HCLSNm51pydGDwMhG6oj6r2V/s1600/Screen+Shot+2015-04-27+at+11.46.51+pm.png" height="203" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjySRS6VRcz7qfEBW73u9zmmJ4B7wQ_BowqpFJ1Y7sEmpRywyy811sHHG-JuQS4sH-ARQC0W229xbjmCvuy6pzVKrnowkPwC-nXbFPy81OVIhefCQZ5Z7Q42ymoDKnDN-9Bwzje0yjruyzu/s1600/Screen+Shot+2015-04-27+at+11.46.57+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjySRS6VRcz7qfEBW73u9zmmJ4B7wQ_BowqpFJ1Y7sEmpRywyy811sHHG-JuQS4sH-ARQC0W229xbjmCvuy6pzVKrnowkPwC-nXbFPy81OVIhefCQZ5Z7Q42ymoDKnDN-9Bwzje0yjruyzu/s1600/Screen+Shot+2015-04-27+at+11.46.57+pm.png" height="97" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVtWv5EUGvr_rg6pWOpkW6q4UPg_xPe3afA2hJvbh81MicR2JtGUWr18PLg02jWGQ9yYCuuvPvlO30AxbWIcE7uTOzEOs4TOBL4dKetAsezFXU4TZv-_ma2OfFHEeoSSkOy2fViwTGNNM4/s1600/Screen+Shot+2015-04-27+at+11.48.09+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVtWv5EUGvr_rg6pWOpkW6q4UPg_xPe3afA2hJvbh81MicR2JtGUWr18PLg02jWGQ9yYCuuvPvlO30AxbWIcE7uTOzEOs4TOBL4dKetAsezFXU4TZv-_ma2OfFHEeoSSkOy2fViwTGNNM4/s1600/Screen+Shot+2015-04-27+at+11.48.09+pm.png" height="105" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXVqF-kZZIZTqb8MA253sL3VOBN12KCWLMEVq3nzjH8rKCKCXx4xLaMI-EEcWFbHllZ077W2Pg-q9nUayNQVCgx0I31eiFf9IANNCulaKIivcInb2VScCHJdYT7ZOT-QMNymndmgXOnzJO/s1600/Screen+Shot+2015-04-27+at+11.48.43+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXVqF-kZZIZTqb8MA253sL3VOBN12KCWLMEVq3nzjH8rKCKCXx4xLaMI-EEcWFbHllZ077W2Pg-q9nUayNQVCgx0I31eiFf9IANNCulaKIivcInb2VScCHJdYT7ZOT-QMNymndmgXOnzJO/s1600/Screen+Shot+2015-04-27+at+11.48.43+pm.png" height="41" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbvToFhvgKmqSu43KS2updc1nn6ojvDY2-m-urRANTJnxRg2jU6ajLleHKloK1h8gVlC4Psw8i71YAOOTXTO15_WEIZDl6Ahop_asejv8_9YVsLe1Taw83J2551xDmSrB-RCO3uUf4IsTH/s1600/Screen+Shot+2015-04-27+at+11.48.53+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbvToFhvgKmqSu43KS2updc1nn6ojvDY2-m-urRANTJnxRg2jU6ajLleHKloK1h8gVlC4Psw8i71YAOOTXTO15_WEIZDl6Ahop_asejv8_9YVsLe1Taw83J2551xDmSrB-RCO3uUf4IsTH/s1600/Screen+Shot+2015-04-27+at+11.48.53+pm.png" height="203" width="320" /></a></div>
<div>
<br /></div>
<div>
The code uses org.eclipse.egit.github.core and testlink-java-api to connect with github and TestLink respectively</div>
<br />
<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg11KcK7o_FikVDFi6DsU-B6qjjO8Q29Dptsu7qiXMXsJN5Jhrxkv6E1vTNsXmfYX16zZZDIbcResEeTR6tYlTQ_UEP9euU7MayW5dDv2PpRlj72xrbwVmlrYBUYrqoViM-uiwij-TDpJi7/s1600/Screen+Shot+2015-04-27+at+11.54.22+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg11KcK7o_FikVDFi6DsU-B6qjjO8Q29Dptsu7qiXMXsJN5Jhrxkv6E1vTNsXmfYX16zZZDIbcResEeTR6tYlTQ_UEP9euU7MayW5dDv2PpRlj72xrbwVmlrYBUYrqoViM-uiwij-TDpJi7/s1600/Screen+Shot+2015-04-27+at+11.54.22+pm.png" height="320" width="304" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzqh0zU9TjvQd_hfefg6Kf_ezp2fWv5T8ZEzhhAHVaH63NZnGe0zyVIi8OiBZRk0MpomC89GeN_yAEVg3Qbr6bL-K0ZZDjfUlgG-IUnifXVrJmSv-j53g37aaipc2SKVqz9b0ElSVQqszC/s1600/Screen+Shot+2015-04-27+at+11.54.29+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzqh0zU9TjvQd_hfefg6Kf_ezp2fWv5T8ZEzhhAHVaH63NZnGe0zyVIi8OiBZRk0MpomC89GeN_yAEVg3Qbr6bL-K0ZZDjfUlgG-IUnifXVrJmSv-j53g37aaipc2SKVqz9b0ElSVQqszC/s1600/Screen+Shot+2015-04-27+at+11.54.29+pm.png" height="173" width="320" /></a></div>
<div>
</div>
<br />
Github Connector is as follows<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1qiNGx_1hJT_938xegLyj2iV5GCDW4cUVfRcfWxMs__qeVS6IuEmGGJjILx6FV7mTG8N8BhlO-n8CXvb2CEzy6srUTfyyBa8a14Q6vWJ4kYXJ8dv6KGpLgNU6ppGbbaC8b0xIBbXpME_Q/s1600/Screen+Shot+2015-04-28+at+12.00.06+am.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1qiNGx_1hJT_938xegLyj2iV5GCDW4cUVfRcfWxMs__qeVS6IuEmGGJjILx6FV7mTG8N8BhlO-n8CXvb2CEzy6srUTfyyBa8a14Q6vWJ4kYXJ8dv6KGpLgNU6ppGbbaC8b0xIBbXpME_Q/s1600/Screen+Shot+2015-04-28+at+12.00.06+am.png" height="183" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNAduO7kHcJ9YMAqk17KcWEZaywdzQwevNSv24l_bAs4AtHt-JrM3aS2y8uj0uhmBoeYmTx01XLDKcOBt-YtmsztUQa9NKf-KTAn6ny6o1sxgHnUFzNKDDE2A2BvSqPTa858_alkQbP7DW/s1600/Screen+Shot+2015-04-28+at+12.00.13+am.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNAduO7kHcJ9YMAqk17KcWEZaywdzQwevNSv24l_bAs4AtHt-JrM3aS2y8uj0uhmBoeYmTx01XLDKcOBt-YtmsztUQa9NKf-KTAn6ny6o1sxgHnUFzNKDDE2A2BvSqPTa858_alkQbP7DW/s1600/Screen+Shot+2015-04-28+at+12.00.13+am.png" height="120" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
TestLink Connector is as follows</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW1RoJqG1H6Btcgjc6U-6AdAyA0UPEA1XecJHOTPHvdA8oog7WwwHGGrXmsh_u_-bUnBtXEPntikYsw3FwPg0vrjWxl__jsnUU_a2Sz9iHFaGpw0vOXS18dFwKr_f6SH8dbT9aVK3Muoaw/s1600/Screen+Shot+2015-04-28+at+12.03.32+am.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW1RoJqG1H6Btcgjc6U-6AdAyA0UPEA1XecJHOTPHvdA8oog7WwwHGGrXmsh_u_-bUnBtXEPntikYsw3FwPg0vrjWxl__jsnUU_a2Sz9iHFaGpw0vOXS18dFwKr_f6SH8dbT9aVK3Muoaw/s1600/Screen+Shot+2015-04-28+at+12.03.32+am.png" height="253" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3ZSut6XHpk8eDR_xWtKxAK04s2L3748unVPPfxkWplgdwETsZOaakOLicjyar0S2-6rA1TmhiPcttvq10VxaP1nmKTOdt9fjbnZblxSE-yA2aTjjpRrIK2l5G9HzV4ZyV2RcUFgCIIby2/s1600/Screen+Shot+2015-04-28+at+12.04.05+am.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3ZSut6XHpk8eDR_xWtKxAK04s2L3748unVPPfxkWplgdwETsZOaakOLicjyar0S2-6rA1TmhiPcttvq10VxaP1nmKTOdt9fjbnZblxSE-yA2aTjjpRrIK2l5G9HzV4ZyV2RcUFgCIIby2/s1600/Screen+Shot+2015-04-28+at+12.04.05+am.png" height="205" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Above program will also list down stories which needs test cases.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs0AKOABlacEXNmCRyIRSyMEgHS43p93pejr5vOhWOPIBYX7yxeD9vYOSLtlapGhoasWXrKkjEJIu8_wen0Pk1IiiVanSUTKC0Yg2zEbVO-t20Zwl8ORSuZyV7YNXRxec6aLThr0aImHj3/s1600/Screen+Shot+2015-04-28+at+12.08.39+am.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs0AKOABlacEXNmCRyIRSyMEgHS43p93pejr5vOhWOPIBYX7yxeD9vYOSLtlapGhoasWXrKkjEJIu8_wen0Pk1IiiVanSUTKC0Yg2zEbVO-t20Zwl8ORSuZyV7YNXRxec6aLThr0aImHj3/s1600/Screen+Shot+2015-04-28+at+12.08.39+am.png" height="76" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now you are ready to trace which stories have Test case and which doesn't have. :)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #e69138;">~Yagnanarayana Dande</span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br /></div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-24058235908130669982015-04-27T11:00:00.001-07:002015-04-27T11:00:09.177-07:00Automated Testing of Multi Browser Support using SauceLabs and Jenkins/Hudson<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div style="text-align: justify;">
Its not an easy task to run automated tests on multiple browsers and gather results back to a single location. Its not a good option to have your own setup of all Operating System + Browser combinations in a lab if you don't have a dedicated operations team.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
We can use cloud solutions like Saucelabs for this purpose. Saucelabs provides on demand instance of Operating System + Browser. It uses Remove Webdriver concept to run Selenium Tests on these instances.</div>
<br />
You can use following code to start a remote Run<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmYGPK1Ld8fLSerxASUjMDPHmnNIYrkl73IEyNfLK3J-weblCsMkzmBrvGnnEo8t_S2MNlHvmaT7XuS0abXqD9pfB1zcj-feJeyYqsBY_lvL0-aactXIxSyc6ZQaXOiAVCbjGyt6fINEmS/s1600/Screen+Shot+2015-04-27+at+11.16.17+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmYGPK1Ld8fLSerxASUjMDPHmnNIYrkl73IEyNfLK3J-weblCsMkzmBrvGnnEo8t_S2MNlHvmaT7XuS0abXqD9pfB1zcj-feJeyYqsBY_lvL0-aactXIxSyc6ZQaXOiAVCbjGyt6fINEmS/s1600/Screen+Shot+2015-04-27+at+11.16.17+pm.png" height="377" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Now create a Jenkins job with configuration as<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6OoEcGysh56mrpmCLt545VnGb_kM_HHmfbXerpWI3PwxvJUGSSlsO6LRNebcZuNbp5qytC317wHvdzpRcH7mnyRE9C8xKew7qmz4xFK-4YPQDCVhwi5wJjYRJ_J5gvX5jasWx9WJ-Kcah/s1600/Screen+Shot+2015-04-27+at+11.24.51+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6OoEcGysh56mrpmCLt545VnGb_kM_HHmfbXerpWI3PwxvJUGSSlsO6LRNebcZuNbp5qytC317wHvdzpRcH7mnyRE9C8xKew7qmz4xFK-4YPQDCVhwi5wJjYRJ_J5gvX5jasWx9WJ-Kcah/s1600/Screen+Shot+2015-04-27+at+11.24.51+pm.png" height="195" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxhJ36sMKniyLesA73EfeppxHA9VVQ6SxiNYbNmSb9u5rBhXq6oLVsMEXDBAFhP9reY6J0J7MtOCPgOnVUtEg4loP0P-o_qH7-_RlGO_gq8-igb8BBaoLYh4NE5jnDe0yoAorWI8sDzYJn/s1600/Screen+Shot+2015-04-27+at+11.25.02+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxhJ36sMKniyLesA73EfeppxHA9VVQ6SxiNYbNmSb9u5rBhXq6oLVsMEXDBAFhP9reY6J0J7MtOCPgOnVUtEg4loP0P-o_qH7-_RlGO_gq8-igb8BBaoLYh4NE5jnDe0yoAorWI8sDzYJn/s1600/Screen+Shot+2015-04-27+at+11.25.02+pm.png" height="204" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdgL1N03-KPCCbPdYfqD7X-uYjvKXOhjAgIzl6H1mN3PseFTw7wLcXRffTXOI_UQf8gyZ7_ZEu9YVDKCiKG07SbMUNBmgvNT9Gk3JFtGiWeC_z2t0iZkUZdqMqY-_j48V6-U12G-pFyFCE/s1600/Screen+Shot+2015-04-27+at+11.25.10+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdgL1N03-KPCCbPdYfqD7X-uYjvKXOhjAgIzl6H1mN3PseFTw7wLcXRffTXOI_UQf8gyZ7_ZEu9YVDKCiKG07SbMUNBmgvNT9Gk3JFtGiWeC_z2t0iZkUZdqMqY-_j48V6-U12G-pFyFCE/s1600/Screen+Shot+2015-04-27+at+11.25.10+pm.png" height="211" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe0GihXjJMyau3eSt1DRrwtJ_Txb80FYIgCcjyPK2lrgiMT6ilPwDPNNvssW8K4MD0mb9XOALxRGzP0QIbnngVpjHJTrMfX1oAedgEnX7FdQT6OBr_amZcPFFBuqGL5_5uUL0bvuukGjEW/s1600/Screen+Shot+2015-04-27+at+11.25.39+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe0GihXjJMyau3eSt1DRrwtJ_Txb80FYIgCcjyPK2lrgiMT6ilPwDPNNvssW8K4MD0mb9XOALxRGzP0QIbnngVpjHJTrMfX1oAedgEnX7FdQT6OBr_amZcPFFBuqGL5_5uUL0bvuukGjEW/s1600/Screen+Shot+2015-04-27+at+11.25.39+pm.png" height="181" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHfCjAqPgN9YJZvyCHIpBL8wvbxTZxaWBtinL1_UT_GMychov88tottbboIpoCP0LQu1x0uu2MV5A3owd0QWj-HGZtjKjnh6tqEaZzAbIYT0DlCdueeAiE5LYn8-iOmiNkr-zXj2dixD9Y/s1600/Screen+Shot+2015-04-27+at+11.26.02+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHfCjAqPgN9YJZvyCHIpBL8wvbxTZxaWBtinL1_UT_GMychov88tottbboIpoCP0LQu1x0uu2MV5A3owd0QWj-HGZtjKjnh6tqEaZzAbIYT0DlCdueeAiE5LYn8-iOmiNkr-zXj2dixD9Y/s1600/Screen+Shot+2015-04-27+at+11.26.02+pm.png" height="79" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now you are ready for your Multi Browser tests. Start a build and test will execute on Saucelabs. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Once you launch your tests, logon to saucelabs.com and watch the live steaming on how tests are being executed or wait till end to see TestNG report on Jenkins</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihg_Zzvcjl-cHydsIkZVJC9-lVrjxJYsmFfJwZk2w_kD_Zt-ylS57JdAwOPkVhOeA44aXAyhQeczPS2P_Of2AZET1P6z3i1aZgzYOgTb-kjquRIc2JNLVR9ovCK0T62N98v_5aARCxhigw/s1600/Screen+Shot+2015-04-27+at+11.29.15+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihg_Zzvcjl-cHydsIkZVJC9-lVrjxJYsmFfJwZk2w_kD_Zt-ylS57JdAwOPkVhOeA44aXAyhQeczPS2P_Of2AZET1P6z3i1aZgzYOgTb-kjquRIc2JNLVR9ovCK0T62N98v_5aARCxhigw/s1600/Screen+Shot+2015-04-27+at+11.29.15+pm.png" height="196" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="color: #e69138;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #e69138;">~Yagnanarayana Dande</span></div>
<br /></div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-48662738171967034432015-04-27T10:33:00.000-07:002015-04-27T10:33:08.948-07:00Running Selenium Tests on a headless Jenkins Server<div dir="ltr" style="text-align: left;" trbidi="on">
QA needs to execute their daily Sanity Tests on Jenkins. To run Selenium Tests we need a machine connected to monitor. And if we don't have such an arrangement then we can follow the steps below to run Selenium Tests on a headless Jenkins Server.<br />
<br />
Never run daily runs on tools like Saucelabs.com or browserstack as its a costly affair.<br />
<br />
1. Install Xvfb on Jenkins Server<br />
<br />
<br />
<blockquote class="tr_bq">
<span style="color: #6fa8dc;">yum install xorg-x11-server-Xvfb</span></blockquote>
<div class="p1">
<br /></div>
<div class="p1">
2. Install Firefox on Jenkins Server</div>
<div class="p1">
<br /></div>
<div class="p1">
</div>
<blockquote class="tr_bq">
<span style="color: #6fa8dc;">yum install firefox</span></blockquote>
3. Install https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin on Jenkins<br />
<div class="p1">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2vMdNnCDxuetYThdcI0U3Wq19HMKSZubyjR_eeCNzUnnLhaBGmXUtdMU2MSzUV3SaO9sb4NYEHlibxP13byrz_OIWlEH8MSxj0hOoDk8Z2khCPCvU67o1OEGNIh6L6uC40VZdHlLgQHfS/s1600/Screen+Shot+2015-04-27+at+10.55.35+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2vMdNnCDxuetYThdcI0U3Wq19HMKSZubyjR_eeCNzUnnLhaBGmXUtdMU2MSzUV3SaO9sb4NYEHlibxP13byrz_OIWlEH8MSxj0hOoDk8Z2khCPCvU67o1OEGNIh6L6uC40VZdHlLgQHfS/s1600/Screen+Shot+2015-04-27+at+10.55.35+pm.png" height="40" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
4. In you Job, configure as follows</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil_PoUThCHKJ5E2PjRcDC-DXHt2MQSBrlHYE3qfLoKqOykSPttM6hf52ZpKq-zjdPlYJ1Nb5VTty4FxmbDvKIar5WqoODcmBVZrC4EhJtXqw27s5qEdKj7KyA1ryq3GJQaAQnIeKFSGxol/s1600/Screen+Shot+2015-04-27+at+11.00.04+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil_PoUThCHKJ5E2PjRcDC-DXHt2MQSBrlHYE3qfLoKqOykSPttM6hf52ZpKq-zjdPlYJ1Nb5VTty4FxmbDvKIar5WqoODcmBVZrC4EhJtXqw27s5qEdKj7KyA1ryq3GJQaAQnIeKFSGxol/s1600/Screen+Shot+2015-04-27+at+11.00.04+pm.png" height="52" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="p1">
5. When you run the Job, it will create a screen and execute tests on that screen with GUI</div>
<div class="p1">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWBnNLB0S-zTK5KjBP0gQHmyZzJ4vzdFeDba_kXihZbKsutfC6ULNG59cmkqjRbgRxXISvr1c-yNlUcBSwkGtyQKoi94sj0WtzgPC2MaVzSlsxl0foq_HGukgHKsm1HNFiRR3fGX-Hq62D/s1600/Screen+Shot+2015-04-27+at+11.01.24+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWBnNLB0S-zTK5KjBP0gQHmyZzJ4vzdFeDba_kXihZbKsutfC6ULNG59cmkqjRbgRxXISvr1c-yNlUcBSwkGtyQKoi94sj0WtzgPC2MaVzSlsxl0foq_HGukgHKsm1HNFiRR3fGX-Hq62D/s1600/Screen+Shot+2015-04-27+at+11.01.24+pm.png" height="12" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Enjoy your daily runs now :)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: #e69138;">~ Yagnanarayana Dande</span></div>
<div class="p1">
<br /></div>
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-48191266210738637122015-03-19T10:30:00.003-07:002015-03-19T20:41:10.662-07:00Integration of TestLink with Jenkins/Hudson to Run Automated Tests<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Install the TestNG Plugin on Jenkins</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLAuWIonYuYhoKNmmI-i4fYOPn8vpfsaPV1LJgkvCI4bEaE_5sJZOpqor3ypNzw0RXiU1jMZD8mfthyy_KnAQtv98olUyVAcFu9IY5kADzusrRYzoODODjYPXamPIkIevSScGXmgjWHzlo/s1600/Screen+Shot+2015-03-19+at+10.06.51+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLAuWIonYuYhoKNmmI-i4fYOPn8vpfsaPV1LJgkvCI4bEaE_5sJZOpqor3ypNzw0RXiU1jMZD8mfthyy_KnAQtv98olUyVAcFu9IY5kADzusrRYzoODODjYPXamPIkIevSScGXmgjWHzlo/s1600/Screen+Shot+2015-03-19+at+10.06.51+pm.png" height="41" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Get API Key from TestLink -> Test Project Management -> API Key</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFWQqetA7_gNMaSIDZ101t5VBMYxl3JWYWhoqwDvdLDottLVSy6YlKJj_nvQdGoQkfUFfuqc969f9vAS2GR_5yWwt6rEL9uFE6RCDYYNArk9qyrJAQ6akKwiJ_yjAdJq1CYWMFNe05JgBK/s1600/Screen+Shot+2015-03-19+at+10.44.01+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFWQqetA7_gNMaSIDZ101t5VBMYxl3JWYWhoqwDvdLDottLVSy6YlKJj_nvQdGoQkfUFfuqc969f9vAS2GR_5yWwt6rEL9uFE6RCDYYNArk9qyrJAQ6akKwiJ_yjAdJq1CYWMFNe05JgBK/s1600/Screen+Shot+2015-03-19+at+10.44.01+pm.png" height="83" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: center;">
Go to Jenkins -> Manage Jenkins -> Configure System Add following</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYkqIKMKMpfehpceyFq4Vpv26uZwstvHU_odFmCDuzNFHFgEGQqFUQdGb6RHoofqP5gKA-T6uINdm0BA0TymUkUw1uwqEoJkqvjGi_qhEUsmZQ12mmthFMTO8rNam5-iuC9TICzoLuWNUY/s1600/Screen+Shot+2015-03-19+at+10.18.28+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYkqIKMKMpfehpceyFq4Vpv26uZwstvHU_odFmCDuzNFHFgEGQqFUQdGb6RHoofqP5gKA-T6uINdm0BA0TymUkUw1uwqEoJkqvjGi_qhEUsmZQ12mmthFMTO8rNam5-iuC9TICzoLuWNUY/s1600/Screen+Shot+2015-03-19+at+10.18.28+pm.png" height="110" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Go to Jenkins -> Automation Project -> Build -> Invoke TestLink</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEiPdgyzxUDKnGCxGQZu_OMZBHzVTI2cDPYW7vPWoY7vA5_kUN2vgg8X5_EB5BP-oCHP0YgE6UglxjhpMv3bZz3O7wsttKDfsG6ilMDJ2vrP0TbEtOLCuIskj2G0XJzQdIny4asd0tWSkh/s1600/Screen+Shot+2015-03-19+at+10.53.01+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEiPdgyzxUDKnGCxGQZu_OMZBHzVTI2cDPYW7vPWoY7vA5_kUN2vgg8X5_EB5BP-oCHP0YgE6UglxjhpMv3bZz3O7wsttKDfsG6ilMDJ2vrP0TbEtOLCuIskj2G0XJzQdIny4asd0tWSkh/s1600/Screen+Shot+2015-03-19+at+10.53.01+pm.png" height="194" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Invoke TestLink has 3 Parts</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
1. Test Link Configuration </div>
<div class="separator" style="clear: both; text-align: center;">
(Using these details Jenkins can get details about Test Cases from TestLink)</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYzsnPPM_hs_kgyjdHGFSv8TxhJBDowrXkQf778U43GYgvz5_ILUbWAA-gbVS0nuXxHP6q6yUSZf0_muIPEWXFmAGWAqwPR-5U3cNGCwSCa3KZ5Plaz-ax5PrvUHrN4MP50L2W5c69WTZ5/s1600/Screen+Shot+2015-03-19+at+10.18.59+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYzsnPPM_hs_kgyjdHGFSv8TxhJBDowrXkQf778U43GYgvz5_ILUbWAA-gbVS0nuXxHP6q6yUSZf0_muIPEWXFmAGWAqwPR-5U3cNGCwSCa3KZ5Plaz-ax5PrvUHrN4MP50L2W5c69WTZ5/s1600/Screen+Shot+2015-03-19+at+10.18.59+pm.png" height="120" width="400" /></a></div>
<div style="text-align: center;">
2. Test Execution</div>
<div style="text-align: center;">
(Using this Jenkins execute Test Cases)</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOdaQkqcQu-0mzOORrkzsBeYZj8jQuibe8AiNfnt1csjYXUPAfAYFOgW36o3idnAkak_W1vz7ggK4ESwSOv2d1RgHvqSdV87WAD1hIlLPNsKO0OaXAZi2G0nnws-pbuc5yqY3p6MQ-FPoM/s1600/Screen+Shot+2015-03-19+at+10.19.46+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOdaQkqcQu-0mzOORrkzsBeYZj8jQuibe8AiNfnt1csjYXUPAfAYFOgW36o3idnAkak_W1vz7ggK4ESwSOv2d1RgHvqSdV87WAD1hIlLPNsKO0OaXAZi2G0nnws-pbuc5yqY3p6MQ-FPoM/s1600/Screen+Shot+2015-03-19+at+10.19.46+pm.png" height="146" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
3. Result Seeking Strategy</div>
<div class="separator" style="clear: both; text-align: center;">
(Using this Jenkins Posts Test Results to TestLink)</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgzyLyquC7-fBRpaBvPK2xu5R4t5_28ELt0X8AM4wNt-TWFQsYh7IL1ucIKp3doDlCveoaRQYlzAnPJNst2H5La81CY7Q9CZLGc4C8r-MKxCaxS6bVcjR2TT1Djqyf08dolkVyJ7XPej1-/s1600/Screen+Shot+2015-03-19+at+10.19.54+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgzyLyquC7-fBRpaBvPK2xu5R4t5_28ELt0X8AM4wNt-TWFQsYh7IL1ucIKp3doDlCveoaRQYlzAnPJNst2H5La81CY7Q9CZLGc4C8r-MKxCaxS6bVcjR2TT1Djqyf08dolkVyJ7XPej1-/s1600/Screen+Shot+2015-03-19+at+10.19.54+pm.png" height="147" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: center;">
Click on Any Build in Jenkins and it shows TestLink Results </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidNGn9bgvqUTdIzeepdXI6F9aVOteO3vH331UlIbxymTQNfPWd2Z-YgAaiygYiqHmqfu9VXxfRTv3mpt8DhmQqOzl8DK5hyhPSGNIYHJI-7e4GfpVOzsNCEg4UFbw2wP-K-Wg6dA7LrBpf/s1600/Screen+Shot+2015-03-19+at+10.20.27+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidNGn9bgvqUTdIzeepdXI6F9aVOteO3vH331UlIbxymTQNfPWd2Z-YgAaiygYiqHmqfu9VXxfRTv3mpt8DhmQqOzl8DK5hyhPSGNIYHJI-7e4GfpVOzsNCEg4UFbw2wP-K-Wg6dA7LrBpf/s1600/Screen+Shot+2015-03-19+at+10.20.27+pm.png" height="131" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
On Right Side Pane of Automation Project, You can see TestLink </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7dj8ErXem4i0SGmaLhKOMIkMqf9vgP9qpUInLUprDXw4iYIehMnS6SbaSWc0MQtU0-gg2HXDM6WqHc36bbYmMYFrl2cuBeb-MbfvnRttlzUuRNdeDXPsbhaHe_HHVj0vLpODF5uLm-Rje/s1600/Screen+Shot+2015-03-19+at+10.20.40+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7dj8ErXem4i0SGmaLhKOMIkMqf9vgP9qpUInLUprDXw4iYIehMnS6SbaSWc0MQtU0-gg2HXDM6WqHc36bbYmMYFrl2cuBeb-MbfvnRttlzUuRNdeDXPsbhaHe_HHVj0vLpODF5uLm-Rje/s1600/Screen+Shot+2015-03-19+at+10.20.40+pm.png" height="320" style="cursor: move;" width="198" /></a><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: right;">
~Yagnanarayana Dande</div>
<br /></div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-82269700624486714382014-04-02T06:12:00.002-07:002014-04-02T06:12:40.799-07:00Data Driven Testing in TestNG using Factory Pattern<div dir="ltr" style="text-align: left;" trbidi="on">
In the previous post we have looked at how to write test cases for data driven testing using data provider. Now let us look how to do same using Factory pattern.<br />
<br />
<br />
Reading excel sheet will be same as previous<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho5OwBXPs-6hR2P89fIGTKl4CcYvhzoXf0DK3kn3U_FcLPH1wNy0T_6H5nlNo3IzdfyQYNjIFEHT8fg_eQHGmrq7NFgrPkswwhQBBirrD5TY1sC-1SJ63_hG-oOKtCuLQb424k7-b9Yq_R/s3200/Screen+Shot+2014-04-02+at+5.49.40+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho5OwBXPs-6hR2P89fIGTKl4CcYvhzoXf0DK3kn3U_FcLPH1wNy0T_6H5nlNo3IzdfyQYNjIFEHT8fg_eQHGmrq7NFgrPkswwhQBBirrD5TY1sC-1SJ63_hG-oOKtCuLQb424k7-b9Yq_R/s3200/Screen+Shot+2014-04-02+at+5.49.40+pm.png" height="400" width="348" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
Now let us use <span style="color: #0b5394;"><b>Factory annotation </b></span>and passing one set of data at a time to TestNG for running the same Test case multiple times (Data driven Testing). The main difference between Factory pattern and dataProvider is that in dataProvider all the tests will be called on a single instance and in factory pattern each test case will be called on different instances.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDwscDM_LkAE5GbeoW0ACXN7svxHOZdUhF5GqAPSs7-fgjRxtXYsjTI-S80IuScINyg_ZcBTILDX14Hzdf0cTFygI0BG4nZ36jD8mbF2ts2YsQWHxRhvtHq5HroB9D886c2bT8GZcwezOa/s3200/Screen+Shot+2014-04-02+at+6.40.45+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDwscDM_LkAE5GbeoW0ACXN7svxHOZdUhF5GqAPSs7-fgjRxtXYsjTI-S80IuScINyg_ZcBTILDX14Hzdf0cTFygI0BG4nZ36jD8mbF2ts2YsQWHxRhvtHq5HroB9D886c2bT8GZcwezOa/s3200/Screen+Shot+2014-04-02+at+6.40.45+pm.png" height="193" width="400" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Here every test data will have a corresponding object of the class ProjectTestCases.</div>
<br />
<span style="color: #b45f06;">~Yagna</span></div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-25345909660127088492014-04-02T05:45:00.000-07:002014-04-02T06:01:30.747-07:00Data Driven Testing in TestNG using Data Provider<div dir="ltr" style="text-align: left;" trbidi="on">
In the previous post we have looked at how to optimise test cases for data driven testing. Now let us look how to automate these Tests.<br />
<br />
In a typical scenario QA engineer will manually use allpairs tool and determine optimal set of Test Data for conducting data driven testing. This test data will be in excel sheet.<br />
<br />
Now let us write a <b><span style="color: #0b5394;">method to read this data</span>.</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho5OwBXPs-6hR2P89fIGTKl4CcYvhzoXf0DK3kn3U_FcLPH1wNy0T_6H5nlNo3IzdfyQYNjIFEHT8fg_eQHGmrq7NFgrPkswwhQBBirrD5TY1sC-1SJ63_hG-oOKtCuLQb424k7-b9Yq_R/s3200/Screen+Shot+2014-04-02+at+5.49.40+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho5OwBXPs-6hR2P89fIGTKl4CcYvhzoXf0DK3kn3U_FcLPH1wNy0T_6H5nlNo3IzdfyQYNjIFEHT8fg_eQHGmrq7NFgrPkswwhQBBirrD5TY1sC-1SJ63_hG-oOKtCuLQb424k7-b9Yq_R/s3200/Screen+Shot+2014-04-02+at+5.49.40+pm.png" height="400" width="348" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now let us write <span style="color: #0b5394;"><b>DataProvider</b></span> for using this code and passing one set of data at a time to TestNG for running the same Test case multiple times (Data driven Testing).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3ZETiK9adnj5Wqri0pzxZZ_Um-aRTY2Ksak-953nhrypDlv4Ry6D6spcB_NsLS3IK4aGB8X6vDqTGaLBsIzMtmV143diVGgxVecfctQoH4tqWFZPhg0ax5S5O7uOYbAT7pAkXb3FYtivL/s3200/Screen+Shot+2014-04-02+at+5.52.08+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3ZETiK9adnj5Wqri0pzxZZ_Um-aRTY2Ksak-953nhrypDlv4Ry6D6spcB_NsLS3IK4aGB8X6vDqTGaLBsIzMtmV143diVGgxVecfctQoH4tqWFZPhg0ax5S5O7uOYbAT7pAkXb3FYtivL/s3200/Screen+Shot+2014-04-02+at+5.52.08+pm.png" height="136" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Let us write actual test case and make it to use this data provider</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4R7UEfa5vw2KIAdNXFMTMNgGXCjWQOTRk2fgT_zAyMBvr-S_u6irQGwCfKajrluT1FrQq8Iw63zyEz7I4glU3cn4JJ3TqMsBQHfpWiXxE4UmWJZbeH4T26N3o4ttuYqQ30-biM8jUG8T8/s3200/Screen+Shot+2014-04-02+at+5.56.10+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4R7UEfa5vw2KIAdNXFMTMNgGXCjWQOTRk2fgT_zAyMBvr-S_u6irQGwCfKajrluT1FrQq8Iw63zyEz7I4glU3cn4JJ3TqMsBQHfpWiXxE4UmWJZbeH4T26N3o4ttuYqQ30-biM8jUG8T8/s3200/Screen+Shot+2014-04-02+at+5.56.10+pm.png" height="47" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
This will make TestNG to execute testDND test case for 56 times each time with different Test Data. But the biggest problem with this approach is in testng results it will show same method name for every execution. But it will show the actual test data as parameters in test.html.<br />
<br />
We can use code like below to add TestCase name<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVAqp-Zakh0egXwQmA6zGRTZYTCPhErUyV_CwP4__lHzFZ8OUZbVfFDYrz8a0BrVMvaIs0wwbbi645VMclDkNktOsHDu_kyCVYcXSz1J8aXEXFWeYuaJAMdHFzJw9wYTAHhfr1-BRu2Weg/s3200/Screen+Shot+2014-04-02+at+6.30.39+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVAqp-Zakh0egXwQmA6zGRTZYTCPhErUyV_CwP4__lHzFZ8OUZbVfFDYrz8a0BrVMvaIs0wwbbi645VMclDkNktOsHDu_kyCVYcXSz1J8aXEXFWeYuaJAMdHFzJw9wYTAHhfr1-BRu2Weg/s3200/Screen+Shot+2014-04-02+at+6.30.39+pm.png" height="227" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
<span style="color: #b45f06;">~Yagna</span></div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-1417097359956666142014-04-02T05:15:00.001-07:002014-04-02T05:15:27.672-07:00Pairwise Test Cases for Data Driven Testing in Agile World<div dir="ltr" style="text-align: left;" trbidi="on">
It is a common scenario where a Test Case should be run with more than one set of Test Data. Let us take an example to illustrate this scenario.<br />
<br />
<span style="color: #0b5394;"><b>A screen has following 4 input parameters. </b></span><br />
<br />
<ol style="text-align: left;">
<li>Name - Text Field which takes only alphabets</li>
<li>Phone Number - Text Field takes only numbers</li>
<li>Don't Disturb - Radio Button with Yes and No options</li>
</ol>
<div>
<span style="color: #0b5394;"><b>Now the possible values for </b></span></div>
<div>
<ol style="text-align: left;">
<li>Name - alphabets, alpha-numeric characters, special characters, unicode characters, empty string, space, very long string</li>
<li>Phone Number - numbers, alphabets, alpha-numeric characters, special characters, unicode characters, empty string, space, very long number</li>
<li>Don't Disturb - Yes, No</li>
</ol>
<div>
Now if we want to come up with Test cases using combinations of this data we will get</div>
</div>
<div>
<br /></div>
<blockquote class="tr_bq">
7*8*2 = 112 Test Cases</blockquote>
But <span style="color: #0b5394;"><b>Pairwise Testing philosophy</b></span> says <br />
<br />
<blockquote class="tr_bq">
<div class="p1">
Most bugs are found when only two variable values conflict, not when all conflict at the same time.<span style="font-size: xx-small;"> (Ref: Efficient Testing with All-Pairs - Prepared for STAREast 2003 International Conference on Software Testing Bernie Berger)</span></div>
</blockquote>
So let us try to reduce these <span style="color: #0b5394;"><b>test cases using pairwise tool</b></span>.<br />
<br />
<ol style="text-align: left;">
<li>Download and extract tool from www.saticefice.com</li>
<li>Create an excel sheet with Variables as headers(columns) and values as rows</li>
<li>Save it as .txt file with tab delimited file</li>
<li>now say perl<span style="font-family: Courier New, Courier, monospace;"> allpairs.pl blog.txt >allpairs.txt</span></li>
<li><span style="font-family: Times, Times New Roman, serif;">Open the file allpairs.txt using excel or numbers(in case of mac)</span></li>
<li><span style="font-family: Times, Times New Roman, serif;">Now you can see all the available test cases</span></li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQN2ENmo8LHOsXdyQX0f0SLnEPybgPvPCCwca-kjxK1ncZhTpIfqdey8MMuwlFEOJ6RrD01tiBX3X-IoSUmu3tkwyL-TYOrKuVslK3MiCL6vZysOMZ8ypZL9hGOIU_1GxgxtqSW4qS8Gyw/s3200/Screen+Shot+2014-04-02+at+5.44.31+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQN2ENmo8LHOsXdyQX0f0SLnEPybgPvPCCwca-kjxK1ncZhTpIfqdey8MMuwlFEOJ6RrD01tiBX3X-IoSUmu3tkwyL-TYOrKuVslK3MiCL6vZysOMZ8ypZL9hGOIU_1GxgxtqSW4qS8Gyw/s3200/Screen+Shot+2014-04-02+at+5.44.31+pm.png" height="183" width="400" /></a></div>
<div>
<span style="font-family: Times, Times New Roman, serif;"><br /></span></div>
<div>
<span style="font-family: Times, Times New Roman, serif;"><br /></span></div>
<div>
<span style="font-family: Times, Times New Roman, serif;">Test cases reduced to half in this case.</span></div>
<div>
<span style="font-family: Times, Times New Roman, serif;"><br /></span></div>
<div>
<span style="color: #b45f06; font-family: Times, Times New Roman, serif;">~Yagna</span></div>
<br />
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com1tag:blogger.com,1999:blog-5008407120359549210.post-44284936076919832742014-04-02T04:39:00.002-07:002014-04-02T04:49:42.181-07:00Code coverage report using Cobertura with gradle<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="tr_bq">
According to wikipedia Code coverage is</div>
<br />
<blockquote class="tr_bq">
<div style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.200000762939453px; margin-bottom: 0.5em; margin-top: 0.4em;">
<b>code coverage</b> is a measure used to describe the degree to which the <a href="http://en.wikipedia.org/wiki/Source_code" style="background-image: none; background-position: initial initial; background-repeat: initial initial; color: #0b0080; text-decoration: none;" title="Source code">source code</a> of a <a href="http://en.wikipedia.org/wiki/Computer_program" style="background-image: none; background-position: initial initial; background-repeat: initial initial; color: #0b0080; text-decoration: none;" title="Computer program">program</a> is tested by a particular <a href="http://en.wikipedia.org/wiki/Test_suite" style="background-image: none; background-position: initial initial; background-repeat: initial initial; color: #0b0080; text-decoration: none;" title="Test suite">test suite</a>. A program with high code coverage has been more thoroughly tested and has a lower chance of containing <a href="http://en.wikipedia.org/wiki/Software_bug" style="background-image: none; background-position: initial initial; background-repeat: initial initial; color: #0b0080; text-decoration: none;" title="Software bug">software bugs</a> than a program with low code coverage. Many different metrics can be used to calculate code coverage; some of the most basic are the percent of program <a href="http://en.wikipedia.org/wiki/Subroutine" style="background-image: none; background-position: initial initial; background-repeat: initial initial; color: #0b0080; text-decoration: none;" title="Subroutine">subroutines</a> and the percent of program <a href="http://en.wikipedia.org/wiki/Statement_(computer_science)" style="background-image: none; background-position: initial initial; background-repeat: initial initial; color: #0b0080; text-decoration: none;" title="Statement (computer science)">statements</a> called during execution of the test suite.</div>
<div>
<br /></div>
</blockquote>
There are several tools which help in getting code coverage. Out of then Cobertura is one. From the official site of Cobertura<br />
<br />
<blockquote class="tr_bq">
<div class="p1">
Cobertura is a free Java tool that calculates the percentage of code accessed by tests. It can be used to identify which parts of your Java program are lacking test coverage. It is based on jcoverage.</div>
</blockquote>
Gradle is a popular build tool. Many a times one would like to get code coevage report during build time about Unit Tests' code coverage. This can be easily achieved using following piece of code in build.gradle<br />
<br />
<div class="p1">
<span class="s1" style="color: #0b5394;"><b>1. Using Cobertura with gradle</b></span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">paste this in build.gradle</span><br />
<span class="s1"><br /></span>
<br />
<div class="p1">
buildscript {</div>
<div class="p1">
repositories {</div>
<div class="p1">
mavenCentral()</div>
<div class="p1">
}</div>
<div class="p1">
dependencies {</div>
<div class="p1">
classpath "net.saliman:gradle-cobertura-plugin:1.1.0"</div>
<div class="p1">
}</div>
<div class="p1">
}</div>
<span class="s1">
</span><br />
<div class="p1">
apply plugin: 'cobertura'</div>
<div class="p1">
<br /></div>
</div>
<div class="p5">
<span class="s1">This will give you 2 new tasks called instrument and cobertura</span></div>
<div class="p6">
<span class="s1"></span><br /></div>
<div class="p5">
<span class="s1">instrument task will instrument the classes of the project. And cobertura task will build > instrument > test > createReport</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<br />
<div class="p1">
<span class="s1">test Task will build and run the classes in src/test folder. These are unit tests of the project</span></div>
<br />
<br />
<div class="p1">
<span class="s1">Code coverage report for Unit Tests is as follows </span></div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmNKL0T0FJmLKYMUOf0b61DWbWdbnPQBM9Tmd5bxBu2IjVRkOTE0CtAH9A7rAnT7nDxAimACJmfOPVe3j6cLHvOXFfv_V4-7VT5oHMgX61oi6fUvHLh0O6bgGTtQFjNulxeUij26CqE9EO/s3200/Cobertura.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmNKL0T0FJmLKYMUOf0b61DWbWdbnPQBM9Tmd5bxBu2IjVRkOTE0CtAH9A7rAnT7nDxAimACJmfOPVe3j6cLHvOXFfv_V4-7VT5oHMgX61oi6fUvHLh0O6bgGTtQFjNulxeUij26CqE9EO/s3200/Cobertura.png" height="71" width="400" /></a></div>
<br /></div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1" style="color: #0b5394;"><b>2. QA Tests</b></span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">QA can also use gradle in their project and run tests or can follow following process</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">Download cobertura from <a href="http://cobertura.sourceforge.net/"><span class="s2">cobertura.sourceforge.net</span></a> </span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">To Compile Test Code</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<blockquote class="tr_bq">
<span class="s1">javac -cp ~/Desktop/cobertura-2.0.3/cobertura-2.0.3.jar:projectname/build/classes/main/Test.java</span></blockquote>
<div class="p4">
<span class="s1"></span><br /></div>
<div class="p4">
<span class="s1"></span><br /></div>
<div class="p5">
<span class="s1">To Run Test Code on instrumented classes</span></div>
<div class="p4">
<span class="s1"></span><br /></div>
<blockquote class="tr_bq">
<span class="s1">java -cp ~/Desktop/cobertura-2.0.3/cobertura-2.0.3.jar:projectname/build/classes/main/:. -Dnet.sourceforge.cobertura.datafile=cobertura.ser Test</span></blockquote>
<div class="p4">
<span class="s1"></span><br /></div>
<div class="p4">
<span class="s1"></span><br /></div>
<div class="p5">
<span class="s1">To Create Cobertura Report Outside gradle</span></div>
<div class="p4">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">
</span></div>
<blockquote class="tr_bq">
<span class="s1">~/Desktop/cobertura-2.0.3/cobertura-report.sh --format html --datafile cobertura.ser --destination coverage projectname/src/</span></blockquote>
<div class="p3">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1" style="color: #0b5394;"><b>3. Merge reports</b></span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">Once both the reports are ready we can use following command to merge</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<blockquote class="tr_bq">
<span class="s1">./cobertura-merge.sh --datafile cobertura.ser cobertura1.ser </span></blockquote>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">now create report using command</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p3">
<span class="s1">
</span></div>
<blockquote class="tr_bq">
<span class="s1">cobertura.ser --destination coverage projectname/src/</span></blockquote>
<div class="p3">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1" style="color: #0b5394;"><b>4. Check for a condition on code coverage</b></span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p3">
<span class="s1">
</span></div>
<blockquote class="tr_bq">
<span class="s1">~/Desktop/cobertura-2.0.3/cobertura-check.sh --datafile projectname/build/cobertura/cobertura.ser --line 30</span></blockquote>
<br />
<span style="color: #b45f06;">~Yagna</span><br />
<blockquote class="tr_bq">
</blockquote>
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-58098265104307761702013-07-23T05:50:00.001-07:002013-07-23T06:01:56.434-07:00Writing Sample plugin for Jenkins<div dir="ltr" style="text-align: left;" trbidi="on">
<pre style="line-height: 1.3; overflow: auto; padding: 0px;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">
</span></pre>
<blockquote class="tr_bq">
<span style="color: orange; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><b>There are so many plugins available for Jenkins which will cater most of your needs. But there are chances where you have to write your own plugin.</b></span></blockquote>
<pre style="line-height: 1.3; overflow: auto; padding: 0px;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Jenkins Plugin should be developed in java and we have to create a .hpi file out of that. But don't be panic about this as this can be done automatically. Process is as follows.</span></pre>
<pre style="line-height: 1.3; overflow: auto; padding: 0px;"><span style="background-color: white; font-size: 13px; line-height: 17.328125px;">
</span></pre>
<pre style="line-height: 1.3; overflow: auto; padding: 0px;"><b style="font-family: Arial, Helvetica, sans-serif; font-size: small;"><span style="color: #45818e;">Step 0: </span></b><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><span style="background-color: white; line-height: 17.328125px;">Set ~/.m2/settings.xml as specified in </span><span style="line-height: 1.3;"><a href="https://wiki.jenkins-ci.org/display/JENKINS/Plugin+tutorial">https://wiki.jenkins-ci.org/display/JENKINS/Plugin+tutorial</a></span></span></pre>
<pre style="line-height: 1.3; overflow: auto; padding: 0px;"></pre>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><b><span style="color: #45818e;">Step 1:</span></b> </span><span style="font-size: x-small;"><span style="font-family: Arial, Helvetica, sans-serif;">On a linux machine</span><br /><span style="font-family: Courier New, Courier, monospace;">mvn -U org.jenkins-ci.tools:maven-hpi-plugin:create</span></span><br />
<br />
<pre style="overflow: auto; padding: 0px;"><b style="font-family: Arial, Helvetica, sans-serif; font-size: small; line-height: 1.3;"><span style="color: #45818e;">Step 2: </span></b><span style="font-size: x-small;"><span style="font-family: Arial, Helvetica, sans-serif;">This will give create sample code. Now
</span><span style="font-family: Courier New, Courier, monospace;">cd newly-created-directory
mvn package</span><span style="font-family: Arial, Helvetica, sans-serif;">
Most probably you will get an error saying
libjna-java mvn test failed with java.lang.UnsatisfiedLinkError: com.sun.na.Native.open(Ljava/lang/String;)J
at com.sun.jna.Native.open(Native Method)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:236)
at com.sun.jna.Library$Handler.<init>(Library.java:140)
at com.sun.jna.Native.loadLibrary(Native.java:366)
at com.sun.jna.Native.loadLibrary(Native.java:351)
at hudson.util.jna.GNUCLibrary.<clinit>(GNUCLibrary.java:105)
This is because of a known issue.
Workaround would be add the following lines to your project's pom.xml inside the dependencies node and if not existing create dependencies node
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>3.2.2</version>
</dependency></span></span></pre>
<pre style="overflow: auto; padding: 0px;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">
</span></pre>
<div>
<div class="separator" style="clear: both;">
<span style="font-size: x-small;"><span style="background-color: white; font-family: Arial, Helvetica, sans-serif;"><b><span style="color: #45818e;">Step 4:</span></b></span><span style="font-family: Arial, Helvetica, sans-serif;"> After doing that use following command</span><br /><span style="font-family: Courier New, Courier, monospace;">mvn install</span><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-size: x-small;"><span style="font-family: Arial, Helvetica, sans-serif;">Now you can see a hpi file created in target directory.</span><br /><br /><span style="color: #45818e; font-family: Arial, Helvetica, sans-serif;"><b>Step 5: </b></span><span style="font-family: Arial, Helvetica, sans-serif;">Run the newly created plugin using command</span><br /><span style="font-family: Courier New, Courier, monospace;">export MAVEN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=n"<br />mvn hpi:run</span></span><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIC6qBaRzVVVkPdXaARBvFF-zBDcSax9b3SYxNLPAsc7P7sZRmYgBRgT3p7VnC2NXXGfnuQ_BMmwPkJoOCf9cnRIflvd8tWSI6Gx_KUsWZctFprjzAavLKMKNqm6WeuXH4nYZfybn6h5da/s1600/run.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="283" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIC6qBaRzVVVkPdXaARBvFF-zBDcSax9b3SYxNLPAsc7P7sZRmYgBRgT3p7VnC2NXXGfnuQ_BMmwPkJoOCf9cnRIflvd8tWSI6Gx_KUsWZctFprjzAavLKMKNqm6WeuXH4nYZfybn6h5da/s400/run.png" width="400" /></a></div>
<pre style="line-height: 1.3; overflow: auto; padding: 0px;"><span style="font-size: x-small;">
</span></pre>
<pre style="overflow: auto; padding: 0px;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><span style="line-height: 13px;"><b><span style="color: #134f5c;">Step 6:</span></b> Open your favorite Browser and go to http://127.0.0.1:8080 which will show you following screen</span></span></pre>
<pre style="overflow: auto; padding: 0px;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><span style="line-height: 13px;">
</span></span></pre>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVzgQ9Aa0UdIzekfYsalmGtWWiJGul93umYmm_2OpaNIThGLlhoLMj49NMp23iEfzSaSZ3drQENmlTVy-DW610J2B_Z_KIWv6vX1Z4CxOViAT8PbSenrx4XMiYQm8MUr-7ahiRiuGusCoK/s1600/Jenkins-Dashboard.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVzgQ9Aa0UdIzekfYsalmGtWWiJGul93umYmm_2OpaNIThGLlhoLMj49NMp23iEfzSaSZ3drQENmlTVy-DW610J2B_Z_KIWv6vX1Z4CxOViAT8PbSenrx4XMiYQm8MUr-7ahiRiuGusCoK/s400/Jenkins-Dashboard.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><b><span style="color: #134f5c;">Step 7:</span></b> Create a new Job and in build steps you can see "<b>Say Hello world</b>" as a Task. Add this with some name.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVLg-07A4gNgfSVQpc5FVhqY4gDbqYlXJYdq2BrM4ErIc5Z2F91kCHZI5Yrw6DbH-gESPujGxZ1r9havxi0kuj4HxyGRqgjh3kFTyihZPgYFqScFpVUIjS-N1cwYd7c_XLHfICJ7vCsJIX/s1600/NewJob.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVLg-07A4gNgfSVQpc5FVhqY4gDbqYlXJYdq2BrM4ErIc5Z2F91kCHZI5Yrw6DbH-gESPujGxZ1r9havxi0kuj4HxyGRqgjh3kFTyihZPgYFqScFpVUIjS-N1cwYd7c_XLHfICJ7vCsJIX/s400/NewJob.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b><span style="color: #134f5c;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Step 8:</span> </span></b><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Now build this project and you can see Hello world output as shown below</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifneWGQQZIgG5ZEf4qlqjQTBnyXg2aXFKtuoxEdNJ6cgV4k1Bor8K-PHkKjk9aW1BDhAtXlR7yiEaB-SKZgoCr59IwN3a4G3AHsPX3q0bUQeZUK62HqcxjdofJN-4PLt0P1UHHT1WTQW-b/s1600/ConsoleOutput.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifneWGQQZIgG5ZEf4qlqjQTBnyXg2aXFKtuoxEdNJ6cgV4k1Bor8K-PHkKjk9aW1BDhAtXlR7yiEaB-SKZgoCr59IwN3a4G3AHsPX3q0bUQeZUK62HqcxjdofJN-4PLt0P1UHHT1WTQW-b/s400/ConsoleOutput.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">~ Yananarayana Dande</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span></div>
<pre style="overflow: auto; padding: 0px;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><span style="line-height: 13px;">
</span></span></pre>
</div>
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-29583685584068054832013-07-22T02:08:00.002-07:002013-07-22T06:21:52.036-07:00Jenkins - A Centralized Tool to run your Automated Tests<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Most of the times Test team will end up writing different test harnesses to test different components and there should be <span style="background-color: white;"><span style="color: #333333;"><span style="line-height: 20px;"> a platform from which a user can start a run of specific automation suite on a specified environment with given configurations remotely using a web page. For achieving this and other features listed below I was given a task by my manager to design a Tool. </span></span></span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><span style="line-height: 20px;"><br /></span></span></span></div>
<div style="text-align: justify;">
<span style="background-color: white;"><span style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><span style="line-height: 20px;">I have selected Jenkins and customized it to achieve this. </span></span></span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #134f5c; font-family: Times, Times New Roman, serif;"><b>Features</b></span></div>
<ul style="text-align: left;">
<li style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Single Sign-on for all your Automation Needs</span></li>
<li style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Common Console for starting any Automation Run</span></li>
<li style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Configure all your Automation Suites from a single place</span></li>
<li style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Horizontal coverage by adding all automation suites </span></li>
<li style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Vertical dig down possible for an Automation Engineer to understand root cause for Test failures</span></li>
<li style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Email Notification once run in completed</span></li>
<li style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Confluence Page is updated with results/custom message once run is completed</span></li>
<li style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Code Coverage can be published</span></li>
</ul>
<div style="text-align: justify;">
<span style="color: #134f5c; font-family: Times, Times New Roman, serif;"><b>How to Achieve this</b></span></div>
<div style="text-align: justify;">
<ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Install Jenkins </span></li>
<ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Follow instructions given at <a href="https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins">https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins</a></span></li>
</ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">User Management</span></li>
<ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Use LDAP Plugin by following instructions given at <a href="https://wiki.jenkins-ci.org/display/JENKINS/LDAP+Plugin">https://wiki.jenkins-ci.org/display/JENKINS/LDAP+Plugin</a></span></li>
</ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">To change standard Appearance to suite your organizational rules </span></li>
<ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Use Simple Theme Plugin by following instructions given at <a href="https://wiki.jenkins-ci.org/display/JENKINS/Simple+Theme+Plugin">https://wiki.jenkins-ci.org/display/JENKINS/Simple+Theme+Plugin</a></span></li>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><span style="text-align: justify;">Use Dashboard View Plugin by following instructions given at </span><a href="https://wiki.jenkins-ci.org/display/JENKINS/Dashboard+View" style="text-align: justify;">https://wiki.jenkins-ci.org/display/JENKINS/Dashboard+View</a> </span><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> </span></li>
</ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">To add and manage nodes</span></li>
<ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Use <span style="text-align: left; text-indent: -0.31in;">N</span><span style="text-align: left; text-indent: -0.31in;">ode and Label parameter plugin <span style="text-align: justify; text-indent: 0px;">by following instructions given at </span> </span><a href="https://wiki.jenkins-ci.org/display/JENKINS/NodeLabel+Parameter+Plugin">https://wiki.jenkins-ci.org/display/JENKINS/NodeLabel+Parameter+Plugin</a></span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><span style="text-align: left; text-indent: -0.31in;">Use Multi Slave </span><span style="text-align: left; text-indent: -0.31in;">config</span><span style="text-align: left; text-indent: -0.31in;">
</span><span style="text-align: left; text-indent: -0.31in;">plugin </span>by following instructions given at <a href="https://wiki.jenkins-ci.org/display/JENKINS/Multi+slave+config+plugin">https://wiki.jenkins-ci.org/display/JENKINS/Multi+slave+config+plugin</a></span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><span style="text-align: left; text-indent: -0.31in;">Use Jenkins Slave </span><span style="text-align: left; text-indent: -0.31in;">Setup Plugin </span>by following instructions given at <a href="https://wiki.jenkins-ci.org/display/JENKINS/Slave+Setup+Plugin">https://wiki.jenkins-ci.org/display/JENKINS/Slave+Setup+Plugin</a></span></li>
</ol>
<li><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">For Code Control</span></li>
<ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Use Git Plugin by following instructions given at </span><a href="https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin</span></a></li>
</ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Build</span></li>
<ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Use Jenkins Gradle Plugin by following instructions given at </span><a href="https://wiki.jenkins-ci.org/display/JENKINS/Gradle+Plugin"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">https://wiki.jenkins-ci.org/display/JENKINS/Gradle+Plugin</span></a></li>
</ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Test Results</span></li>
<ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Copy To Slave Plugin has Bug - JENKINS-14578 so we decided using NFS instead</span></li>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Use TestNG Results Plugin </span><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> by following instructions given at <a href="https://wiki.jenkins-ci.org/display/JENKINS/testng-plugin">https://wiki.jenkins-ci.org/display/JENKINS/testng-plugin</a></span></li>
</ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Publish</span></li>
<ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Use build-user-vars-plugin by following instructions given at <a href="https://wiki.jenkins-ci.org/display/JENKINS/Build+User+Vars+Plugin">https://wiki.jenkins-ci.org/display/JENKINS/Build+User+Vars+Plugin</a></span></li>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Use Jenkins Email Extension Plugin </span><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">by following instructions given at </span><a href="https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin</span></a></li>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Use Confluence Plugin by following instructions given at <a href="https://wiki.jenkins-ci.org/display/JENKINS/Confluence+Publisher+Plugin">https://wiki.jenkins-ci.org/display/JENKINS/Confluence+Publisher+Plugin</a></span></li>
</ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Code Coverage Tool</span></li>
<ol>
<li style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Use Jenkins Cobertura Plugin by following instructions given at <a href="https://wiki.jenkins-ci.org/display/JENKINS/Cobertura+Plugin">https://wiki.jenkins-ci.org/display/JENKINS/Cobertura+Plugin</a></span></li>
</ol>
</ol>
</div>
<div style="text-align: left;">
<br />
<span style="color: #134f5c; font-family: Times, Times New Roman, serif;"><b>Adding a New Slave</b></span><br />
<br />
<br />
<ol style="text-align: left;">
<li><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">As a first step add a slave node in Jenkins UI</span><div class="separator" style="clear: both; text-align: center;">
</div>
</li>
</ol>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5Q23sPhFjOUhLURtChUtWbn2hUU3bLayXigU0cAepCP87bf4RjfKTViMlqxHz0D3Jqm-kK1Jwi0iNCmBwjLZ7-4DB2Y4fY7OFB_oISL_b3Eif-BeexuFxTW5j5ZK_N2XM-Aeww4oQ6nco/s1600/Adding+Slave.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5Q23sPhFjOUhLURtChUtWbn2hUU3bLayXigU0cAepCP87bf4RjfKTViMlqxHz0D3Jqm-kK1Jwi0iNCmBwjLZ7-4DB2Y4fY7OFB_oISL_b3Eif-BeexuFxTW5j5ZK_N2XM-Aeww4oQ6nco/s400/Adding+Slave.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
</div>
<div style="text-align: justify;">
<span style="color: #134f5c; font-family: Times, Times New Roman, serif;"><b>Start Slave process</b></span></div>
<div style="text-align: justify;">
<br />
<ul>
<li style="text-align: left;"><span style="color: orange; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><b>wget http://[your jenkins host]:[port number]/jnlpJars/slave.jar</b></span></li>
<li style="text-align: left;"><span style="color: orange; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><b>${NOHUP} ${JAVA} -jar slave.jar -jnlpUrl http://SERVERNAME:PORT/computer/USER__NODENAME/slave-agent.jnlp &</b></span></li>
</ul>
</div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Then you can see the slave at Slaves Page</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaMowDFcCK8UUlmYjtbvM3pf6ZlIf5KJx9nq0Mrw938Ov9U2znal5oaCsXPlbqIeAiAo7gQ9O3vLs_uDzKxNhA0k4_sMu4IvZPTAkJC2Gfu5JftK26afZ9osKkKRgUt7PC7r1v92jwVmY5/s1600/Slave+Page.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="90" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaMowDFcCK8UUlmYjtbvM3pf6ZlIf5KJx9nq0Mrw938Ov9U2znal5oaCsXPlbqIeAiAo7gQ9O3vLs_uDzKxNhA0k4_sMu4IvZPTAkJC2Gfu5JftK26afZ9osKkKRgUt7PC7r1v92jwVmY5/s640/Slave+Page.png" width="640" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span></div>
<div style="text-align: justify;">
<br />
<b><span style="color: #134f5c; font-family: Times, Times New Roman, serif;">Configuring a New Project</span></b><br />
<br />
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Fill the Project name, description for the project and Location of code on github</span><br /><div class="separator" style="clear: both; font-family: Times, 'Times New Roman', serif; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVQZk2d-xzm10NgllmqECmnw2-wMeYR3NN-oZUqlsJmVcMtn1WzFjtKkcSjKJUR2DlQWQTQn7IPd7cfNmWF4sYf3s_UlEzTstCvvZ1HZuekWJPaTQgE6e4DJLeMOF-j2lSDkok-FrAwE3v/s1600/Configure-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVQZk2d-xzm10NgllmqECmnw2-wMeYR3NN-oZUqlsJmVcMtn1WzFjtKkcSjKJUR2DlQWQTQn7IPd7cfNmWF4sYf3s_UlEzTstCvvZ1HZuekWJPaTQgE6e4DJLeMOF-j2lSDkok-FrAwE3v/s400/Configure-1.png" width="400" /></a></div>
<div class="separator" style="clear: both; font-family: Times, 'Times New Roman', serif; text-align: center;">
</div>
<span style="font-family: Times, Times New Roman, serif;"> </span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Add Parameters required for the project to run. So these are called as build Parameters, which means these will change per build.</span><br /><div class="separator" style="clear: both; font-family: Times, 'Times New Roman', serif; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia5NCDC5IWvdDMAKM9g2-GKn0OXGhnVpQ-WUSlz-r5xq6TKob5sbTW7sR9kEmID8zby8wNcMZi8yKR4iUASgrd9X0UiYmhnua4OpTh1_DwR8SNUmXQatRY0MtpPGOP9lAARo7KSBKDboqb/s1600/Configure-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia5NCDC5IWvdDMAKM9g2-GKn0OXGhnVpQ-WUSlz-r5xq6TKob5sbTW7sR9kEmID8zby8wNcMZi8yKR4iUASgrd9X0UiYmhnua4OpTh1_DwR8SNUmXQatRY0MtpPGOP9lAARo7KSBKDboqb/s400/Configure-2.png" width="400" /></a></div>
</li>
<li><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Bind this project to a given node</span><div class="separator" style="clear: both; font-family: Times, 'Times New Roman', serif; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3AdkAKlpdeELp_drggzyMdXckclZiHvyRJ0Hu1eH7OvrkJbQYU-UTFIVT7Wztpb8Km0QW5u_ZnL3f1qeJlJKJy9rVwLzqb10clCkcDpr6NYfJhf7n05A7ynZ44jPZjvUCm8RzV2mlRYEM/s1600/Configure-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3AdkAKlpdeELp_drggzyMdXckclZiHvyRJ0Hu1eH7OvrkJbQYU-UTFIVT7Wztpb8Km0QW5u_ZnL3f1qeJlJKJy9rVwLzqb10clCkcDpr6NYfJhf7n05A7ynZ44jPZjvUCm8RzV2mlRYEM/s400/Configure-3.png" width="400" /></a></div>
</li>
<li><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Use Custom workspace to parse your results</span><div class="separator" style="clear: both; font-family: Times, 'Times New Roman', serif; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhptQ0_s3RMVAjXRX-RPLyhpHgldZb4o_ty4ttpaNVLKWFsYmsyVHYvLuQoUhxy8o3Z9Mr0JfZ5bLZ34Ypb906RyCnBduts4haoZrmVO8QM6TOViyAzlXUYFsZAu1uP8HVRxpAYZ5nkwy3e/s1600/Configure-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhptQ0_s3RMVAjXRX-RPLyhpHgldZb4o_ty4ttpaNVLKWFsYmsyVHYvLuQoUhxy8o3Z9Mr0JfZ5bLZ34Ypb906RyCnBduts4haoZrmVO8QM6TOViyAzlXUYFsZAu1uP8HVRxpAYZ5nkwy3e/s400/Configure-4.png" width="400" /></a></div>
</li>
<li><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Give the build steps</span><div class="separator" style="clear: both; font-family: Times, 'Times New Roman', serif; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguAc1YfMpygT9DZDD1LMJrbXbDFa3jCJUgLcHmFi33FajNCDHks47Riu2QYEXN2jgKoKcRZ4vxfTqPQ_cBIprXKs1WfahfxoSAtAKOgUaeoByp28XkG1bvLH2UY6uiJhIFxul85Q-RcCVe/s1600/Configure-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguAc1YfMpygT9DZDD1LMJrbXbDFa3jCJUgLcHmFi33FajNCDHks47Riu2QYEXN2jgKoKcRZ4vxfTqPQ_cBIprXKs1WfahfxoSAtAKOgUaeoByp28XkG1bvLH2UY6uiJhIFxul85Q-RcCVe/s400/Configure-5.png" width="400" /></a></div>
</li>
<li><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Specify files to be processed by testng-plugin for giving results and to create trend graph</span><div class="separator" style="clear: both; font-family: Times, 'Times New Roman', serif; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieazGzPubXFyUNSYi8593WvMAiSzJVGofXPaghTQy1N1OquD-ejbigUARwzKsgmXKzajQXS1xG9cJa9xwflrqidSmAS6e_40dXxpEcifra5s4TLjzbEC4nPJf4l4ICvf4eZEmd5wtpOOGi/s1600/Configure-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieazGzPubXFyUNSYi8593WvMAiSzJVGofXPaghTQy1N1OquD-ejbigUARwzKsgmXKzajQXS1xG9cJa9xwflrqidSmAS6e_40dXxpEcifra5s4TLjzbEC4nPJf4l4ICvf4eZEmd5wtpOOGi/s400/Configure-6.png" width="400" /></a></div>
</li>
<li><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Create an editable e-mail notification as a Post Step so that it sends email notification to selected people in the organisation in the given format</span><div class="separator" style="clear: both; font-family: Times, 'Times New Roman', serif; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo_nlviGYT_cNWu73W-0BH3tcQFuSQ4fGM_XeTVHcbvMB0lHuaqYEATTzBd6VqI0AqYQjH-gF2h_WO4d0JCSJDfqbVMaC0IyDCVTpfmUBbfAiACQ62Xxe5SgvIBijjuOMLUeL9wheS_flY/s1600/Configure-7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo_nlviGYT_cNWu73W-0BH3tcQFuSQ4fGM_XeTVHcbvMB0lHuaqYEATTzBd6VqI0AqYQjH-gF2h_WO4d0JCSJDfqbVMaC0IyDCVTpfmUBbfAiACQ62Xxe5SgvIBijjuOMLUeL9wheS_flY/s400/Configure-7.png" width="400" /></a></div>
</li>
<li><span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Create a Publish Task as Post build step to publish your results in Confluence</span><div class="separator" style="clear: both; font-family: Times, 'Times New Roman', serif; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH9v8cxVgp17NfD-WupuDZGU_ET3SEK0SzVHEJD5y7k2_afF8Kv9hjDXfI6YDy3J7lRm4PeCIkBFKiH_6uu2tsSgEPNT401d-4EImPle8xa7MIfX6Mvaf-PvV0hRNt3ulhSM0l0V1UI06I/s1600/Configure-8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH9v8cxVgp17NfD-WupuDZGU_ET3SEK0SzVHEJD5y7k2_afF8Kv9hjDXfI6YDy3J7lRm4PeCIkBFKiH_6uu2tsSgEPNT401d-4EImPle8xa7MIfX6Mvaf-PvV0hRNt3ulhSM0l0V1UI06I/s400/Configure-8.png" width="400" /></a></div>
</li>
</ul>
</div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<br />
<blockquote class="tr_bq">
<span style="color: #e69138; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><b>Your centralized Tool is ready and you can run your Automated Tests now :) </b></span></blockquote>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<span style="color: #134f5c; font-family: Times, Times New Roman, serif;"><b>Build Now(Run Tests)</b></span><br />
<span style="color: #134f5c; font-family: Times, Times New Roman, serif;"><b><br /></b></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">From left hand pane in the project page say "Build Now" and it will take you to following screen</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicyU8-xyqYQVnVp7LE5SwDgnAtfHQxJro_NwN96qWs5ODBNBwubzTf3LnZGyJF1lMkpH754fuz4MJSqwUNvF_NwKCCHcWtcpEXiRLd3W-eyvz0higZBH3dkmJYDncP3jxqjrGqLsQXuXen/s1600/Build+Now+Page.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicyU8-xyqYQVnVp7LE5SwDgnAtfHQxJro_NwN96qWs5ODBNBwubzTf3LnZGyJF1lMkpH754fuz4MJSqwUNvF_NwKCCHcWtcpEXiRLd3W-eyvz0higZBH3dkmJYDncP3jxqjrGqLsQXuXen/s320/Build+Now+Page.png" width="320" /></a></div>
<br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Now give the build parameters and say build. This will start running your test cases.</span><br />
<br />
<span style="color: #134f5c; font-family: Times, Times New Roman, serif;"><b>Tests' output in Console</b></span><br />
<span style="color: #134f5c; font-family: Times, Times New Roman, serif;"><b><br /></b></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">You can have a look at the running tests in the console (Select console from Left Pane) as shown below</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjC5XCqZJCD05HP45SxKSlhlEbtNA4ie_bvJp13JzoHrMZ1gmWpYXrrm3M52xf_3KhNYvGh6fBvTV5cb-MVtmLXw35mTi0Ly1xdmIrdt3w3VR7sRzjw0F_Emwb8cU5dS6iLze-MFM4hyphenhyphenBx/s1600/Console+Output.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjC5XCqZJCD05HP45SxKSlhlEbtNA4ie_bvJp13JzoHrMZ1gmWpYXrrm3M52xf_3KhNYvGh6fBvTV5cb-MVtmLXw35mTi0Ly1xdmIrdt3w3VR7sRzjw0F_Emwb8cU5dS6iLze-MFM4hyphenhyphenBx/s400/Console+Output.png" width="400" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Also once tests are completed you can see the TestNg reports and Trends as shown below</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZxczsgHuzdMJJI7f9DChpSUkrx2oOAo2YDQhP9njJVubLG6YMrW9R83N-Ba9mcmbQBtfFWqdiT3fPOk7Q2ofw_T_knpH5SvI4YqV21OTRFHPla89jcFe4yoy7Oqf0v7mCbxh_R3FhACoZ/s1600/Project+Page+with+TestNg+Trends+Graph.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="152" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZxczsgHuzdMJJI7f9DChpSUkrx2oOAo2YDQhP9njJVubLG6YMrW9R83N-Ba9mcmbQBtfFWqdiT3fPOk7Q2ofw_T_knpH5SvI4YqV21OTRFHPla89jcFe4yoy7Oqf0v7mCbxh_R3FhACoZ/s400/Project+Page+with+TestNg+Trends+Graph.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3WtNdZWagRaK5WR3sAhv2eVVHHn1PU0kDSzlVR1bB4iL2ed0DPV4_2Zd1Nsx-n-7Scc_-Li-1bH8U6nwG-OzbHRB84QnKlvBsH-DVgD4zBwaD3I4bw0jWYonBfCv0FMXYe1-RfCO4nF4w/s1600/TestNg+Results.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3WtNdZWagRaK5WR3sAhv2eVVHHn1PU0kDSzlVR1bB4iL2ed0DPV4_2Zd1Nsx-n-7Scc_-Li-1bH8U6nwG-OzbHRB84QnKlvBsH-DVgD4zBwaD3I4bw0jWYonBfCv0FMXYe1-RfCO4nF4w/s400/TestNg+Results.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">Also you can see from which build this test cases is failing when you dig the links in TestNG reports</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<span style="color: #134f5c; font-family: Times, Times New Roman, serif;"><b>Dashboard</b></span><br />
<span style="color: #134f5c; font-family: Times, Times New Roman, serif;"><b><br /></b></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">You can collect different statistics on a dashboard page as shown below</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjVDaKUpY87bpDP7Lic324aaragUUifKUMm7EqUXHhtWW6nFjQZGQa8IigJwitJdtfCwT39YsP7qJ7A-4XO2Kl4kDEV706wl2Q1U_edc5xiZg0u0Pp2MDcjUqL0VX57xvR2-TFvd6mSfWS/s1600/Dashboard.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjVDaKUpY87bpDP7Lic324aaragUUifKUMm7EqUXHhtWW6nFjQZGQa8IigJwitJdtfCwT39YsP7qJ7A-4XO2Kl4kDEV706wl2Q1U_edc5xiZg0u0Pp2MDcjUqL0VX57xvR2-TFvd6mSfWS/s640/Dashboard.png" width="640" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
</div>
<div style="text-align: justify;">
Also an e<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">mail Notification is sent after the run</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #134f5c; font-family: Times, Times New Roman, serif;"><b>Confluence Update</b></span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">After every run it will update the results in the configured confluence page</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<span style="color: #e69138; font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><b>Happy Testing :)</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">~Yagnanarayana Dande</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span></div>
</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com1tag:blogger.com,1999:blog-5008407120359549210.post-60482714835205983442012-08-22T01:26:00.000-07:002012-08-22T01:27:08.376-07:00Robot Test Automation Framework - Write your test library in Python and/or Java<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
In this tutorial I will help you to write a simple program in Robot Test Framework. As usual we will start with installation.<br />
<br />
For Robot to work we need Python, Jython, WxPython to be installed on the machine. So lets first install them before we do anything else.<br />
<blockquote class="tr_bq">
<span style="color: #e69138;"><b>Python Installation</b></span> </blockquote>
<b>Step 1:</b> Download Python for Windows from http://www.python.org/getit/windows/ and doubleclick on the installer<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCvG55tVZrG-fzApzAYU_X6cRsk6eN6aKH20hPaK8bLsSzz5aYDgmupkNHJfYGOoP1ktgYGPAW-Hg3r3t2yezGvTiEQ8sFvfWA8k-AX6NgMCXQi4AnfYDE8Jkwb4ljNpNrk1mhyzPiQhUO/s1600/1+Install+Python.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="343" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCvG55tVZrG-fzApzAYU_X6cRsk6eN6aKH20hPaK8bLsSzz5aYDgmupkNHJfYGOoP1ktgYGPAW-Hg3r3t2yezGvTiEQ8sFvfWA8k-AX6NgMCXQi4AnfYDE8Jkwb4ljNpNrk1mhyzPiQhUO/s400/1+Install+Python.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Step 2: </b>Complete the installation</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjANZ1htQXdXRGYf78EA8D639SsSftJRKmJEzWo4yXOlcQNhL7108cH9oZQGCICcDDhgii0HjfnhqsG_zCzpdfU_ri3MLdEijXFlZwLKGYpCwH6oKvY-U5njbUXHLl3HVVO5K6d6a73DqWC/s1600/2+Install+Python+Complete.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="341" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjANZ1htQXdXRGYf78EA8D639SsSftJRKmJEzWo4yXOlcQNhL7108cH9oZQGCICcDDhgii0HjfnhqsG_zCzpdfU_ri3MLdEijXFlZwLKGYpCwH6oKvY-U5njbUXHLl3HVVO5K6d6a73DqWC/s400/2+Install+Python+Complete.png" width="400" /></a></div>
<br />
<b>Step 3: </b>Put Python bin directory in the environment Variable PATH <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtpTCntax-DngZfRf-FPGyROY1e5OE-wtNdri6HWbLRIf1-1ztZkTWmnnFDTC2cWhakOImwhYwqtdqZzc5j0D2Kwuw_BocMYf7PXusb7VkcVBfYJUJuFgN726opvUOjI3ZMydSjje5LJ-L/s1600/3+Env+Variable+Python.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="251" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtpTCntax-DngZfRf-FPGyROY1e5OE-wtNdri6HWbLRIf1-1ztZkTWmnnFDTC2cWhakOImwhYwqtdqZzc5j0D2Kwuw_BocMYf7PXusb7VkcVBfYJUJuFgN726opvUOjI3ZMydSjje5LJ-L/s400/3+Env+Variable+Python.png" width="400" /></a></div>
<br />
<b>Step 4: </b>Verify the installation by typing 'python' on your command prompt<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6jV_bf0CjFChElQIJWcdFOf2pBqwFu8Aee15zhEBRgiwmOzXcjzzjcm4mkfVPPYlVKRsj_QUqNkQB-tScj0MYFAG3NmP2M1V1LdeENHp7M76r3Y6GcJJ9HrsUI00z19UIUdxibbsat3Dm/s1600/4+Check+Python+Install.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6jV_bf0CjFChElQIJWcdFOf2pBqwFu8Aee15zhEBRgiwmOzXcjzzjcm4mkfVPPYlVKRsj_QUqNkQB-tScj0MYFAG3NmP2M1V1LdeENHp7M76r3Y6GcJJ9HrsUI00z19UIUdxibbsat3Dm/s400/4+Check+Python+Install.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<blockquote class="tr_bq">
<b style="color: #e69138;">Jython Installation</b> </blockquote>
<span style="font-family: Arial, Helvetica, sans-serif;"> Using test libraries implemented with Java or using Java tools internally requires running Robot Framework on Jython, which in turn requires Java Runtime Environment (JRE). </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"> Installing Jython is a fairly easy procedure, and the first step is getting an installer from http://jython.org. The installer is an executable JAR package, which you can run from the command line like java -jar jython_installer-<version>.jar. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"> Depending on the system configuration, it may also be possible to just double-click the installer.</span><br />
<br />
<b>Step 1:</b> <span style="font-family: Times, Times New Roman, serif;">Download Jython for Windows from http://jython.org/downloads.html and on command prompt type 'java -jar jython_installer-<version>.jar' where <version> needs to be replaced by the actual version</span><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKZZ8AWGkbuslj3eKs4XbKCHb98iqwKYCR3HFazp2UJWXPJypgpXtk2Dd1Qv2T76MuAouGmpdyVJ9zT09PXZgRohgD8C5If2pSqelbvCebzujcnqTmO5WN2KLQhO8hdc6ulQIMzKVQvuRX/s1600/5+Install+Jython.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="195" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKZZ8AWGkbuslj3eKs4XbKCHb98iqwKYCR3HFazp2UJWXPJypgpXtk2Dd1Qv2T76MuAouGmpdyVJ9zT09PXZgRohgD8C5If2pSqelbvCebzujcnqTmO5WN2KLQhO8hdc6ulQIMzKVQvuRX/s400/5+Install+Jython.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Step 2: </b>Complete the installation process</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWVk2J2hAiTGtisoU6nduySDdIK1L3tqsNJuUV6PuOu6peXJpXfUMXdyHClfg4suQMW2LBIjYOmifa9tMupcNPHwKRl2tqDEEV8azzJg3LPjXoy_ZNTafF_tOTeqpYf_2p9i0rdDClmzaR/s1600/6+Install+Jython+Complete.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWVk2J2hAiTGtisoU6nduySDdIK1L3tqsNJuUV6PuOu6peXJpXfUMXdyHClfg4suQMW2LBIjYOmifa9tMupcNPHwKRl2tqDEEV8azzJg3LPjXoy_ZNTafF_tOTeqpYf_2p9i0rdDClmzaR/s400/6+Install+Jython+Complete.png" width="400" /></a></div>
<br />
<br />
<blockquote class="tr_bq">
<b style="color: #e69138;">Robot Installation</b></blockquote>
<b>Step 1:</b> <span style="font-family: Times, Times New Roman, serif;">Download Robot for Windows from </span>http://downloads.robotframework.org/ and double click on the installer<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-LhywFt2rk7gjrqB26xdOJGmXQm3B5noJ-HUGqy6N4NXfK5rDV_jtG2e8_cfZf2ZXy0BFeIsQ0qIQalc6M1MGWNCJ-kg3FzLDOCpEhkBld9zuJWdrVX_kRv7p9QhtGiAdmKAU7nzoiXgr/s1600/7+Robot+Installation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="261" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-LhywFt2rk7gjrqB26xdOJGmXQm3B5noJ-HUGqy6N4NXfK5rDV_jtG2e8_cfZf2ZXy0BFeIsQ0qIQalc6M1MGWNCJ-kg3FzLDOCpEhkBld9zuJWdrVX_kRv7p9QhtGiAdmKAU7nzoiXgr/s400/7+Robot+Installation.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Step 2: </b>Complete the installation process
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6EXjKzV4167RMAF5P7zvTDJ_MdOCkmkEbrkSAFwWcQmtuhxJZ7qnsa1qfrQhyphenhyphenvD_iIZr4lWSA9oyyibi-joxaL4RsnS5qMWovXYFXw0LZnh5f2KOymRnaSmH-sik0gerZzwAyUpYsrWWf/s1600/8+Robot-RIDE+Installation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="263" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6EXjKzV4167RMAF5P7zvTDJ_MdOCkmkEbrkSAFwWcQmtuhxJZ7qnsa1qfrQhyphenhyphenvD_iIZr4lWSA9oyyibi-joxaL4RsnS5qMWovXYFXw0LZnh5f2KOymRnaSmH-sik0gerZzwAyUpYsrWWf/s400/8+Robot-RIDE+Installation.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<blockquote class="tr_bq">
<b style="color: #e69138;"> WxPython Installation</b></blockquote>
<b>Step 1:</b> <span style="font-family: Times, Times New Roman, serif;">Download WxPython for Windows from </span>http://wxpython.org/download.php#stable and double click on the installer<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4VtsuIiLznFGtB-U3P8i_zGyBq1aPwWEnCYp0jZ44CRn23xE8PZz5OD0-dvZIw4TcxAGya-N2wt4XYeWE2YpcZ9Fuhyvg467LWBuFnwyOQkZ3rdm0ScrtldlCaGpGgOWMdKISUbdf9ixI/s1600/9+WxPython+Installation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4VtsuIiLznFGtB-U3P8i_zGyBq1aPwWEnCYp0jZ44CRn23xE8PZz5OD0-dvZIw4TcxAGya-N2wt4XYeWE2YpcZ9Fuhyvg467LWBuFnwyOQkZ3rdm0ScrtldlCaGpGgOWMdKISUbdf9ixI/s400/9+WxPython+Installation.png" width="400" /></a></div>
<br />
<blockquote class="tr_bq">
<b style="color: #e69138;">Robot-RIDE Installation</b></blockquote>
<b>Step 1:</b> <span style="font-family: Times, Times New Roman, serif;">Download Robot-RIDE for Windows from </span>https://github.com/robotframework/RIDE/downloads/ and double click on the installer<br />
<br />
<b>Step 2:</b> <span style="font-family: Times, Times New Roman, serif;">On command prompt go to scripts directory where python is installed <PYTHON_INSTALLED_DIR>\scripts and type 'ride.pyc'. You will see following screen where you can write your Test cases</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZsCaVFKsni7pP8Lco0p0LaSlQk6qweqyywX1blsx1RUcEfBiwX_JvwsShAXpGtM4VCVWyp_PbyuzZ6J8EUho-VWqNtymJ0qRX01x3klzmk8YqNg419KFeRABHwIQeSa36WsgNSi7kqZJb/s1600/10+Ride+Screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="262" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZsCaVFKsni7pP8Lco0p0LaSlQk6qweqyywX1blsx1RUcEfBiwX_JvwsShAXpGtM4VCVWyp_PbyuzZ6J8EUho-VWqNtymJ0qRX01x3klzmk8YqNg419KFeRABHwIQeSa36WsgNSi7kqZJb/s400/10+Ride+Screenshot.png" width="400" /></a></div>
<br />
<blockquote class="tr_bq">
<b style="color: #e69138;">Writing simple Test Case in Robot-RIDE</b></blockquote>
Let us write a Test Case to check whether a particular directory exists or not on our machine.<br />
<br />
From file menu select new project give it some name like Example. Now right click on this project and select New Test Case. Give it some name like My Test. Also right click on project and select New User Keyword and give a name like My Keyword.<br />
<br />
There are some libraries which are by default provided by Robot like OperatingSystem which provides functionality of some operating system keywords like File operations, directory operations, etc...<br />
<br />
So we first import this library in the Project Page. Also Add Scalars for all variables you need to use in your Tests like path and MESSAGE in this case.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsORjSrpXRh-7qxZQ5reHQ8fdlh_M2M9MnRXFQy9kq3Pvx_2wXG4-lo715CGc0y0iq8Zir5MVk146RaoiB6CjeYhEepdoeV7xjN0TYI1xyZzKWh5YdWwOaoMzVHTGzZzjtC3IN1C7NXHGm/s1600/Example-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="262" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsORjSrpXRh-7qxZQ5reHQ8fdlh_M2M9MnRXFQy9kq3Pvx_2wXG4-lo715CGc0y0iq8Zir5MVk146RaoiB6CjeYhEepdoeV7xjN0TYI1xyZzKWh5YdWwOaoMzVHTGzZzjtC3IN1C7NXHGm/s400/Example-1.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
In the Test Case page, write your test case like <keyword> and <arg1> <arg2> .... In this case Log and My Keyword are keywords and ${MESSAGE} and ${path} are args.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-W7S9uhSDpVWK39wbtASnMHBJNDUb8gpXnLXQBm78oVvMcqFo7WSjSnmOOZaPQNxsAcIHNxoUb2_LXJ59WC19mLAMyBk25oLIPQVTw_-o4mRH_2DzPZNWq_xJTi5NqtZoSxp9eukv2-U_/s1600/Example-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="260" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-W7S9uhSDpVWK39wbtASnMHBJNDUb8gpXnLXQBm78oVvMcqFo7WSjSnmOOZaPQNxsAcIHNxoUb2_LXJ59WC19mLAMyBk25oLIPQVTw_-o4mRH_2DzPZNWq_xJTi5NqtZoSxp9eukv2-U_/s400/Example-2.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Where My Keyword is a keyword created by user by adding some available keywords from library as show below. In this case we are using Directory Should Exist keyword and argument as ${path}.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPZ6sg4_wqrAMpt2fr5CipPuCAbI9v0eLZ0z3j8n9fZEEkwUPQcjQ1krwocAv2vjvS1ZMTjxmgF0kyHoP3WYlhfZm-Ibt4VDnCo0iyCqczyWoZBMr0IYA6T6XiIsDEAvkUiOYPkz31MMng/s1600/Example-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="263" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPZ6sg4_wqrAMpt2fr5CipPuCAbI9v0eLZ0z3j8n9fZEEkwUPQcjQ1krwocAv2vjvS1ZMTjxmgF0kyHoP3WYlhfZm-Ibt4VDnCo0iyCqczyWoZBMr0IYA6T6XiIsDEAvkUiOYPkz31MMng/s400/Example-3.jpg" width="400" /></a></div>
<br />
<blockquote class="tr_bq">
<b style="color: #e69138;">Running Test Case in Robot-RIDE</b></blockquote>
Simply hit the Run button shown as "robot face" in the robot-RIDE screen.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg102EhUS-xLwX-VYNT2SNSI51gpClW8nKitGnCPuUGlRN5lOD4fe8jTH-gMAAYu3ts1nmsS4nOU11fLkooEz9stCSWErP2SmcIr_vewTqOOnfEZ81XpPPdevfFCKB2JE2-KnmRbkKe-n16/s1600/Example-4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="260" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg102EhUS-xLwX-VYNT2SNSI51gpClW8nKitGnCPuUGlRN5lOD4fe8jTH-gMAAYu3ts1nmsS4nOU11fLkooEz9stCSWErP2SmcIr_vewTqOOnfEZ81XpPPdevfFCKB2JE2-KnmRbkKe-n16/s400/Example-4.jpg" width="400" /></a></div>
<br />
<blockquote class="tr_bq">
<b style="color: #e69138;">Logs of Test Case in Robot-RIDE</b></blockquote>
Below is a sample log file<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy6NcVAb2M7dx-MwGrIuyoaEBRmOPfNRkVOxxX3uCAxLdHcEcxFRX7QIRdmVamxUiNQljcZefjKSmJEVimlKgoGbszGeB5m6NX0sH1xym0pgUixKxhqR4DXm4u3tg6xrVRqk5naICsbFmh/s1600/Example-5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="337" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy6NcVAb2M7dx-MwGrIuyoaEBRmOPfNRkVOxxX3uCAxLdHcEcxFRX7QIRdmVamxUiNQljcZefjKSmJEVimlKgoGbszGeB5m6NX0sH1xym0pgUixKxhqR4DXm4u3tg6xrVRqk5naICsbFmh/s400/Example-5.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<blockquote class="tr_bq">
<b style="color: #e69138;">Reports in Robot-RIDE</b></blockquote>
This is a sample report in Robot-RIDE<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrDedhm0sKuWZEJGaSUgEJ_M67zDFUMGx_Ar9t1viOYyXWe4SacUf3PQY542Q2vZH6w30u8adVJebOulGSawwYcmTadVg9nk2QiYkrrxX4z7IcWu8VJ2chLzk-7G_WB-mpf8XREen8HavI/s1600/Example-6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="297" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrDedhm0sKuWZEJGaSUgEJ_M67zDFUMGx_Ar9t1viOYyXWe4SacUf3PQY542Q2vZH6w30u8adVJebOulGSawwYcmTadVg9nk2QiYkrrxX4z7IcWu8VJ2chLzk-7G_WB-mpf8XREen8HavI/s400/Example-6.jpg" width="400" /></a></div>
<br />
<br />
We can also write our own libraries in Robot using either Java or Python. We will look into it in later posts.<br />
<br />
~Yagnanarayana Dande</div>
Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-64226575391367861392012-01-12T21:41:00.000-08:002012-01-12T21:45:28.902-08:00Running Hadoop Pig Scripts with MapR Demo VM<div dir="ltr" style="text-align: left;" trbidi="on"><br />
<span style="color: #073763; font-size: large;">What is Hadoop Pig?</span><br />
<br />
Apache Pig is a platform for analyzing large data sets. Pig's language, Pig Latin, lets you specify a sequence of data transformations such as merging data sets, filtering them, and applying functions to records or groups of records. Pig comes with many built-in functions but you can also create your own user-defined functions to do special-purpose processing.<br />
<br />
Pig Latin programs run in a distributed fashion on a cluster (programs are complied into Map/Reduce jobs and executed using Hadoop). For quick prototyping, Pig Latin programs can also run in "local mode" without a cluster (all processing takes place in a single local JVM).<br />
<br />
<span style="color: #073763; font-size: large;">How to install?</span><br />
<br />
Download VMWare Player at<br />
<a href="http://downloads.vmware.com/d/info/desktop_downloads/vmware_player/3_0">http://downloads.vmware.com/d/info/desktop_downloads/vmware_player/3_0</a><br />
Download MapR Demo VM at<br />
<a href="http://package.mapr.com/releases/v1.2.0/vmdemo/MapR-VM-1.2.0.12140GA-1-m3.tar.bzip2">http://package.mapr.com/releases/v1.2.0/vmdemo/MapR-VM-1.2.0.12140GA-1-m3.tar.bzip2</a><br />
<br />
1. Extract this using<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>bunzip2 MapR-VM-1.2.0.12140GA-1-m3.tar.bzip2 (This shows some errors but you can ignore them)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>tar -xvf MapR-VM-1.2.0.12140GA-1-m3.tar (if output file is not .tar and is tar,out still its okay)<br />
2. After untartting this transfer it to Windows machine<br />
3. Install VMWare Player and start the Demo VM<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU7EONwiwEIG3TdY5VWyLHNsQH4n5MXHytPFsYXsFKmg9ocauRDH04i9hjJVaOuMwxHBzEWzJGI5VbMfWkdsdFpubvyPt1wK0ccflKdXshQwpWSBMFHXWuW_kEg3LNDHh25NVNO5Srz0SF/s1600/MapR+Demo+VM.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU7EONwiwEIG3TdY5VWyLHNsQH4n5MXHytPFsYXsFKmg9ocauRDH04i9hjJVaOuMwxHBzEWzJGI5VbMfWkdsdFpubvyPt1wK0ccflKdXshQwpWSBMFHXWuW_kEg3LNDHh25NVNO5Srz0SF/s320/MapR+Demo+VM.jpg" width="320" /></a></div><br />
<span style="color: #073763; font-size: large;">How to Run it?</span><br />
<br />
local mode<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrsuE5mZ80NgnaGmMItLrG80tqPgYCOO7YdaWJV-EYFcT1EX65vkrbkU5Y_oqh8KI_hplWAV23kAiqW6o_9Rhb_eaoio4r_uNLDI5E4fTHRr3Kml5FbHq5w7KuVidMh-A9VXWGLh5IZlEu/s1600/Pig+Local.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrsuE5mZ80NgnaGmMItLrG80tqPgYCOO7YdaWJV-EYFcT1EX65vkrbkU5Y_oqh8KI_hplWAV23kAiqW6o_9Rhb_eaoio4r_uNLDI5E4fTHRr3Kml5FbHq5w7KuVidMh-A9VXWGLh5IZlEu/s1600/Pig+Local.jpg" /></a></div><br />
mapreduce mode<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD6WKyBUidshDW7_NdJRdH3RbleVXFxELyY23ldXAqZyWEQm9yKROEiy-MSs2cneBWE1aBhiFU6GsS6rRpGeNJTT2vwwx86yQrY1iIk0bcBPLAVUfyFrArM902bwmgIIdtsqb8pRSLq0HK/s1600/Pig+MapReduce.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD6WKyBUidshDW7_NdJRdH3RbleVXFxELyY23ldXAqZyWEQm9yKROEiy-MSs2cneBWE1aBhiFU6GsS6rRpGeNJTT2vwwx86yQrY1iIk0bcBPLAVUfyFrArM902bwmgIIdtsqb8pRSLq0HK/s400/Pig+MapReduce.jpg" width="400" /></a></div><br />
<span style="color: #073763; font-size: large;">Problem to Solve</span><br />
<br />
Marks of Students in Unit Test1 in Subjects Telugu, Hindi, English, Maths, Science and Social respectively. Now Class Teacher wants to Find all the students who are Failed?<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhpVNfM3yiUEsf0J7U4zX1p-RQkMgF86nzfcTnPusmxxV7wE-4ohuOS7bWy2V87Kh4-zVzSS9gsehjWchV2QLspCvFDx58hNqqgY1rZqkZm46YsCiH2kZE-v2LiUCjTHhOlOSUJNlDhGLI/s1600/Pig+Problem.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhpVNfM3yiUEsf0J7U4zX1p-RQkMgF86nzfcTnPusmxxV7wE-4ohuOS7bWy2V87Kh4-zVzSS9gsehjWchV2QLspCvFDx58hNqqgY1rZqkZm46YsCiH2kZE-v2LiUCjTHhOlOSUJNlDhGLI/s1600/Pig+Problem.jpg" /></a></div><br />
<br />
<span style="color: #0c343d; font-size: large;">Pig Script to solve this</span><br />
<br />
<span style="font-family: 'Courier New', Courier, monospace;">A = load 'Unit1' using PigStorage('\t') as (Name:chararray,Telugu:int,Hindi:int,English:int,Maths:int,Science:int,Social:int);</span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRIJmOWwoAEJiwED09LTMZjHIKqX9bH9b-0cKCvnTo-2mA7W6tPuJ-cQu4y59VaZi6eXohiahAEU8YWI7JEuEVnIHuSTjVXC1wSR0sx1CSSP9K03PjoibIhm0EnxfvMPnjylNc5no5y0dm/s1600/Pig+Statement+A.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRIJmOWwoAEJiwED09LTMZjHIKqX9bH9b-0cKCvnTo-2mA7W6tPuJ-cQu4y59VaZi6eXohiahAEU8YWI7JEuEVnIHuSTjVXC1wSR0sx1CSSP9K03PjoibIhm0EnxfvMPnjylNc5no5y0dm/s1600/Pig+Statement+A.jpg" /></a></div><br />
<span style="font-family: 'Courier New', Courier, monospace;">B = filter A by Telugu < 35 OR Hindi < 35 OR English < 35 OR Maths < 35 OR Science < 35 OR Social < 35;</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR5V_Z0phRrBBcEq3pcbmqyMaCAWWZdN28eP_DwMJ9AO-GiznFS2LL4p3IcbuP0hgZWUBfJ4So0GYFz1RsgQSTzn2MjDWABiLDlSWjKIfdvfFtvhUMHnz2F4QSbKB3VzbVc6DZFHLYyPC5/s1600/Pig+Statement+B.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR5V_Z0phRrBBcEq3pcbmqyMaCAWWZdN28eP_DwMJ9AO-GiznFS2LL4p3IcbuP0hgZWUBfJ4So0GYFz1RsgQSTzn2MjDWABiLDlSWjKIfdvfFtvhUMHnz2F4QSbKB3VzbVc6DZFHLYyPC5/s1600/Pig+Statement+B.jpg" /></a></div><br />
<span style="font-family: 'Courier New', Courier, monospace;">DUMP B;</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7qJlyewcRsIWlQIiMZJH8dvPok6FdMRiXgCkfepzqHXUFJSiBmRV51oj4V4shc4dQxSnKctFcugImt27JOseXky2ux135vqM4CY3tJ3ACD0nDOxoZqm504xxu4S0IKymAJebU5VicUeMn/s1600/Pig+Statement+Dump.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7qJlyewcRsIWlQIiMZJH8dvPok6FdMRiXgCkfepzqHXUFJSiBmRV51oj4V4shc4dQxSnKctFcugImt27JOseXky2ux135vqM4CY3tJ3ACD0nDOxoZqm504xxu4S0IKymAJebU5VicUeMn/s1600/Pig+Statement+Dump.jpg" /></a></div><br />
Here is the Output of the Pig Script<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJb9HAXTNl-_OLS_TvOVdy6rNMk3tRcigBMrKrOS6OMcMM2JpyihEu876j2ZEYR44Kl_5bq0CTXLX6hWtavFR6hdFh23RIqdYxpPM8uGAFi8SXiXu67zKau3eFwP5mXB3u4dnpESjICJeM/s1600/Pig+Statement+OutPut.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJb9HAXTNl-_OLS_TvOVdy6rNMk3tRcigBMrKrOS6OMcMM2JpyihEu876j2ZEYR44Kl_5bq0CTXLX6hWtavFR6hdFh23RIqdYxpPM8uGAFi8SXiXu67zKau3eFwP5mXB3u4dnpESjICJeM/s1600/Pig+Statement+OutPut.jpg" /></a></div><br />
</div>Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-19766046869479268382011-12-05T22:44:00.000-08:002011-12-05T22:48:18.510-08:00TestNG - Run your first test using ant<div dir="ltr" style="text-align: left;" trbidi="on"><div class="MsoPlainText" style="font-family: inherit;">Let us write our First Test in TestNG and run as an ant task <br />
<br />
Create Directory Tree Structure as follows<br />
<br />
testng(Base Directory) <br />
|<br />
+-------+-------------------------+---------------+------------+<br />
| | | | |<br />
src lib build.xml build test-output/index.html <br />
| | | |<br />
com testng-6.3.1.jar com +-------+-----+---<br />
| | index.html<br />
qa qa<br />
| |<br />
OurFirstTestNGTest.java OurFirstTestNGTest.class<br />
<br />
Where as <br />
<br />
OurFirstTestNGTest.java contains<br />
=============================<br />
<div style="font-family: "Courier New",Courier,monospace;">package com.qa;</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;">import org.testng.annotations.*;</div><div style="font-family: "Courier New",Courier,monospace;">import org.testng.*;</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;">public class OurFirstTestNGTest {</div><div style="font-family: "Courier New",Courier,monospace;"> int testInt;</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;"> @BeforeMethod</div><div style="font-family: "Courier New",Courier,monospace;"> public void setUp() {</div><div style="font-family: "Courier New",Courier,monospace;"> testInt = 0;</div><div style="font-family: "Courier New",Courier,monospace;"> }</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;"> @Test</div><div style="font-family: "Courier New",Courier,monospace;"> public void addTest() {</div><div style="font-family: "Courier New",Courier,monospace;"> testInt++;</div><div style="font-family: "Courier New",Courier,monospace;"> Assert.assertEquals(testInt,1);</div><div style="font-family: "Courier New",Courier,monospace;"> System.out.println("Addition Test");</div><div style="font-family: "Courier New",Courier,monospace;"> }</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;"> @Test</div><div style="font-family: "Courier New",Courier,monospace;"> public void subtractTest() {</div><div style="font-family: "Courier New",Courier,monospace;"> testInt--;</div><div style="font-family: "Courier New",Courier,monospace;"> Assert.assertEquals(testInt,-1);</div><div style="font-family: "Courier New",Courier,monospace;"> System.out.println("Subtract Test");</div><div style="font-family: "Courier New",Courier,monospace;"> }</div><div style="font-family: "Courier New",Courier,monospace;">}</div>=============================<br />
<br />
build.xml contains<br />
=============================<br />
<div style="font-family: "Courier New",Courier,monospace;"><project default="test"></div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;"> <path id="cp"></div><div style="font-family: "Courier New",Courier,monospace;"> <pathelement location="lib/testng-6.3.1.jar"/></div><div style="font-family: "Courier New",Courier,monospace;"> <pathelement location="build"/></div><div style="font-family: "Courier New",Courier,monospace;"> </path></div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;"> <taskdef name="testng" classpathref="cp"</div><div style="font-family: "Courier New",Courier,monospace;"> classname="org.testng.TestNGAntTask" /></div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;"> <target name="test"></div><div style="font-family: "Courier New",Courier,monospace;"> <testng classpathref="cp"></div><div style="font-family: "Courier New",Courier,monospace;"> <classfileset dir="build" includes="**/*.class"/></div><div style="font-family: "Courier New",Courier,monospace;"> </testng></div><div style="font-family: "Courier New",Courier,monospace;"> </target></div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;"></project></div>=============================<br />
<br />
<br />
Now to Compile a java class, use<br />
#<span style="font-family: "Courier New",Courier,monospace;">javac -classpath .:../lib/testng-6.3.1.jar -d ../build com/qa/OurFirstTestNGTest.java </span></div><br />
To run using ant<br />
#<span style="font-family: "Courier New",Courier,monospace;">ant test</span></div>Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-91918554733722164442011-12-05T22:25:00.000-08:002011-12-05T22:47:14.170-08:00TestNG - Run your First Test<div dir="ltr" style="text-align: left;" trbidi="on"><div class="MsoPlainText" style="font-family: inherit;"><span style="font-family: inherit;">From TestNG official site, </span><br />
<span style="font-family: inherit;"></span><br />
<blockquote class="tr_bq"><span style="font-family: inherit;">"</span>TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use".</blockquote><br />
It was voted for over JUnit because of better reporting and executing capabilities from Testing team's perspective. <br />
<br />
From deployment point of view, TestNG is just a jar file which can be copied onto a local machine and can be used by putting it in classpath. TestNG can be downloaded @ http://testng.org/doc/download.html<br />
<br />
Let us write our First Test in TestNG. <br />
<br />
Create Directory Tree Structure as follows<br />
<br />
testng(Base Directory) <br />
|<br />
+-------+-----+------------------------------+---------+<br />
| | | | |<br />
src lib testng.xml build test-output/index.html <br />
| | | |<br />
com testng-6.3.1.jar com +---------+-------+---<br />
| | index.html<br />
qa qa<br />
| |<br />
OurFirstTestNGTest.java OurFirstTestNGTest.class<br />
<br />
Where as <br />
<br />
OurFirstTestNGTest.java contains<br />
=============================<br />
<div style="font-family: "Courier New",Courier,monospace;">package com.qa;</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;">import org.testng.annotations.*;</div><div style="font-family: "Courier New",Courier,monospace;">import org.testng.*;</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;">public class OurFirstTestNGTest {</div><div style="font-family: "Courier New",Courier,monospace;"> int testInt;</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;"> @BeforeMethod</div><div style="font-family: "Courier New",Courier,monospace;"> public void setUp() {</div><div style="font-family: "Courier New",Courier,monospace;"> testInt = 0;</div><div style="font-family: "Courier New",Courier,monospace;"> }</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;"> @Test</div><div style="font-family: "Courier New",Courier,monospace;"> public void addTest() {</div><div style="font-family: "Courier New",Courier,monospace;"> testInt++;</div><div style="font-family: "Courier New",Courier,monospace;"> Assert.assertEquals(testInt,1);</div><div style="font-family: "Courier New",Courier,monospace;"> System.out.println("Addition Test");</div><div style="font-family: "Courier New",Courier,monospace;"> }</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;"> @Test</div><div style="font-family: "Courier New",Courier,monospace;"> public void subtractTest() {</div><div style="font-family: "Courier New",Courier,monospace;"> testInt--;</div><div style="font-family: "Courier New",Courier,monospace;"> Assert.assertEquals(testInt,-1);</div><div style="font-family: "Courier New",Courier,monospace;"> System.out.println("Subtract Test");</div><div style="font-family: "Courier New",Courier,monospace;"> }</div><div style="font-family: "Courier New",Courier,monospace;">}</div>=============================<br />
<br />
<br />
testng.xml contains<br />
============================<br />
<div style="font-family: "Courier New",Courier,monospace;"><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" ></div><div style="font-family: "Courier New",Courier,monospace;"><suite name="test"></div><div style="font-family: "Courier New",Courier,monospace;"> <test name="test"></div><div style="font-family: "Courier New",Courier,monospace;"> <classes></div><div style="font-family: "Courier New",Courier,monospace;"> <class dir="build" name="com.qa.OurFirstTestNGTest" /></div><div style="font-family: "Courier New",Courier,monospace;"> </classes></div><div style="font-family: "Courier New",Courier,monospace;"> </test></div><div style="font-family: "Courier New",Courier,monospace;"></suite></div>============================<br />
<br />
Now to Compile a java class, use<br />
#<span style="font-family: "Courier New",Courier,monospace;">javac -classpath .:../lib/testng-6.3.1.jar -d ../build com/qa/OurFirstTestNGTest.java </span><br />
<br />
and to run the tests, use<br />
#<span style="font-family: "Courier New",Courier,monospace;">java -classpath .:build:./lib/testng-6.3.1.jar org.testng.TestNG testng.xml</span></div></div>Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-59643886147939708572011-02-27T22:47:00.000-08:002011-02-28T23:34:46.382-08:00Pseudo-randomness - An essential ingredient of Software Test Automation<div dir="ltr" style="text-align: left;" trbidi="on">Many of us may be reluctant to consider random testing as a testing technique. But study in <span style="color: blue;">[1] </span>indicates that random testing is more cost effective for many softwares.<br />
<br />
This form of testing is useful when the time needed to implement and execute test case sequence is too long or the complexity of the problem makes it impossible to test every combination. Most of the times certain amount of Random Testing is mandatory before release which will be specified in the Release criteria.<br />
<br />
Random testing is also known as Gorilla testing . In it we don't test the application sequentially, we just take the modules/fields randomly & perform testing whether it's functioning properly.<br />
<br />
<br />
In this method test case/ test data is selected randomly. Even the slightest bugs can be discovered with minimal cost. It can also compete with other test techniques in terms of coverage. A hybrid approach by combing random testing with other testing techniques may yield good results. <br />
<br />
Random Testing can imply any of the following<br />
<ol style="text-align: left;"><li>Input Data generation<br />
Example: You need to test new functionality of your application. For testing you randomly generate data for all existing and new fields in the application under test. </li>
<li>Selection of Test Cases <br />
Example: You need to test new functionality of your application. For testing you randomly select test cases for the application under test. </li>
</ol><blockquote style="color: #e06666;">But the biggest problem with Random Testing is the Randomness it self. "How to reproduce the bug?" is the biggest question as the steps taken are truly Random.</blockquote> This is the place where pseudo-randomness came to rescue. <br />
<br />
According to Wikipedia: A pseudorandom process is a process that appears to be random but it is not. Pseudorandom sequences typically exhibit statistical randomness while being generated by an entirely deterministic causal process. Such a process is easier to produce than a genuine random one, and has the benefit that it can be used again and again to produce exactly the same numbers, useful for testing and fixing software.<br />
<br />
<span style="font-size: large;">Let us write a small program and see how does pseudo-randomness work</span><br />
<br />
In the below program we will try to generate a set of 50 random numbers which are in between 0 and 100.<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">import java.util.Random;</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;">public class PseudoRandom{</div><div style="font-family: "Courier New",Courier,monospace;"> public static void main(String[] args)<br />
throws NumberFormatException{</div><div style="font-family: "Courier New",Courier,monospace;"> if(args.length>0){</div><div style="font-family: "Courier New",Courier,monospace;"> Long seed = Long.parseLong(args[0]);</div><div style="font-family: "Courier New",Courier,monospace;"> Random pseudo = new Random( seed );</div><div style="font-family: "Courier New",Courier,monospace;"> for ( int i=0; i<50; i++ )</div><div style="font-family: "Courier New",Courier,monospace;"> {</div><div style="font-family: "Courier New",Courier,monospace;"> // This will generate random number<br />
// in between 0 and 100</div><div style="font-family: "Courier New",Courier,monospace;"> int number = pseudo.nextInt( 101 );</div><div style="font-family: "Courier New",Courier,monospace;"> System.out.print( number+"," );</div><div style="font-family: "Courier New",Courier,monospace;"> }</div><div style="font-family: "Courier New",Courier,monospace;"> System.out.println("Done...");</div><div style="font-family: "Courier New",Courier,monospace;"> }else{</div><div style="font-family: "Courier New",Courier,monospace;"> System.out.println("Usage: \t PseudoRandom seed");</div><div style="font-family: "Courier New",Courier,monospace;"> System.out.println("\t Where seed is any number which<br />
can be used \n\t again and again to produce<br />
exactly the same numbers");</div><div style="font-family: "Courier New",Courier,monospace;"> System.out.println("");</div><div style="font-family: "Courier New",Courier,monospace;"> System.out.println("Example: PseudoRandom 284");</div><div style="font-family: "Courier New",Courier,monospace;"> }</div><div style="font-family: "Courier New",Courier,monospace;"> }</div><div style="font-family: "Courier New",Courier,monospace;">}</div><br />
<span style="color: #0b5394; font-size: large;">Usage of this program</span><br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">java PseudoRandom </div><div style="font-family: "Courier New",Courier,monospace;">Usage: PseudoRandom seed</div><div style="font-family: "Courier New",Courier,monospace;"> Where seed is any number which can be used </div><div style="font-family: "Courier New",Courier,monospace;"> again and again to produce exactly the same numbers</div><br />
<div style="font-family: "Courier New",Courier,monospace;">Example: PseudoRandom 284</div><br />
<br />
<span style="color: #0b5394; font-size: large;">Run the Program</span><br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">qa-by-passion:/qa# java PseudoRandom 284</div><div style="font-family: "Courier New",Courier,monospace;">2,28,50,35,1,75,6,29,49,15,44,21,62,42,26,69,2,17,34,6,98,67,15,58,69,22,90,45,16,70,64,3,72,4,41,63,62,46,37,91,35,99,4,95,67,72,100,85,68,46,Done...</div><div style="font-family: "Courier New",Courier,monospace;">qa-by-passion:/qa# java PseudoRandom 284</div><div style="font-family: "Courier New",Courier,monospace;">2,28,50,35,1,75,6,29,49,15,44,21,62,42,26,69,2,17,34,6,98,67,15,58,69,22,90,45,16,70,64,3,72,4,41,63,62,46,37,91,35,99,4,95,67,72,100,85,68,46,Done...</div><div style="font-family: "Courier New",Courier,monospace;">qa-by-passion:/qa# java PseudoRandom 284</div><div style="font-family: "Courier New",Courier,monospace;">2,28,50,35,1,75,6,29,49,15,44,21,62,42,26,69,2,17,34,6,98,67,15,58,69,22,90,45,16,70,64,3,72,4,41,63,62,46,37,91,35,99,4,95,67,72,100,85,68,46,Done...</div><div style="font-family: "Courier New",Courier,monospace;">qa-by-passion:/qa# java PseudoRandom 316</div><div style="font-family: "Courier New",Courier,monospace;">70,79,19,5,31,73,87,83,35,71,21,64,77,100,50,99,90,28,52,83,96,32,93,32,5,48,93,52,25,73,27,100,28,3,54,35,21,52,73,78,69,0,32,74,72,35,86,30,80,55,Done...</div><div style="font-family: "Courier New",Courier,monospace;">qa-by-passion:/qa# java PseudoRandom 675</div><div style="font-family: "Courier New",Courier,monospace;">19,33,4,82,93,94,31,49,2,31,4,84,11,0,97,36,25,87,75,28,3,71,96,84,3,17,50,34,86,18,29,59,15,99,78,98,4,99,88,59,23,1,49,77,74,14,55,9,75,27,Done...</div><div style="font-family: "Courier New",Courier,monospace;">qa-by-passion:/qa# java PseudoRandom 284</div><div style="font-family: "Courier New",Courier,monospace;">2,28,50,35,1,75,6,29,49,15,44,21,62,42,26,69,2,17,34,6,98,67,15,58,69,22,90,45,16,70,64,3,72,4,41,63,62,46,37,91,35,99,4,95,67,72,100,85,68,46,Done...</div><br />
<span style="color: #0b5394; font-size: large;">Analysis</span><br />
<br />
If we observe the results of the above run we can see when ever the seed is the same the set of numbers are same. This is a way to create pseudo randomness where numbers are generated randomly but can repeat the same results whenever required by providing same seed.<br />
<span style="font-size: large;"><br />
</span><br />
<span style="font-size: large;"><span style="color: #0b5394;">How to use?</span></span><br />
<br />
This behavior will be very useful for situations where reproducing the same scenarios is required. <br />
<br />
For this purpose we can use following logic.<br />
<br />
Put all the test cases in an Array List<String> <br />
Create a set of Random numbers which are in between 0 and Size of Array List. Now get the elements with that index and execute tests (in TestNG) as follows <br />
<br />
ant -Dtestcase=ArrayList[RandNumber]<br />
<br />
For generating every set use a seed as discussed earlier and if you hit a bug with some set of tests then you can re-execute same set of tests in same order by just providing the same seed.<br />
<br />
I hope this explains the importance of Pseudo-randomness<br />
<br />
References:<br />
------------------<br />
[1] Joe W. Duran, Simeon C. Ntafos, "An Evaluation of Random Testing", IEEE Transactions on Software Engineering, Vol. SE-10, No. 4, July 1984, pp438-443.</div>Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com0tag:blogger.com,1999:blog-5008407120359549210.post-31512854809464401832010-12-11T18:24:00.000-08:002011-01-25T04:18:14.296-08:00Lookbusy - A simple application for generating synthetic load on a Linux system<div dir="ltr" style="text-align: left;" trbidi="on">During stress tests it is required to make computational resources like memory, disk space and cpu busy. For this one can do cpu intense operations or memory intense operations or disk intensive operations.<br />
<br />
<blockquote>In software testing, a system stress test refers to tests that put a greater emphasis on robustness, availability, and error handling under a heavy load, rather than on what would be considered correct behavior under normal circumstances. In particular, the goals of such tests may be to ensure the software does not crash in conditions of insufficient computational resources (such as memory or disk space), unusually high concurrency, or denial of service attacks. - Wikipedia</blockquote><br />
One can design different tools for this purpose. While browsing last week in my free time I came across this tool on net which is designed exactly for this purpose. It is working perfectly and very easy to use. Thanks to Devin Carraway <lookbusy@devin.com> for providing such a great tool. <br />
<a href="http://www.devin.com/lookbusy" target="_blank"></a> <br />
<br />
<span style="color: black;"><span style="color: orange; font-size: large;"></span></span><span style="font-size: large;"><b><span style="color: #b45f06;">Setup</span></b></span><br />
<br />
<ol><li>Download Tool which is available at: <a href="http://www.devin.com/lookbusy" target="_blank">http://www.devin.com/lookbusy/download/lookbusy-1.3.tar.gz</a></li>
<li>Extract the tar ball in some directory</li>
<li> cd into the extracted directory</li>
<li>Issue ./configure </li>
<li>Issue make</li>
<li>Issue 'make install'</li>
<li>You are done with the installation and ready to use</li>
</ol><div style="color: #b45f06;"><span style="font-size: large;"><b>Usage</b></span></div><br />
yagna@yagna-desktop:~/Desktop/lookbusy-1.3$ ./lookbusy --help<br />
<br />
usage: lookbusy [ -h ] [ options ]<br />
General options:<br />
-h, --help Commandline help (you're reading it)<br />
-v, --verbose Verbose output (may be repeated)<br />
-q, --quiet Be quiet, produce output on errors only<br />
<br />
CPU usage options:<br />
-c, --cpu-util=PCT, Desired utilization of each CPU, in percent (default<br />
--cpu-util=RANGE 50%). If 'curve' CPU usage mode is chosen, a range<br />
of the form MIN-MAX should be given.<br />
-n, --ncpus=NUM Number of CPUs to keep busy (default: autodetected)<br />
-r, --cpu-mode=MODE Utilization mode ('fixed' or 'curve', see lookbusy(1))<br />
-p, --cpu-curve-peak=TIME<br />
Offset of peak utilization within curve period, in<br />
seconds (append 'm', 'h', 'd' for other units)<br />
-P, --cpu-curve-period=TIME<br />
Duration of utilization curve period, in seconds (append<br />
'm', 'h', 'd' for other units)<br />
<br />
Memory usage options:<br />
-m, --mem-util=SIZE Amount of memory to use (in bytes, followed by KB, MB,<br />
<br />
or GB for other units; see lookbusy(1))<br />
<br />
-M, --mem-sleep=TIME Time to sleep between iterations, in usec (default 1000)<br />
<br />
Disk usage options:<br />
-d, --disk-util=SIZE Size of files to use for disk churn (in bytes,<br />
followed by KB, MB, GB or TB for other units)<br />
-b, --disk-block-size=SIZE<br />
Size of blocks to use for I/O (in bytes, followed<br />
by KB, MB or GB)<br />
-D, --disk-sleep=TIME<br />
Time to sleep between iterations, in msec (default 100)<br />
-f, --disk-path=PATH Path to a file/directory to use as a buffer (default<br />
/tmp); specify multiple times for additional paths<br />
<br />
<div style="color: #b45f06;"><b><span style="font-size: large;">Increase Memory Utilization by 1GB</span></b></div><br />
lookbusy -m 1GB<br />
<br />
You can verify by using either top or dstat(dstat -m).<br />
<div style="color: #b45f06;"><br />
</div><div style="color: #b45f06;"><b><span style="font-size: large;">Increase CPU Utilization to 70% </span></b></div><br />
lookbusy -c 70<br />
<br />
You can verify by using either top or dstat(dstat -cp)</div>Yagnanarayana Dandehttp://www.blogger.com/profile/12306673306199127440noreply@blogger.com1