<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Latest Telerik Test Studio Blog Posts</title>
    <description>Newest features, how-to posts, in-house videos, special promos and more.</description>
    <link>http://www.telerik.com/automated-testing-tools/blog.aspx</link>
    <docs>http://backend.userland.com/rss</docs>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TestStudio" /><feedburner:info uri="teststudio" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>TestStudio</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
      <title>Functional Testing with the Telerik Testing Framework</title>
      <description>&lt;p&gt;[NOTE: This is a guest post from Telerik’s own Phil Japikse, one of Telerik’s Senior Developer Evangelists."]  &lt;h1&gt;Background&lt;/h1&gt; &lt;p&gt;User Interface testing isn’t just for quality engineers.&amp;nbsp; It’s vital for developers to own part of this process as well.&amp;nbsp; The days of development silos are long gone (or at least should be!)&amp;nbsp; The process of throwing bits “down the line” is fraught with inefficiencies.&amp;nbsp; &lt;p&gt;Developers are already adopting unit testing in record numbers, and this has led to a phenomenal increase in code quality. Why should it stop there?&amp;nbsp; Developers need to also take ownership of the user interface code just like the line of business code that they develop.  &lt;p&gt;Is this to say that we don’t need quality engineers?&amp;nbsp; Absolutely not!&amp;nbsp; What I &lt;b&gt;am&lt;/b&gt; saying is that developers should ensure that the basic elements of the user interface are correct, and the process for testing these basic elements need to be automated just like standard unit tests are automated.  &lt;h1&gt;Enter the Telerik Testing Framework&lt;/h1&gt; &lt;p&gt;Telerik’s Test Studio has an extremely powerful record/replay capability. Did you know that Test Studio’s underlying Testing Framework also provides the ability for developers to write UI tests with most of the common unit testing frameworks?&amp;nbsp; In this post, I am going to show you the basics of writing functional tests with MbUnit and Gallio, leveraging the power of the Telerik Testing Framework.  &lt;h1&gt;The System Under Test&lt;/h1&gt; &lt;p&gt;For this example, I am going to use a standard ASP.NET MVC application.&amp;nbsp; The test is simple:  &lt;ul&gt; &lt;li&gt;Click on the Log On link  &lt;li&gt;Assert that the page changes to /Account/Logon  &lt;li&gt;Find the User name text box, and enter the text “admin”  &lt;li&gt;Find the Password password box, and enter the text “foo”  &lt;li&gt;Find the Log On button, and click it  &lt;li&gt;Verify that the resulting page contains the text “The user name or password provided is incorrect”&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;The Home Page&lt;/h2&gt; &lt;p&gt;&lt;a href="http://www.telerik.com/automated-testing-tools/libraries/metabloglib/windows-live-writer-29264f2015d3_b465-clip_image001_2.sflb"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://www.telerik.com/automated-testing-tools/libraries/metabloglib/windows-live-writer-29264f2015d3_b465-clip_image001_thumb.sflb" width="244" height="118"&gt;&lt;/a&gt;  &lt;h2&gt;The Logon Page&lt;/h2&gt; &lt;p&gt;&lt;a href="http://www.telerik.com/automated-testing-tools/libraries/metabloglib/windows-live-writer-29264f2015d3_b465-clip_image002_2.sflb"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.telerik.com/automated-testing-tools/libraries/metabloglib/windows-live-writer-29264f2015d3_b465-clip_image002_thumb.sflb" width="244" height="228"&gt;&lt;/a&gt;  &lt;h2&gt;The Results&lt;/h2&gt; &lt;p&gt;&lt;a href="http://www.telerik.com/automated-testing-tools/libraries/metabloglib/windows-live-writer-29264f2015d3_b465-clip_image003_2.sflb"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://www.telerik.com/automated-testing-tools/libraries/metabloglib/windows-live-writer-29264f2015d3_b465-clip_image003_thumb.sflb" width="236" height="244"&gt;&lt;/a&gt;  &lt;h1&gt;Setting the Stage&lt;/h1&gt; &lt;p&gt;There is a little bit of housework that needs to be done before this test can be developed.&amp;nbsp; This isn’t much different than what you need to do to create a test project for standard unit tests, there are just a few more steps.&amp;nbsp; You need to create a unit test project, select a unit test framework, add the Telerik Testing Framework references, and finally create a class that derives from the BaseTest abstract class provided by the Telerik Testing Framework.  &lt;h2&gt;Selecting a Unit Test Framework&lt;/h2&gt; &lt;p&gt;The Telerik Testing Framework works with any .NET unit testing frameworks.&amp;nbsp; I typically use MBUnit/Gallio in conjunction with the Telerik Testing Framework to leverage the Gallio report writer, which I will demonstrate in a future post.  &lt;h2&gt;Adding the Telerik Testing Framework References&lt;/h2&gt; &lt;p&gt;There are two references that need to added to the test project.&amp;nbsp; Right click on the test project, select “Add Reference…”, click “Browse…”, then navigate to “C:\Program Files (x86)\Telerik\Test Studio\Bin\” and select:  &lt;p&gt;· Telerik.TestingFramework.Interop.dll  &lt;p&gt;· ArtOfTest.WebAii.dll  &lt;h2&gt;Deriving from the Test Studio BaseTest Class&lt;/h2&gt; &lt;p&gt;Listing 1 shows the default implementation that is needed to use the Telerik Testing Framework in unit tests.&amp;nbsp; To write tests leveraging the Telerik Testing Framework, this is the minimum code that needs to be implemented in the base class that TestFixtures will inherit.  &lt;div id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; WebAiiUITestsBase : BaseTest&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;/// Initialization for each test.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    [SetUp]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; MyTestInitialize()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// Initializes WebAii manager to be used by the test case.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// If a WebAii configuration section exists, settings will be&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// loaded from it. Otherwise, will create a default settings&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// object with system defaults.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// Pass in 'true' to recycle the browser between test methods&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        Initialize(&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// If you need to override any other settings coming from the&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// config section or you don't have a config section, you can&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// comment the 'Initialize' line above and instead use the&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// following:&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;/*&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;        // This will get a new Settings object. If a configuration&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;        // section exists, then settings from that section will be&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;        // loaded&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;        Settings settings = GetSettings();&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;        // Override the settings you want. For example:&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;        settings.DefaultBrowser = BrowserType.FireFox;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;        // Now call Initialize again with your updated settings object&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;        Initialize(settings);&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;        */&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// Place any additional initialization here&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;/// Clean up after each test.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    [TearDown]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; MyTestCleanUp()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// Place any additional cleanup here&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// Shuts down WebAii manager and closes all browsers currently running&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// after each test. This call is ignored if recycleBrowser is set&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.CleanUp();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;/// Called after all tests in this class are executed.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    [FixtureTearDown]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; FixtureCleanup()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// This will shut down all browsers if&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// recycleBrowser is turned on. Else&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;// will do nothing.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        ShutDown();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Listing 1 – The base class for Test Fixtures 
&lt;blockquote&gt;
&lt;h2&gt;Creating your first Unit Test&lt;/h2&gt;&lt;/blockquote&gt;
&lt;p&gt;Start by creating a standard Test Fixture, with two distinctive changes: 
&lt;p&gt;· The fixtures must be set to Single Threaded (due to limitations in how browsers and the Windows User Interface work) 
&lt;p&gt;· The fixtures must derive from our base class (created above) 
&lt;p&gt;Once those two changes are completed, unit tests can be added in the standard manner, as shown in Listing 2.&amp;nbsp; &lt;p&gt;&amp;nbsp; &lt;p&gt;
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;[TestFixture, ApartmentState(ApartmentState.STA)]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; LoginUITests : WebAiiUITestsBase&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    [Test]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Should_Fail_Log_In_With_Bad_Username_Or_Password()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;Listing 2 – Modified Test Fixture and Single Unit Test 
&lt;h2&gt;Starting the Browser&lt;/h2&gt;
&lt;p&gt;The first step in testing a web application is launching a browser.&amp;nbsp; The Telerik Testing Framework supports a number of browsers (assuming they are installed on the system running the unit test), as shown in Figure 1.&amp;nbsp; &lt;p&gt;&lt;a href="http://www.telerik.com/automated-testing-tools/libraries/metabloglib/windows-live-writer-29264f2015d3_b465-clip_image004_2.sflb"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://www.telerik.com/automated-testing-tools/libraries/metabloglib/windows-live-writer-29264f2015d3_b465-clip_image004_thumb.sflb" width="244" height="92"&gt;&lt;/a&gt;&lt;br&gt;Figure 1 – The Browser choices 
&lt;h2&gt;Navigating&lt;/h2&gt;
&lt;p&gt;Once the browser is launched through the manager, the browser instance gets assigned to the ActiveBrowser property of the BaseTest class. The ActiveBrowser exposes quite a few properties and methods, and I am only going to scratch the surface in this post. 
&lt;p&gt;The first thing I need to do is to navigate to the website I am testing. In my particular scenario, the url is “http://localhost:3916/”.&amp;nbsp; Since all of my tests will start with this address, I add a property to my base class, as in Listing 3. 
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; _coreUrl = &lt;span style="color: #006080"&gt;"http://localhost:3916/"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Listing 3 – Home Page for the site under test 
&lt;p&gt;My test now looks like Listing 4, which is how each of my tests begin. 
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;[Test]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Should_Fail_Log_In_With_Bad_Username_Or_Password()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Manager.LaunchNewBrowser(BrowserType.InternetExplorer);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;ActiveBrowser.NavigateTo(_coreUrl);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Listing 4 – Creating the Browser and Navigating to the Start Page 
&lt;p&gt;You might be wondering why I don’t move those two lines into a TestSetup method.&amp;nbsp; While the full answer is too long and off topic for this post, I feel that TestSetup methods obfuscate the tests and become a problem leading to fragile tests.&amp;nbsp; &lt;h2&gt;Finding Elements on the Page&lt;/h2&gt;
&lt;p&gt;The Telerik Testing Framework supplies an extremely robust mechanism for finding elements on a page.&amp;nbsp; The methods are generic, which enables Test Studio to return strongly typed elements.&amp;nbsp; For example, the first item that I need to find is the HTML Anchor that has the inner text “Log On”. If the element is found, the Find process will return an HTMLAnchor class that exposes (among other elements) a Click() method.&amp;nbsp; The next step is to verify that the logon page is loaded, and I use the ActiveBrowser.Url&amp;nbsp; to assert that condition.&amp;nbsp; This is shown in Listing 5. 
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Find.ByContent&amp;lt;HtmlAnchor&amp;gt;(&lt;span style="color: #006080"&gt;"Log On"&lt;/span&gt;, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;FindContentType.InnerText).Click();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Assert.AreEqual(_coreUrl + &lt;span style="color: #006080"&gt;"Account/LogOn"&lt;/span&gt;, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;ActiveBrowser.Url);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Listing 5 – Clicking an HTMLAnchor and validating the result 
&lt;p&gt;The next steps are to find the text box and the password text boxes, and enter the user name and password as defined in the spec.&amp;nbsp; For these, we will FindByName instead of FindByContent, since we know the form values are named.&amp;nbsp; With the strong typing of the Find methods, we can then set the Text property for each of the controls. The last step is to submit the entered values by finding the HTMLInputSubmit button.&amp;nbsp; This code is shown in Listing 6. 
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Find.ByName&amp;lt;HtmlInputText&amp;gt;(&lt;span style="color: #006080"&gt;"Username"&lt;/span&gt;).Text = &lt;span style="color: #006080"&gt;"admin"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Find.ByName&amp;lt;HtmlInputPassword&amp;gt;(&lt;span style="color: #006080"&gt;"Password"&lt;/span&gt;).Text = &lt;span style="color: #006080"&gt;"foo"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Find.ByAttributes&amp;lt;HtmlInputSubmit&amp;gt;(&lt;span style="color: #006080"&gt;"Value=Log On"&lt;/span&gt;).Click();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Listing 7 – Entering and submitting values 
&lt;h2&gt;Validating the Result&lt;/h2&gt;
&lt;p&gt;The final step in our spec is to verify that the web page shows the correct error message, and we again call on the ActiveBrowser object to validate that the page contains the text that we are looking for, as shown in Listing 7. 
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Assert.IsTrue(ActiveBrowser.ContainsText(&lt;span style="color: #006080"&gt;"The user name or password provided is incorrect"&lt;/span&gt;));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Listing 7 – Asserting the Text in the webpage 
&lt;p&gt;The completed test is shown in Listing 8 
&lt;div id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;[Test]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Should_Fail_Log_In_With_Bad_Username_Or_Password()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Manager.LaunchNewBrowser(BrowserType.InternetExplorer);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;ActiveBrowser.NavigateTo(_coreUrl);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Find.ByContent&amp;lt;HtmlAnchor&amp;gt;(&lt;span style="color: #006080"&gt;"Log On"&lt;/span&gt;, FindContentType.InnerText).Click();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Assert.AreEqual(_coreUrl + &lt;span style="color: #006080"&gt;"Account/LogOn"&lt;/span&gt;, ActiveBrowser.Url);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Find.ByName&amp;lt;HtmlInputText&amp;gt;(&lt;span style="color: #006080"&gt;"Username"&lt;/span&gt;).Text = &lt;span style="color: #006080"&gt;"admin"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Find.ByName&amp;lt;HtmlInputPassword&amp;gt;(&lt;span style="color: #006080"&gt;"Password"&lt;/span&gt;).Text = &lt;span style="color: #006080"&gt;"foo"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Find.ByAttributes&amp;lt;HtmlInputSubmit&amp;gt;(&lt;span style="color: #006080"&gt;"Value=Log On"&lt;/span&gt;).Click();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Assert.IsTrue(ActiveBrowser.ContainsText(&lt;span style="color: #006080"&gt;"The user name or password provided is incorrect"&lt;/span&gt;));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Listing 8 – The completed test 
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;This post merely scratched the surface of what the Telerik Testing Framework provides to developers. Testing really needs to become a way of life for all aspects of software development, not just the quality engineers.&amp;nbsp; Remember, if you don’t test it, your users will! 
&lt;h1&gt;Next Steps!&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://www.telerik.com/products/free-testing-framework/overview.aspx"&gt;Telerik’s Testing Framework&lt;/a&gt; is freely available for download from the product’s home page. You can immediately start writing functional tests for your HTML, Silverlight, or WPF applications! Want someone on call to help you with issues? Get a year of top-notch support from Telerik’s amazing support crew for only $299. (More details at the &lt;a href="http://www.telerik.com/products/free-testing-framework/overview.aspx"&gt;product’s home page&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;Why not go give the Telerik Testing Framework a try?&lt;/p&gt;
&lt;h1&gt;About the author &lt;/h1&gt;
&lt;p&gt;&lt;a href="https://twitter.com/skimedic"&gt;Follow @skimedic&lt;/a&gt; 
&lt;p&gt;Philip Japikse 
&lt;table border="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;a href="http://www.telerik.com/automated-testing-tools/libraries/metabloglib/windows-live-writer-29264f2015d3_b465-clip_image005_2.sflb"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://www.telerik.com/automated-testing-tools/libraries/metabloglib/windows-live-writer-29264f2015d3_b465-clip_image005_thumb.sflb" width="97" height="116"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Philip Japikse is an international speaker, a Microsoft MVP, INETA Community Champion, MCSD, CSM/ CSP, and a passionate member of the developer community, Phil has been working with .Net since the first betas, developing software for over 20 years, and heavily involved in the agile community since 2005. Phil works as a Senior Developer Evangelist for &lt;a href="http://www.telerik.com"&gt;Telerik&lt;/a&gt;'s &lt;a href="http://bit.ly/PqkA51"&gt;RadControls for Windows 8&lt;/a&gt; as well as the Just family of products (&lt;a href="http://bit.ly/TT8FCS"&gt;JustCode&lt;/a&gt;, &lt;a href="http://bit.ly/O3NsFp"&gt;JustMock&lt;/a&gt;, &lt;a href="http://bit.ly/TT920f"&gt;JustTrace&lt;/a&gt;, and &lt;a href="http://bit.ly/Sl3CVZ"&gt;JustDecompile&lt;/a&gt;) and co-hosts the Hallway Conversations podcast (www.hallwayconversations.com). Phil is also the Lead Director for the Cincinnati .Net User’s Group (&lt;a href="http://bit.ly/RPKrIX"&gt;http://www.cinnug.org&lt;/a&gt;). You can follow Phil on twitter via &lt;a href="http://www.twitter.com/skimedic"&gt;www.twitter.com/skimedic&lt;/a&gt; read his Telerik blog at &lt;a href="http://blogs.telerik.com/skimedic"&gt;http://blogs.telerik.com/skimedic&lt;/a&gt; and his personal blog at &lt;a href="http://www.skimedic.com/blog"&gt;www.skimedic.com/blog&lt;/a&gt;.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/wTs0Xu2GLYY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/wTs0Xu2GLYY/Functional-Testing-with-the-Telerik-Testing-Framework.aspx</link>
      <author>Jim Holmes</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-05-21/Functional-Testing-with-the-Telerik-Testing-Framework.aspx</comments>
      <guid isPermaLink="false">3e4bd0d9-ecf8-45d4-899c-8611fb37b9b1</guid>
      <pubDate>Tue, 21 May 2013 17:18:48 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-05-21/Functional-Testing-with-the-Telerik-Testing-Framework.aspx</feedburner:origLink></item>
    <item>
      <title>Data-Driven Test Automation</title>
      <description>&lt;p&gt;Greetings, fellow testers.  I recently attended a workshop on Acceptance Test Driven Development, during which the presenter spoke about distilling requirements down using examples. This is a great opportunity for testers and developers to work closely with Product Owners to determine exactly what output is expected from given inputs.
&lt;/p&gt; &lt;p&gt;
There are also times when the code behind a function is particularly obtuse or for some other reason testing is best done via the application itself.
&lt;/p&gt; &lt;p&gt;
Both of these are great opportunities for data-driven automation. Data-driven test automation lets us repeat a set of test steps automatically, using a set of pre-defined values both as input and to test the application's output. While a tester could be set down in front of the keyboard and mouse, they'd always be constrained by time and so we'd need to determine a realistic subset of values to use. It would be better to let a computer run through a large number of scenarios in a fraction of the time. We can do that using &lt;a href="http://www.telerik.com/automated-testing-tools/support/documentation/user-guide/data-driven-testing.aspx"&gt;Test Studio's Data Driven Testing&lt;/a&gt;.
&lt;/p&gt; &lt;p&gt;
Using a spreadsheet, CSV file or database, we can define as long a list of scenarios as we'd like. In this example, we've created a spreadsheet of values to test a sales tax calculation, and the Business Analyst has verified that the formulas being used are correct. She was also able to make sure we included scenarios she felt may be of particular importance, adding to the whole organization's ownership of quality.
&lt;/p&gt; &lt;p&gt; &lt;img src="http://www.telerik.com/automated-testing-tools/libraries/steven_vore/data_binding_spreadsheet.sflb" alt="Sample spreadsheet of values for data-bound test automation." /&gt; &lt;/p&gt; &lt;p&gt;
Using Test Studio, it's a simple task to create a test for the page with one set of values, then bind that to the spreadsheet and let it run automatically. Test studio reads the data, fills in the input fields and checks the output against the expected values. In this particular scenario, we were able to check 150 different sets of values in just a few minutes.
&lt;/p&gt; &lt;p&gt; &lt;img src="http://www.telerik.com/automated-testing-tools/libraries/steven_vore/data_binding_test_results.sflb" alt="Output from Data-Driven automated testing, showing both success and failures for various values." /&gt; &lt;/p&gt; &lt;p&gt;
We can quickly see where any problems are — in this case a developer was truncating a decimal value where they should have been rounding. Test studio allowed us to quickly determine the cause, get it resolved, and re-run the tests to everyone's satisfaction.
&lt;/p&gt; &lt;p&gt;
I'd be interested in hearing about other situations where data-driven testing has helped you, and invite you to drop me a note or comment below.
&lt;/p&gt; &lt;p&gt;Peace,&lt;br /&gt;
Steven&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2 class="tAddTopMargin"&gt;About the Author&lt;/h2&gt; &lt;img src="http://www.telerik.com/automated-testing-tools/libraries/steven_vore/profilepicture2.sflb" alt="Steven Vore" /&gt; &lt;h3 class="fn"&gt;Steven Vore&lt;/h3&gt; &lt;p&gt; &lt;a href="https://plus.google.com/105887999211879010180/about"&gt;Steven Vore&lt;/a&gt;
is an Evangelist of Telerik's &lt;a target="_blank" href="/automated-testing-tools/ios-testing.aspx"&gt;Test Studio&lt;/a&gt;.
He has worked in software support and testing for the better part of two decades, and enjoys exploring ways to make software easier to use.
He is a fan of movies and music, and can often be found on Twitter as &lt;a href="http://twitter.com/StevenJV"&gt;@StevenJV&lt;/a&gt;.
&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/YeWW1_REwYU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/YeWW1_REwYU/Data-Driven-Test-Automation.aspx</link>
      <author>Steven Vore</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-05-20/Data-Driven-Test-Automation.aspx</comments>
      <guid isPermaLink="false">1e92e1d6-b17e-4ffb-98f9-85a1cc5a6765</guid>
      <pubDate>Mon, 20 May 2013 15:00:00 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-05-20/Data-Driven-Test-Automation.aspx</feedburner:origLink></item>
    <item>
      <title>Test Studio Web Portal: The Time Has Come</title>
      <description>&lt;p&gt;We recently released Test Studio for iOS &lt;a href="http://www.telerik.com/automated-testing-tools/blog/anthony-rinaldi/13-01-10/Test-Studio-for-iOS-Version-2-0-Preview.aspx"&gt;Version 2.0&lt;/a&gt;, and with it a new companion &lt;a href="http://www.telerik.com/automated-testing-tools/ios-testing/ios-application-testing/cloud-sync-portal.aspx"&gt;Web Portal&lt;/a&gt;. We issued a three month extended trial for the Web Portal as a thank you to our early adopters.&lt;/p&gt; &lt;h2&gt;Subscription Options&lt;/h2&gt; &lt;p&gt;That extended trial came to an end this week. To continue using the Web Portal, head over to our &lt;a href="http://www.telerik.com/automated-testing-tools/purchase/test-studio-for-ios-pricing.aspx"&gt;pricing page&lt;/a&gt; for all the subscription details. The premium features can be purchased together or independently, and in custom quantities. We went with the a la carte model to give you more flexibility. You can add exactly what and how much you need, without paying for something&amp;nbsp;you don't need and won't use.&lt;/p&gt; &lt;h2&gt;New Trial Format&lt;/h2&gt; &lt;p&gt;If you didn't sign up early enough to take advantage of our extended trial, don't worry! We've switched to a standard 30 day trial format. Log in to the &lt;a href="http://my.teststudio.com/"&gt;Web Portal&lt;/a&gt; today with your Telerik.com account to start submitting feedback, crash reports, and syncing tests and results. See our &lt;a href="http://www.telerik.com/automated-testing-tools/support/documentation/mobile-testing/overview.aspx"&gt;user's guide&lt;/a&gt; to learn more.&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2 class="tAddTopMargin"&gt;About the Author&lt;/h2&gt; &lt;img width="75" height="75" src="/automated-testing-tools/libraries/anthony_rinaldi/rinaldi-bw.sflb" alt="Anthony Rinaldi" /&gt; &lt;h3 class="fn"&gt;Anthony Rinaldi&lt;/h3&gt; &lt;p&gt; &lt;a target="_blank" rel="author" href="https://plus.google.com/u/0/103610961275032081549/"&gt;Anthony Rinaldi&lt;/a&gt; is the Product Manager of Telerik's &lt;a target="_blank" href="/automated-testing-tools/ios-testing.aspx"&gt;Test Studio for iOS&lt;/a&gt;. He combines his experience in test automation and quality assurance with his passion for Apple mobile devices and the iOS platform. He is an avid CrossFitter, soccer player, and music fan.
&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/kpt4obEYKNw" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/kpt4obEYKNw/Test-Studio-Web-Portal-The-Time-Has-Come.aspx</link>
      <author>Anthony Rinaldi</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-05-17/Test-Studio-Web-Portal-The-Time-Has-Come.aspx</comments>
      <guid isPermaLink="false">e7c78926-eb6b-4551-8a16-60c821587b67</guid>
      <pubDate>Fri, 17 May 2013 20:41:23 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-05-17/Test-Studio-Web-Portal-The-Time-Has-Come.aspx</feedburner:origLink></item>
    <item>
      <title>Cooking With Web Automation Webinar Series</title>
      <description>&lt;p&gt;Good web automation isn’t about best practices (there aren’t any!), but instead using much more of a cookbook approach: Have a problem? Find a recipe that helps you cook up a solution. The recipe you might need may not be a huge flambé, but the idea’s still a good one.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/jimholmes/3048425275/" title="Flambe by Jim Holmes OH, on Flickr"&gt;&lt;img width="375" height="500" alt="Flambe" src="http://farm4.staticflickr.com/3039/3048425275_4eac0262e9.jpg" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;To help you with this we’ve decided to start a monthly webinar series showing you how to work through specific issues in web automation: Cooking With Web Automation. Your friendly Test Studio team will be co-hosting these webinars with various automation, testing, and/or developer gurus. &lt;/p&gt; &lt;p&gt;We’ll focus these short 30 minute webinars on working with one specific problem, and show you a number of ways to solve it. You’ll also see recipes based on a broad number of tools, not just Test Studio. This will help you understand automation in a critical, broader context.&lt;/p&gt; &lt;p&gt;Our first installment will be JQuery UI Menus.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;We have reached the point where tricks and patterns for proper element discovery, synchronization and code organization are starting to repeat themselves. But what we don't have are specific 'recipes' for dealing with the more complex automation challenges that people encounter each day. Join &lt;a href="http://twitter.com/adamgoucher"&gt;Adam Goucher&lt;/a&gt; [&lt;a href="http://element34.ca"&gt;Element 34&lt;/a&gt;] and &lt;a href="http://twitter.com/ajimholmes"&gt;Jim Holmes&lt;/a&gt; [&lt;a href="http://www.telerik.com/automated-testing-tools/blog/jimholmes.aspx"&gt;Telerik&lt;/a&gt;] for a 30 minute webinar on 21 June at 11:30 US Eastern as they wrestle JQuery UI's Menu widget. &lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;What are you waiting for? &lt;a href="https://www1.gotomeeting.com/register/420709352"&gt;Go register now&lt;/a&gt;!&lt;/p&gt; &lt;p&gt;Do you have particular problems you’d like us to cook up a session for?&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2 class="tAddTopMargin"&gt;About the author&lt;/h2&gt; &lt;img width="75" height="75" alt="Jim Holmes" src="http://www.telerik.com/automated-testing-tools/libraries/jim_holmes/jimholmes.sflb" /&gt; &lt;h3 class="fn"&gt;Jim Holmes&lt;/h3&gt; &lt;p&gt;&lt;a href="https://plus.google.com/102803040683762260073/" rel="author"&gt;Jim Holmes&lt;/a&gt; has around 25 years IT experience. He's a blogger and is the Director of Engineering for Telerik’s Test Studio, an awesome set of tools to help teams deliver better software. He is co-author of "Windows Developer Power Tools" and Chief Cat Herder of the CodeMash Conference. Find him as &lt;a href="http://twitter.com/aJimHolmes" target="_blank"&gt;@aJimHolmes on Twitter.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Interested in chatting with Jim at a conference? Check out &lt;a href="http://www.telerik.com/community/evangelists/jim-holmes.aspx"&gt;his speaking schedule!&lt;/a&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/EUIuNnFDWFM" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/EUIuNnFDWFM/Cooking-With-Web-Automation-Webinar-Series.aspx</link>
      <author>Jim Holmes</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-05-15/Cooking-With-Web-Automation-Webinar-Series.aspx</comments>
      <guid isPermaLink="false">cc1ea635-af8b-4e20-a5fd-7181ea40e556</guid>
      <pubDate>Wed, 15 May 2013 16:54:37 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-05-15/Cooking-With-Web-Automation-Webinar-Series.aspx</feedburner:origLink></item>
    <item>
      <title>More &amp;ldquo;That&amp;rsquo;s Neat!&amp;rdquo; Episodes Posted</title>
      <description>&lt;p&gt;You may have caught some of the earlier “That’s Neat!” episodes I’ve posted over the last year or so. I’ve just posted a number of new ones, and have gathered all of them into one series suitably titled, wait for it… “&lt;a href="http://tv.telerik.com/series/thats-neat"&gt;That’s Neat.&lt;/a&gt;”&lt;/p&gt; &lt;iframe width="545" height="383" id="viddler-c6bdcb95" src="//www.viddler.com/embed/c6bdcb95/?f=1&amp;amp;offset=0&amp;amp;autoplay=0&amp;amp;secret=40734991&amp;amp;disablebranding=0" frameborder="0" mozallowfullscreen="true" webkitallowfullscreen="true"&gt;&lt;/iframe&gt; &lt;p&gt;I hope you enjoy these! They’re always fun to make. We’ll be adding more in the future.&lt;/p&gt; &lt;p&gt;Do you have some favorite feature of Test Studio you’d like to see in a “That’s Neat!” episode?&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2 class="tAddTopMargin"&gt;About the author&lt;/h2&gt; &lt;img width="75" height="75" alt="Jim Holmes" src="http://www.telerik.com/automated-testing-tools/libraries/jim_holmes/jimholmes.sflb" /&gt; &lt;h3 class="fn"&gt;Jim Holmes&lt;/h3&gt; &lt;p&gt;&lt;a href="https://plus.google.com/102803040683762260073/" rel="author"&gt;Jim Holmes&lt;/a&gt; has around 25 years IT experience. He's a blogger and is the Director of Engineering for Telerik’s Test Studio, an awesome set of tools to help teams deliver better software. He is co-author of "Windows Developer Power Tools" and Chief Cat Herder of the CodeMash Conference. Find him as &lt;a href="http://twitter.com/aJimHolmes" target="_blank"&gt;@aJimHolmes on Twitter.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Interested in chatting with Jim at a conference? Check out &lt;a href="http://www.telerik.com/community/evangelists/jim-holmes.aspx"&gt;his speaking schedule!&lt;/a&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/lvkoHFi_txo" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/lvkoHFi_txo/More-ldquo-That-rsquo-s-Neat-rdquo-Episodes-Posted.aspx</link>
      <author>Jim Holmes</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-05-14/More-ldquo-That-rsquo-s-Neat-rdquo-Episodes-Posted.aspx</comments>
      <guid isPermaLink="false">da1a3a7a-1377-464f-ac68-b57d167b7216</guid>
      <pubDate>Tue, 14 May 2013 20:13:10 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-05-14/More-ldquo-That-rsquo-s-Neat-rdquo-Episodes-Posted.aspx</feedburner:origLink></item>
    <item>
      <title>New Video: Guide to Success Part II</title>
      <description>&lt;p&gt;OK, so it turns out I got badly distracted after my &lt;a href="http://tv.telerik.com/watch/automated-testing-tools/test-studio-guide-to-success-part-i"&gt;Guide to Success Part I&lt;/a&gt; and never actually finished Part II. Whoops. Consider this egregious error rectified now!&lt;/p&gt; &lt;iframe width="545" height="383" id="viddler-64683ca6" src="//www.viddler.com/embed/64683ca6/?f=1&amp;amp;offset=0&amp;amp;autoplay=0&amp;amp;secret=91041232&amp;amp;disablebranding=0" frameborder="0" mozallowfullscreen="true" webkitallowfullscreen="true"&gt;&lt;/iframe&gt; &lt;p&gt;In this episode you’ll learn more about the Element Repository, Reporting, Performance Testing, Manual Tests, and some next steps you can take on your own.&lt;/p&gt; &lt;p&gt;I hope you find the video helpful!&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2 class="tAddTopMargin"&gt;About the author&lt;/h2&gt; &lt;img width="75" height="75" alt="Jim Holmes" src="http://www.telerik.com/automated-testing-tools/libraries/jim_holmes/jimholmes.sflb" /&gt; &lt;h3 class="fn"&gt;Jim Holmes&lt;/h3&gt; &lt;p&gt;&lt;a href="https://plus.google.com/102803040683762260073/" rel="author"&gt;Jim Holmes&lt;/a&gt; has around 25 years IT experience. He's a blogger and is the Director of Engineering for Telerik’s Test Studio, an awesome set of tools to help teams deliver better software. He is co-author of "Windows Developer Power Tools" and Chief Cat Herder of the CodeMash Conference. Find him as &lt;a href="http://twitter.com/aJimHolmes" target="_blank"&gt;@aJimHolmes on Twitter.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Interested in chatting with Jim at a conference? Check out &lt;a href="http://www.telerik.com/community/evangelists/jim-holmes.aspx"&gt;his speaking schedule!&lt;/a&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/zPr4EZStsds" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/zPr4EZStsds/New-Video-Guide-to-Success-Part-II.aspx</link>
      <author>Jim Holmes</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-05-14/New-Video-Guide-to-Success-Part-II.aspx</comments>
      <guid isPermaLink="false">b5dcce9d-6b26-4c0b-9d11-4af90fa296b6</guid>
      <pubDate>Tue, 14 May 2013 18:43:09 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-05-14/New-Video-Guide-to-Success-Part-II.aspx</feedburner:origLink></item>
    <item>
      <title>Sample Code &amp;amp; Slides from StarEast 2013 Talk</title>
      <description>&lt;p&gt;I gave a talk on Four Tips for Web Automation at StarEast 2013 this April. I’ve posted up my slides on SpeakerDeck&lt;/p&gt; &lt;script async class="speakerdeck-embed" data-id="60b688209eef0130bd1756e82fbf4652" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"&gt;&lt;/script&gt; &lt;p&gt;You can also find the demo code at &lt;a href="https://github.com/jimholmes/SE13"&gt;my GitHub repository&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Were you at the talk? Did you find it useful?&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2 class="tAddTopMargin"&gt;About the author&lt;/h2&gt; &lt;img width="75" height="75" alt="Jim Holmes" src="http://www.telerik.com/automated-testing-tools/libraries/jim_holmes/jimholmes.sflb" /&gt; &lt;h3 class="fn"&gt;Jim Holmes&lt;/h3&gt; &lt;p&gt;&lt;a href="https://plus.google.com/102803040683762260073/" rel="author"&gt;Jim Holmes&lt;/a&gt; has around 25 years IT experience. He's a blogger and is the Director of Engineering for Telerik’s Test Studio, an awesome set of tools to help teams deliver better software. He is co-author of "Windows Developer Power Tools" and Chief Cat Herder of the CodeMash Conference. Find him as &lt;a href="http://twitter.com/aJimHolmes" target="_blank"&gt;@aJimHolmes on Twitter.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Interested in chatting with Jim at a conference? Check out &lt;a href="http://www.telerik.com/community/evangelists/jim-holmes.aspx"&gt;his speaking schedule!&lt;/a&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/5ZyQ6juvO9s" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/5ZyQ6juvO9s/Sample-Code-amp-Slides-from-StarEast-2013-Talk.aspx</link>
      <author>Jim Holmes</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-05-14/Sample-Code-amp-Slides-from-StarEast-2013-Talk.aspx</comments>
      <guid isPermaLink="false">1378b1fd-fe75-4e81-b15c-279a5c490929</guid>
      <pubDate>Tue, 14 May 2013 18:16:01 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-05-14/Sample-Code-amp-Slides-from-StarEast-2013-Talk.aspx</feedburner:origLink></item>
    <item>
      <title>Telerik Test Summit 2013 Wrapup</title>
      <description>&lt;p&gt;Greetings, fellow testers.
Last week, we hosted a number of thought leaders in the testing community as part of the 2nd annual Telerik Testing Summit (Twitter: &lt;a name="TelSum posts on Twitter" href="https://twitter.com/search/%23telsum" target="blank" onclick="return false;"&gt;#TelSum&lt;/a&gt;) in Austin, Texas. The event is a free-form peer conference on software development — of which testing is an important part — its current state and possible avenues of improvement. The agenda was developed on the spot and adjusted throughout the weekend, with an emphasis on flexibility. A few tools and technologies were mentioned, but this was very much a broad discussion of people and how they relate to each other, of ideas and suggestions.
&lt;/p&gt; &lt;p&gt;
I was fortunate enough to attend this year; also from Telerik were &lt;a href="http://twitter.com/aJimHolmes" name="Jim Holmes on Twitter" target="blank" onclick="return false;"&gt;Jim Holmes&lt;/a&gt; plus &lt;a href="http://twitter.com/telerini" name="Holly Bertoncini on Twitter" target="blank" onclick="return false;"&gt;Holly Bertoncini&lt;/a&gt;, our event organizer.  We were joined by
&lt;a href="http://twitter.com/can_test" name="Paul Carvalho on Twitter" target="blank" onclick="return false;"&gt;Paul Carvalho&lt;/a&gt;,
&lt;a href="http://twitter.com/hogfish" name="Trish Khoo on Twitter" target="blank" onclick="return false;"&gt;Trish Khoo&lt;/a&gt;,
&lt;a href="http://twitter.com/adamgoucher" name="Adam Goucher on Twitter" target="blank" onclick="return false;"&gt;Adam Goucher&lt;/a&gt;,
&lt;a href="http://twitter.com/alanpage" name="AlanPage on Twitter" target="blank" onclick="return false;"&gt;AlanPage&lt;/a&gt;,
&lt;a href="http://twitter.com/m8ttyb" name="Matt Brandt on Twitter" target="blank" onclick="return false;"&gt;Matt Brandt&lt;/a&gt;,
&lt;a href="http://twitter.com/sdelesie" name="Selena Delesie on Twitter" target="blank" onclick="return false;"&gt;Selena Delesie&lt;/a&gt;,
&lt;a href="http://twitter.com/mattbarcomb" name="Matt Barcomb on Twitter" target="blank" onclick="return false;"&gt;Matt Barcomb&lt;/a&gt;,
&lt;a href="http://twitter.com/chzy" name="Jeff Morgan on Twitter" target="blank" onclick="return false;"&gt;Jeff Morgan&lt;/a&gt;,
&lt;a href="http://twitter.com/marlenac" name="Marlena Compton on Twitter" target="blank" onclick="return false;"&gt;Marlena Compton&lt;/a&gt;, and
&lt;a href="http://twitter.com/chris_mcmahon" name="Chris McMahon on Twitter" target="blank" onclick="return false;"&gt;Chris McMahon&lt;/a&gt;. It was great to meet these folks in person, get to know them, and hear their thoughts and insights.
&lt;/p&gt; &lt;p&gt;
As we gathered on Friday, we papered the walls with extra-large "stickies" and started in with suggestions for topics and deciding how we'd progress. We had many hours of topic-based discussion on Friday.
&lt;/p&gt; &lt;p&gt;
Many of the participants will be posting their thoughts on their own blogs; some have already begun to do so, and I encourage you to go check them out. I'll be posting some of my observations and thoughts over the next week or so, but I thought I'd start with a list of our topics:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Testers' Image, Testing as a Career
    &lt;/li&gt; &lt;li&gt;Dest Design
    &lt;/li&gt; &lt;li&gt;Pairing with Developers
    &lt;/li&gt; &lt;li&gt;the Future of Work
    &lt;/li&gt; &lt;li&gt;Which Metrics Don't Suck?
    &lt;/li&gt; &lt;li&gt;Community Testing Bootstrapping
    &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;
After a few lightning talks and some small-group discussions (including Jeff huddled with several people talking about Cucumber and how/when to use it effectively) on Saturday morning, we shared book recommendations, worked on a Testing project for Wikipedia, and spent some time closing out to summarize and creating action items. We didn't want our discussions to end as we departed; we all walked out with tasks for improving not only our own organizations but Testing as a whole.
&lt;/p&gt; &lt;p&gt;Peace,&lt;br /&gt;
Steven&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2 class="tAddTopMargin"&gt;About the Author&lt;/h2&gt; &lt;img src="http://www.telerik.com/automated-testing-tools/libraries/steven_vore/profilepicture2.sflb" alt="Steven Vore" /&gt; &lt;h3 class="fn"&gt;Steven Vore&lt;/h3&gt; &lt;p&gt; &lt;a href="https://plus.google.com/105887999211879010180/about" target="blank" onclick="return false;"&gt;Steven Vore&lt;/a&gt;
is an Evangelist of Telerik's &lt;a target="_blank" href="/automated-testing-tools/ios-testing.aspx" re_target="_blank" onclick="return false;"&gt;Test Studio&lt;/a&gt;.
He has worked in software support and testing for the better part of two decades, and enjoys exploring ways to make software easier to use.
He is a fan of movies and music, and can often be found on Twitter as &lt;a href="http://twitter.com/StevenJV" target="blank" onclick="return false;"&gt;@StevenJV&lt;/a&gt;.
&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/ELllMSolz1Q" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/ELllMSolz1Q/Telerik-Test-Summit-2013-Wrapup.aspx</link>
      <author>Steven Vore</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-05-09/Telerik-Test-Summit-2013-Wrapup.aspx</comments>
      <guid isPermaLink="false">a5b86059-fb0b-4bf3-ae29-5bfd6f8c2833</guid>
      <pubDate>Thu, 09 May 2013 17:00:00 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-05-09/Telerik-Test-Summit-2013-Wrapup.aspx</feedburner:origLink></item>
    <item>
      <title>Introduction to Manual Testing using Test Studio</title>
      <description>&lt;p&gt;Greetings, fellow testers. I'm excited to be joining the Telerik family, and I'll be sharing tips and tricks, ideas and suggestions with you here. I plan on providing a good bit of intro information for our new users as well as more in-depth articles for those of you who have already invested a good bit of time in Test Studio.  &lt;/p&gt; &lt;p&gt;&lt;span title="User Interface"&gt;UI&lt;/span&gt; Automation is what brings most of us to Test Studio in the first place, but I want to start here by pointing out a component that's easily overlooked - Test Studio's support of manual testing. As &lt;a href="http://www.telerik.com/automated-testing-tools/blog/jimholmes/" title="Jim Holmes"&gt;Jim&lt;/a&gt; often says, there are plenty of tests that should &lt;strong&gt;not&lt;/strong&gt; be automated. Checking element alignment on the page, for example, or that the right icon is being displayed — these sort of tests are much more quickly and easily done by the human eye. &lt;/p&gt; &lt;p&gt;Perhaps more imporantly for new users: Using Test Studio to organize and execute your existing manual tests is a great way to get started, giving quick visibility into the work you're already doing.  &lt;/p&gt; &lt;p&gt;Most of us have used spreadsheets to keep track of tests, and we know the pain of keeping them updated, tracking which tests have passed and when, and reporting on them. Spreadsheets are great, but this just isn't a task for which they were built — especially when used by multiple people.&amp;nbsp;&lt;/p&gt; &lt;p&gt;Enter Test Studio's &lt;a href="http://www.telerik.com/automated-testing-tools/manual-testing.aspx" name="Manual Testing using Test Studio"&gt;manual testing&lt;/a&gt; management.&amp;nbsp;Import your tests into Test Studio and forget about spreadsheets; test case editing, management and tracking become a snap. Your team can see which tests have been done and which haven't, and can easily note success or failures along the way. &lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://www.telerik.com/automated-testing-tools/libraries/steven_vore/manualtests.sflb" /&gt; &lt;/p&gt; &lt;p&gt;Now, as you're going through your tests, instead of wondering which cases passed or failed recently or which team members have up-to-date spreadsheets, you can be thinking more about which tests to automate first.
Manual testing is often an overlooked feature of Test Studio. &lt;a href="http://www.telerik.com/automated-testing-tools/manual-testing.aspx" name="Manual Testing using Test Studio"&gt;Give it a try&lt;/a&gt; and let me know how it works for you.&lt;/p&gt; &lt;p&gt;Peace,&lt;br /&gt;
Steven&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2 class="tAddTopMargin"&gt;About the Author&lt;/h2&gt; &lt;img src="http://www.telerik.com/automated-testing-tools/libraries/steven_vore/profilepicture2.sflb" alt="Steven Vore" /&gt; &lt;h3 class="fn"&gt;Steven Vore&lt;/h3&gt; &lt;p&gt; &lt;a href="https://plus.google.com/105887999211879010180/about"&gt;Steven Vore&lt;/a&gt;
is an Evangelist of Telerik's &lt;a target="_blank" href="/automated-testing-tools/ios-testing.aspx"&gt;Test Studio&lt;/a&gt;.
He has worked in software support and testing for the better part of two decades, and enjoys exploring ways to make software easier to use.
He is a fan of movies and music, and can often be found on Twitter as &lt;a href="http://twitter.com/StevenJV"&gt;@StevenJV&lt;/a&gt;.
&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/O8ppUF_HS1g" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/O8ppUF_HS1g/Introduction-to-Manual-Testing-using-Test-Studio.aspx</link>
      <author>Steven Vore</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-05-05/Introduction-to-Manual-Testing-using-Test-Studio.aspx</comments>
      <guid isPermaLink="false">3efdac85-0905-4763-aaa8-896db0ad3f1a</guid>
      <pubDate>Sun, 05 May 2013 18:00:00 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-05-05/Introduction-to-Manual-Testing-using-Test-Studio.aspx</feedburner:origLink></item>
    <item>
      <title>Test Studio for iOS 2.0.1 Is Live!</title>
      <description>&lt;p&gt;As promised in the &lt;a href="http://www.telerik.com/automated-testing-tools/blog/13-03-29/test-studio-for-ios-2-0-1-preview.aspx"&gt;preview post&lt;/a&gt;, some great new features are available today in version 2.0.1:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="/automated-testing-tools/support/documentation/mobile-testing/api-framework/jenkins-ci.aspx"&gt;Jenkins CI support&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Expanded TSReport support:&amp;nbsp;&lt;a href="/automated-testing-tools/support/documentation/mobile-testing/tsreport/xamarin-ios/setup.aspx"&gt;Xamarin.iOS&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="/automated-testing-tools/support/documentation/mobile-testing/tsreport/cordova/setup.aspx"&gt;Cordova&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Bug fixes&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;To get started, update Test Studio for iOS from the &lt;a href="https://itunes.apple.com/us/app/test-studio/id523796105?alreadyRedirected=1&amp;amp;mt=8"&gt;App Store&lt;/a&gt;, download the latest &lt;a href="/community/license-agreement.aspx?pId=969"&gt;file bundle&lt;/a&gt; from Telerik.com, and update the testing extensions in your native app.&lt;/p&gt; &lt;h2&gt;Stay Tuned&lt;/h2&gt; &lt;p&gt;We're improving the Feedback image editing experience for version 2.1. Stay tuned here for previews and a release date.&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2 class="tAddTopMargin"&gt;About the Author&lt;/h2&gt; &lt;img width="75" height="75" src="/automated-testing-tools/libraries/anthony_rinaldi/rinaldi-bw.sflb" alt="Anthony Rinaldi" /&gt; &lt;h3 class="fn"&gt;Anthony Rinaldi&lt;/h3&gt; &lt;p&gt; &lt;a target="_blank" rel="author" href="https://plus.google.com/u/0/103610961275032081549/"&gt;Anthony Rinaldi&lt;/a&gt; is the Product Manager of Telerik's &lt;a target="_blank" href="/automated-testing-tools/ios-testing.aspx"&gt;Test Studio for iOS&lt;/a&gt;. He combines his experience in test automation and quality assurance with his passion for Apple mobile devices and the iOS platform. He is an avid CrossFitter, soccer player, and music fan.
&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/245AntHfFoY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/245AntHfFoY/Test-Studio-for-iOS-2-0-1-Is-Live.aspx</link>
      <author>Anthony Rinaldi</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-04-18/Test-Studio-for-iOS-2-0-1-Is-Live.aspx</comments>
      <guid isPermaLink="false">dcfad17b-6379-4dc0-899d-4f40d28e6776</guid>
      <pubDate>Thu, 18 Apr 2013 16:02:59 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-04-18/Test-Studio-for-iOS-2-0-1-Is-Live.aspx</feedburner:origLink></item>
    <item>
      <title>Handling Asynchronous Delays in Test Studio for iOS</title>
      <description>&lt;p&gt;Asynchronous delays are one of the biggest automation challenges you'll encounter. Jim Holmes has a great discussion on this in his &lt;a href="/automated-testing-tools/blog/jimholmes/13-03-18/explicit-waits-with-ajax-combobox-example.aspx"&gt;blog post&lt;/a&gt; on the Windows desktop version of Test Studio. It's definitely worth a read, but here are some highlights just in case:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;It's hard to determine what to delay for your test's execution.&lt;/li&gt; &lt;li&gt;Do not rely on fixed execution delays.&lt;/li&gt; &lt;li&gt;Isolate the condition that should be met for test execution to continue.&lt;/li&gt; &lt;li&gt;Create an explicit wait for that condition.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;But what about the mobile space? How do we account for asynchronous delays in our mobile apps or web pages? Test Studio for iOS has you covered! Read on for more.&lt;/p&gt; &lt;h2&gt;Example&lt;/h2&gt; &lt;p&gt;To simulate a call back to the server, I made a slight change to our demo application. Normally, tapping a button on the UIButton screen immediately changes a UILabel at the bottom of the screen. Instead, I've wired Button 1 to not update the label until five seconds after the tap.&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://www.telerik.com/automated-testing-tools/libraries/anthony_rinaldi/1-label.sflb" style="width: 267px; height: 400px;" /&gt;&lt;/p&gt; &lt;h2&gt;The Test&lt;/h2&gt; &lt;p&gt;Let's create a basic test against this button and its functionality. I'll navigate to the UIButton screen, tap Button 1, and verify the text of the UILabel. Here's what that test looks like:&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://www.telerik.com/automated-testing-tools/libraries/anthony_rinaldi/2-test.sflb" style="width: 267px; height: 400px;" /&gt;&lt;/p&gt; &lt;p&gt;Let's execute the test. It should pass, right?&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://www.telerik.com/automated-testing-tools/libraries/anthony_rinaldi/3-failure.sflb" style="width: 267px; height: 400px;" /&gt;&lt;/p&gt; &lt;p&gt;Wrong. The text verification at step three failed. But why?
&lt;/p&gt; &lt;h3&gt;The Problem&lt;/h3&gt; &lt;p&gt;So what happened? Let's drill into the failed step to find out. Tap step three under the &lt;strong&gt;Step Results&lt;/strong&gt; section. The failure summary shows that the UILabel's text did not update in time:&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://www.telerik.com/automated-testing-tools/libraries/anthony_rinaldi/4-fail-summary.sflb" style="width: 267px; height: 400px;" /&gt;&lt;/p&gt; &lt;p&gt;Tap &lt;strong&gt;Go to Step&lt;/strong&gt; at the bottom of the screen. Next tap the &lt;strong&gt;Operation&lt;/strong&gt; cell:&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://www.telerik.com/automated-testing-tools/libraries/anthony_rinaldi/5-operation.sflb" style="width: 267px; height: 400px;" /&gt;&lt;/p&gt; &lt;p&gt;We see that the default timeout for a Wait Verification is three seconds. Since our label takes five seconds to update, the test fails.&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://www.telerik.com/automated-testing-tools/libraries/anthony_rinaldi/5_5-default-timeout2.sflb" style="width: 267px; height: 400px;" /&gt;&lt;/p&gt; &lt;h3&gt;The Fix&lt;/h3&gt; &lt;p&gt;It's as easy as increasing the timeout to adequately cover the condition. In this case the label takes five seconds to update, so I'll increase the timeout to six seconds:&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://www.telerik.com/automated-testing-tools/libraries/anthony_rinaldi/6-six-sec.sflb" style="width: 267px; height: 400px;" /&gt;&lt;/p&gt; &lt;p&gt;If your condition is inconsistent, consider bumping up the timeout to cover the longest possible scenario. And remember, this timeout is not fixed. The Wait step continuously checks for its condition to be met &lt;em&gt;up to&lt;/em&gt; the timeout. If the condition is met before the timeout, the step immediately passes and the test continues. If the condition is never met, the step fails after waiting the full length of the timeout.&lt;/p&gt; &lt;p&gt;Let's execute again. The test should pass:&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://www.telerik.com/automated-testing-tools/libraries/anthony_rinaldi/7-pass.sflb" style="width: 267px; height: 400px;" /&gt;&lt;/p&gt; &lt;h3&gt;The Takeaway&lt;/h3&gt; &lt;p&gt;Test Studio for iOS makes it easy to handle asynchronous delays with its standard &lt;a href="/automated-testing-tools/support/documentation/mobile-testing/testing/test-recording/verifications.aspx"&gt;Verification&lt;/a&gt; step type. In fact, our Verification step is set to be a Wait by default. You just may need to increase its timeout setting to accommodate your scenario.&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2 class="tAddTopMargin"&gt;About the Author&lt;/h2&gt; &lt;img width="75" height="75" src="/automated-testing-tools/libraries/anthony_rinaldi/rinaldi-bw.sflb" alt="Anthony Rinaldi" /&gt; &lt;h3 class="fn"&gt;Anthony Rinaldi&lt;/h3&gt; &lt;p&gt; &lt;a target="_blank" rel="author" href="https://plus.google.com/u/0/103610961275032081549/"&gt;Anthony Rinaldi&lt;/a&gt; is the Product Manager of Telerik's &lt;a target="_blank" href="/automated-testing-tools/ios-testing.aspx"&gt;Test Studio for iOS&lt;/a&gt;. He combines his experience in test automation and quality assurance with his passion for Apple mobile devices and the iOS platform. He is an avid CrossFitter, soccer player, and music fan.
&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/ke-3Jwg0dU4" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/ke-3Jwg0dU4/Handling-Asynchronous-Delays-in-Test-Studio-for-iOS.aspx</link>
      <author>Anthony Rinaldi</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-04-12/Handling-Asynchronous-Delays-in-Test-Studio-for-iOS.aspx</comments>
      <guid isPermaLink="false">f89ace79-b122-4d44-96fa-6d4f366d74c1</guid>
      <pubDate>Fri, 12 Apr 2013 21:03:23 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-04-12/Handling-Asynchronous-Delays-in-Test-Studio-for-iOS.aspx</feedburner:origLink></item>
    <item>
      <title>Challenge your RadGrid for Asp.Net AJAX</title>
      <description>&lt;p style="text-align: center;"&gt;
Or How to Ensure It Does what you want
&lt;/p&gt; &lt;p&gt;
Automating a Grid component can be a challenge and not because it’s hard. It has it subtleties, but it’s not the most complicated thing in the trade, by
far. With &lt;a href="http://www.telerik.com/automated-testing-tools/"&gt;Telerik Test Studio&lt;/a&gt; you can test &lt;a href="http://www.telerik.com/products/aspnet-ajax/grid.aspx"&gt;RadGrid for Asp.Net AJAX&lt;/a&gt; with ease and thoroughness. In this Blog post I’ll show a few tips that can make this
not only possible, but a child’s play for everyone.
&lt;/p&gt; &lt;p&gt;
Telerik’s software testing solution Test Studio comes with built-in translators for all of its component suites. This means that you get convenient
verifications when you hover over specific elements like the Grid’s column headers. In the attached picture you can see a sorting verification. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a target="_blank" href="http://www.telerik.com/automated-testing-tools/libraries/blog_posts/grid1.sflb"&gt;&lt;img alt="" src="http://www.telerik.com/automated-testing-tools/libraries/banners/grid1.sflb" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The same
applies for the actions as well – clicking the numbers in the pager will record as a RadGrid specific action for navigating to a given page. Telerik Test
Studio provides verifications which validate the pager mode and the selected page. We can also go as far as drag-drop grouping actions and verifications
for the currently grouped columns. It’s all there!
&lt;/p&gt; &lt;p&gt;&lt;a target="_blank" href="http://www.telerik.com/automated-testing-tools/libraries/blog_posts/grid5.sflb"&gt;&lt;img alt="" src="http://www.telerik.com/automated-testing-tools/libraries/banners/grid5.sflb" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;
Now let’s step back a bit and look at the bigger picture. A good Grid is a composite component. RadGrid is no different in this regard. It contains text
boxes, date pickers, combo boxes, HTML editors and what not. When you are automating this control, you actually need all the nested ones to be supported as
well. In the upcoming blog posts we’ll be focusing on those. Stay tuned for more details on how to automate your RadEditor, RadComboBox, RadTreeView and
more!
&lt;/p&gt; &lt;p&gt;
But for now I’ll leave you to explore how versatile automating with Test Studio can be!
&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.telerik.com/automated-testing-tools/download.aspx"&gt;&lt;img src="http://www.telerik.com/automated-testing-tools/libraries/banners/blog-banner.sflb" alt="Download Test Studio" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;div id="author" class="vcard"&gt; &lt;h2 class="tAddTopMargin"&gt;About the author&lt;/h2&gt; &lt;img width="75" height="75" src="http://www.telerik.com/automated-testing-tools/libraries/marketing/pavel_pankov.sflb" alt="Pavel Pankov" /&gt; &lt;h3 class="fn"&gt;Pavel Pankov&lt;/h3&gt; &lt;p&gt;&lt;a rel="author" href="https://plus.google.com/107956089983879695323/"&gt;Pavel Pankov&lt;/a&gt; is a QA Lead at Telerik’s Testing Tools division. He joined the company back in 2007. Through the years he was responsible for part of the Translators and Wrappers for the ASP.NET AJAX controls, and has been actively involved in the adoption and development of Telerik’s software testing product. Now he focuses his attention on the improvement and continuous success of Test Studio. In his spare time he likes to swim and ride his mountain bike.
&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/uzngqKB6o-8" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/uzngqKB6o-8/Challenge-your-RadGrid-for-Asp-Net-AJAX.aspx</link>
      <author>Pavel Pankov</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-04-11/Challenge-your-RadGrid-for-Asp-Net-AJAX.aspx</comments>
      <guid isPermaLink="false">88aaeaa5-a652-468b-a427-bdaa549f6b2c</guid>
      <pubDate>Thu, 11 Apr 2013 12:48:20 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-04-11/Challenge-your-RadGrid-for-Asp-Net-AJAX.aspx</feedburner:origLink></item>
    <item>
      <title>Fiddler Gets a New Website Backed with Community Resources</title>
      <description>&lt;p&gt;A few months back &lt;a href="http://www.telerik.com/automated-testing-tools/blog/christophereyhorn/12-09-10/here-we-grow-again-telerik-acquires-fiddler-what-s-next.aspx"&gt;our announcement of Fiddler joining the Telerik family&lt;/a&gt; received huge response in the community. As part of our efforts, we made it a point to ask you for advice and feedback on next steps. Much like the news itself, this request was well received and funneled back to us amazing, interesting and very useful feedback and advice. The impact of the community has helped us stay focused and devoted to the thousands of Fiddler users, and deliver on our promise to provide better user experience, support resources and additional product features in the months to follow. &lt;/p&gt; &lt;p&gt;Fast forward 8 months - we made the first step together in November – you helped us choose Fiddler’s new logo. Now we are excited to share with you the first phase of the &lt;a href="http://fiddler2.com/fiddler2/"&gt;Fiddler’s website revamp&lt;/a&gt;! The main goal -- to make Fiddler’s website a bit easier to navigate and help you quickly find what you need. &lt;/p&gt; &lt;p&gt;We are now happy to offer the Fiddler community rich, up-to-date and publicly available &lt;a href="http://fiddler2.com/documentation/Configure-Fiddler/Tasks/ConfigureFiddler"&gt;documentation&lt;/a&gt; consisting of more than 100 product topics. Naturally, we’ll continue adding fresh content, keeping this a living and breathing document, always in sync with the upcoming product developments. We’ll be also adding new short videos to the Telerik Fiddler YouTube playlist to complement the currently available Fiddler resources. &lt;/p&gt; &lt;p&gt;In the next phase of the website redesign will be featuring integrated and consistent Forums experience. &lt;/p&gt; &lt;p&gt;We see today’s news as a next step in our journey to give back to the Fiddler community. As per your request, we will continue working on a major product UI facelift as well as enhanced product functionality to ensure all of your feedback is not only responded to, but acted upon. Please stay tuned for additional updates. &lt;/p&gt; &lt;br /&gt;
Christopher Eyhorn &lt;br /&gt;
EVP Testing Tools  &lt;br /&gt;
Twitter: &lt;a href="http://twitter.com/ChrisEyhorn"&gt;@ChrisEyhorn&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/zGTF0iPigoc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/zGTF0iPigoc/Fiddler-Gets-a-New-Website-Backed-with-Community-Resources.aspx</link>
      <author>Christopher Eyhorn</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-04-11/Fiddler-Gets-a-New-Website-Backed-with-Community-Resources.aspx</comments>
      <guid isPermaLink="false">d7443de6-84af-44a4-9d67-f66aa20752a1</guid>
      <pubDate>Thu, 11 Apr 2013 08:46:37 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-04-11/Fiddler-Gets-a-New-Website-Backed-with-Community-Resources.aspx</feedburner:origLink></item>
    <item>
      <title>Working With Visual Studio: A Familiar Environment</title>
      <description>&lt;p&gt;
As I mentioned in my &lt;a href="http://www.telerik.com/automated-testing-tools/blog/13-04-05/working-with-visual-studio-developers-and-functional-testing.aspx"&gt;last post's closing&lt;/a&gt;, Test Studio's plugin for Visual Studio lets developers and coding testers work right in an environment they’re familiar and comfortable with. You’ve undoubtedly customized
Visual Studio to fit your particular needs: display settings, window behavior and layout, and any number of other plugins and productivity tools such as    &lt;a href="http://www.telerik.com/products/justcode.aspx"&gt;Telerik’s JustCode&lt;/a&gt;.
&lt;/p&gt; &lt;p&gt;
Working with Test Studio inside of Visual Studio leaves you the ability to pull in other tools easily through NuGet. Do you prefer using NUnit or MbUnit
for their powerful Assert and fluent interfaces? Go right ahead! (Note that you can also use outside assemblies easily straight from within Test Studio
Standalone, too. You won’t be handicapping other team members using that interface!)
&lt;/p&gt; &lt;p&gt;
Here’s another example of using a test oracle for validation, this time via NUnit. The example below shows evaluating a downloaded file against a baseline
or “truth” file. NUnit’s “Within” clause from its fluent API makes range comparisons simple.
&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://www.telerik.com/automated-testing-tools/libraries/blog_posts/oracle_2.sflb"&gt;&lt;img alt="" src="http://www.telerik.com/automated-testing-tools/libraries/banners/oracle_2.sflb" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;
Source control integration for your test suites is a snap from within Visual Studio too. Use the exact same approach you do with your current toolset. Test
Studio, ether the Standalone or Visual Studio plugin versions, play nicely with all source control tooling, so you won’t have to alter your habits, teams’
workflows, or worse yet, change your source control system.&lt;/p&gt; &lt;h2&gt;Test Studio and Visual Studio: Give it a Try!&lt;/h2&gt; &lt;p&gt;Have you avoided Test Studio because you thought a commercial tool would limit your ability to write code to perform customized tasks in your automated suite? Hopefully these last four posts have helped shine some light on that misconception! Why not&amp;nbsp;&lt;a href="http://www.telerik.com/automated-testing-tools/download.aspx"&gt;go grab a trial of Test Studio&lt;/a&gt; and give it a try?&lt;/p&gt; &lt;p&gt; More blog posts on the topic of Developer Testing: &lt;a href="http://www.telerik.com/automated-testing-tools/blog/13-04-01/working-with-visual-studio-write-code-where-needed---part-1.aspx"&gt;Working with Visual Studio: Write Code Where Needed&lt;/a&gt; &amp;amp; &lt;a href="http://www.telerik.com/automated-testing-tools/blog/13-04-05/working-with-visual-studio-developers-and-functional-testing.aspx"&gt;Developers and Functional Testing&lt;/a&gt;&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2 class="tAddTopMargin"&gt;About the author&lt;/h2&gt; &lt;img width="75" height="75" alt="Jim Holmes" src="http://www.telerik.com/automated-testing-tools/libraries/jim_holmes/jimholmes.sflb" /&gt; &lt;h3 class="fn"&gt;Jim Holmes&lt;/h3&gt; &lt;p&gt;&lt;a href="https://plus.google.com/102803040683762260073/" rel="author"&gt;Jim Holmes&lt;/a&gt; is the Director of Engineering for Test Studio. He has around 25 years IT experience. He's a blogger and the co-author of "Windows Developer Power Tools" and Chief Cat Herder of the CodeMash Conference. Find him as &lt;a href="http://twitter.com/aJimHolmes" target="_blank"&gt;@aJimHolmes on Twitter.&lt;/a&gt;&lt;/p&gt; &lt;/div&gt; &lt;p&gt;&lt;a style="display: none;" rel="tag" href="http://www.codeproject.com"&gt;CodeProject&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/gow1EU3bMWQ" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/gow1EU3bMWQ/Working-With-Visual-Studio-A-Familiar-Environment.aspx</link>
      <author>Jim Holmes</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-04-08/Working-With-Visual-Studio-A-Familiar-Environment.aspx</comments>
      <guid isPermaLink="false">4b64b7af-6743-4ad1-a630-932c1a7d97d6</guid>
      <pubDate>Mon, 08 Apr 2013 11:47:06 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-04-08/Working-With-Visual-Studio-A-Familiar-Environment.aspx</feedburner:origLink></item>
    <item>
      <title>TSReport Examples</title>
      <description>&lt;p&gt;&lt;a href="/automated-testing-tools/blog/anthony-rinaldi/13-02-15/test-studio-for-ios-2-0---tsreport.aspx"&gt;TSReport&lt;/a&gt; is a great new feature of Test Studio for iOS 2.0. It's an iOS reporting library that provides services and tools for reporting feedback and crashes. This library can go into the release version of your application that you submit to the App Store. End-users can then submit feedback and crash reports directly through the app, without going through the separate Test Studio app. You view their submissions in the accompanying Test Studio Web Portal. &lt;a href="/automated-testing-tools/support/documentation/mobile-testing/tsreport/uikit/setup.aspx"&gt;Here&lt;/a&gt; is how to set up TSReport in your native UIKit application. And remember, TSReport support for Xamarin.iOS and Cordova/PhoneGap apps is &lt;a href="/automated-testing-tools/blog/anthony-rinaldi/13-03-29/test-studio-for-ios-2-0-1-preview.aspx"&gt;coming soon&lt;/a&gt;.&lt;/p&gt; &lt;h2&gt;Example 1 – Button&lt;/h2&gt; &lt;p&gt;After setup, it's time for implementation. A simple example is to add a button that calls our default feedback view controller. Place this button on one or more screens in your application where you'd like to elicit feedback. See &lt;a href="/automated-testing-tools/support/documentation/mobile-testing/tsreport/uikit/feedback-examples/button.aspx"&gt;here&lt;/a&gt; for a walk-through.&lt;/p&gt; &lt;h2&gt;Example 2 – Shake&lt;/h2&gt; &lt;p&gt;If your app has several views or you don't have screen space to spare, you'll probably want a more sophisticated option. Inspired by the awesome feature in the &lt;a href="http://support.google.com/gmm/bin/answer.py?hl=en&amp;amp;answer=2839795" target="_blank"&gt;Google Maps&lt;/a&gt; app, we created a "Shake for Feedback" example. See &lt;a href="/automated-testing-tools/support/documentation/mobile-testing/tsreport/uikit/feedback-examples/shake-gesture.aspx"&gt;here&lt;/a&gt; for a walk-through. This is a really handy yet subtle way to load the feedback screen from anywhere in your app. This can theoretically be applied to other gestures like swipe, pinch, and double-tap.&lt;/p&gt; &lt;h2&gt;Go Custom&lt;/h2&gt; &lt;p&gt;Our default feedback view controller gives you a ready-made, working solution out-of-the-box. But what if you want to customize the feedback submission process to match the look and feel of your application? We've got you covered! Use our provided methods to wire up any view you design. See the &lt;em&gt;Custom Feedback Integration&lt;/em&gt; section &lt;a href="/automated-testing-tools/support/documentation/mobile-testing/tsreport/uikit/feedback.aspx"&gt;here&lt;/a&gt; for more information. Also, don't forget about the &lt;a href="/automated-testing-tools/support/documentation/mobile-testing/tsreport/uikit/additional-methods.aspx"&gt;Additional Methods&lt;/a&gt; available to take a screenshot and send/purge queued items.&lt;/p&gt; &lt;h2&gt;Call to Action&lt;/h2&gt; &lt;p&gt;Are you using TSReport in a unique way? Do you have ideas on how to make this feature better? We'd love to hear about them all! Post your examples, ideas, and suggestions to comments. Get creative, people!&lt;/p&gt; &lt;div id="author" class="vcard"&gt; &lt;h2 class="tAddTopMargin"&gt;About the Author&lt;/h2&gt; &lt;img width="75" height="75" alt="Anthony Rinaldi" src="/automated-testing-tools/libraries/anthony_rinaldi/rinaldi-bw.sflb" /&gt; &lt;h3 class="fn"&gt;Anthony Rinaldi&lt;/h3&gt; &lt;p&gt; &lt;a href="https://plus.google.com/u/0/103610961275032081549/" rel="author" target="_blank"&gt;Anthony Rinaldi&lt;/a&gt; is the Product Manager of Telerik's &lt;a href="/automated-testing-tools/ios-testing/ios-application-testing.aspx" target="_blank"&gt;Test Studio for iOS&lt;/a&gt;. He combines his experience in test automation and quality assurance with his passion for Apple mobile devices and the iOS platform. He is an avid CrossFitter, soccer player, and music fan.
&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TestStudio/~4/226O_7VQmcU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/TestStudio/~3/226O_7VQmcU/TSReport-Examples.aspx</link>
      <author>Anthony Rinaldi</author>
      <comments>http://www.telerik.com/automated-testing-tools/blog/13-04-05/TSReport-Examples.aspx</comments>
      <guid isPermaLink="false">bbf87ede-be9a-4ca3-b1cb-c527e46094e2</guid>
      <pubDate>Fri, 05 Apr 2013 21:19:26 GMT</pubDate>
    <feedburner:origLink>http://www.telerik.com/automated-testing-tools/blog/13-04-05/TSReport-Examples.aspx</feedburner:origLink></item>
  </channel>
</rss>
