<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Balagans' Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/balagans/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/balagans/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:47:12 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Associating a Test-case with a Test Method</title>
      <link>https://docs.microsoft.com/archive/blogs/balagans/associating-a-test-case-with-a-test-method</link>
      <pubDate>Mon, 04 Jan 2010 23:25:57 GMT</pubDate>
      <dc:creator><![CDATA[Balagans]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balagans/2010/01/04/associating-a-test-case-with-a-test-method/</guid>
      <description><![CDATA[Visual Studio 2010 and Team Foundation Server 2010 opens up many scenarios in Test management. Many...]]></description>
      <content:encoded><![CDATA[<p align="justify">Visual Studio 2010 and Team Foundation Server 2010 opens up many scenarios in Test management. Many of the important workflows starts off by associating a test-case entity ( in TFS ) with any unit-tests ( can be Coded UI Test, Unit test and etc., ). Creation or Editing of a test-case can be done from Microsoft Test and Lab Manager (MTLM) from the “Testing Center” tab.</p>  <p align="justify">However, it is not possible to associate the test-case with the test-method from Microsoft Test and Lab Manager (MTLM). When viewing the “<strong>Associated Automation</strong>“ tab in any test-case, we can notice all the entries are read-only. This linking can be done from Visual Studio IDE.</p>  <h3>Snapshot of Test-case opened in Microsoft Test and Lab Manager<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/AssociatingaTestcasewithaTestMethod_11F86/TCM_TC_2.png" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/AssociatingaTestcasewithaTestMethod_11F86/TCM_TC_2.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="TCM_TC" border="0" alt="TCM_TC" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/AssociatingaTestcasewithaTestMethod_11F86/TCM_TC_thumb.png" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/AssociatingaTestcasewithaTestMethod_11F86/TCM_TC_thumb.png" width="756" height="427" /></a> </h3>  <h3>Steps to associate a Test-method with a Test-case:</h3>  <p align="justify">1. Open the Visual Studio IDE.</p>  <p align="justify">2. Open the test-project or solution in which the needed test-method to be associated.</p>  <p align="justify">3. Connect to the required TFS Project Collection and then the Team Project.</p>  <p align="justify">4. Query for the needed test-case using Id / Owner / Created data and so on.</p>  <p align="justify">5. Open the required test-case and click on “<strong>Associated Automation</strong>” tab</p>  <p align="justify">6. Click on the ellipses near the “Automated Test Name”</p>  <p align="justify">7. In the “<strong>Choose Test</strong>” dialog, Choose the required test method and Click on “<strong>Ok</strong>”. This dialog only shows the list of tests that are part of currently loaded test project or solution.</p>  <h3>Snapshot of Test-case opened in Visual Studio IDE<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/AssociatingaTestcasewithaTestMethod_11F86/VS_TC_2.png" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/AssociatingaTestcasewithaTestMethod_11F86/VS_TC_2.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="VS_TC" border="0" alt="VS_TC" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/AssociatingaTestcasewithaTestMethod_11F86/VS_TC_thumb.png" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/AssociatingaTestcasewithaTestMethod_11F86/VS_TC_thumb.png" width="752" height="446" /></a></h3>]]></content:encoded>
    </item>
    <item>
      <title>How does “Coded UI test” finds a control ??</title>
      <link>https://docs.microsoft.com/archive/blogs/balagans/how-does-coded-ui-test-finds-a-control</link>
      <pubDate>Mon, 28 Dec 2009 05:39:23 GMT</pubDate>
      <dc:creator><![CDATA[Balagans]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balagans/2009/12/28/how-does-coded-ui-test-finds-a-control/</guid>
      <description><![CDATA[Coded UI tests allows user to capture actions and generates property validations on the controls in...]]></description>
      <content:encoded><![CDATA[<p align="justify">Coded UI tests allows user to capture actions and generates property validations on the controls in the application. In order to do functional testing on the application, Coded UI test needs to playback all the actions that are captured and perform validations on the UI objects in the application interface. So, <strong>Search for controls </strong>forms the base for all the actions and validations done by Coded UI tests.</p>  <p align="justify">In order to find the control in test execution phase, Coded UI test captures some set of properties on the control and name them as “<strong>Search Properties</strong>” and “<strong>Filter Properties</strong>”. Each instance of these is a&#160; Name-value pair, with Name being the Property-Name and Value being the actual value of the property during the time of the capture.</p>  <p align="justify">Search for a control always starts from desktop. Lets take an example of a control whose search properties and filter properties are captured</p>  <h3>Code</h3>  <p align="justify">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <strong>HtmlEdit</strong>&#160; mUIEmailEdit = new <strong>HtmlEdit</strong>(someAncestorControl);     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mUIEmailEdit.<strong>SearchProperties</strong>[HtmlEdit.PropertyNames.Id] = &quot;<strong>email</strong>&quot;;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mUIEmailEdit.<strong>SearchProperties</strong>[HtmlEdit.PropertyNames.Name] = &quot;<strong>email</strong>&quot;;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mUIEmailEdit.<strong>FilterProperties</strong>[HtmlEdit.PropertyNames.LabeledBy] = null;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mUIEmailEdit.<strong>FilterProperties</strong>[HtmlEdit.PropertyNames.Type] = &quot;SINGLELINE&quot;;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mUIEmailEdit.<strong>FilterProperties</strong>[HtmlEdit.PropertyNames.Title] = null;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mUIEmailEdit.<strong>FilterProperties</strong>[HtmlEdit.PropertyNames.Class] = null;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mUIEmailEdit.<strong>FilterProperties</strong>[HtmlEdit.PropertyNames.ControlDefinition] = &quot;id=email size=25 name=email&quot;;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mUIEmailEdit.<strong>FilterProperties</strong>[HtmlEdit.PropertyNames.TagInstance] = &quot;7&quot;;</p>  <blockquote>   <p align="justify">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mUIEmailEdit.Find();</p> </blockquote>  <h3>Description</h3>  <p align="justify">From the code, we will be able to get all the properties that are associated with the control under test from the control object ( <strong>mUIEmailEdit </strong>). When the search for the control starts ( explicit by Find() or implicit by any usage of the control in actions or property validations ), it starts finding the controls under the Container element of the control ( <strong>someAncestorControl </strong>).</p>  <p align="justify">Search in Coded UI test is a <strong>Breadth-First</strong> which compares each of the controls in the traversal for the match of the properties given in the code.</p>  <p align="justify">First pass of the Search is done for the match of <strong>All properties given in SearchProperties </strong>list. Basically this can be referred as <strong>AND Condition </strong>of search properties. In cases, where the results of the search using SearchProperties finds exactly one control or doesn’t find any control, Coded UI test skips using the Filter Properties (even if is defined in the code) because of the 2 cases,</p>  <p align="justify">&#160;&#160;&#160; 1. There is exactly one control, so there is no need to apply filters.</p>  <p align="justify">&#160;&#160;&#160; 2. There are no controls to apply filters.</p>  <p align="justify">But, in cases where the list of SearchProperties is not good enough to find the exact control, Coded UI tests uses the filter properties (one by one) till it finds One exact match. Basically this can be referred as <strong>Ordered Match.</strong></p>  <p align="justify">In remote cases where Search using FilterProperties also results in more than one control, the <strong>First match</strong> is returned as the resultant control.</p>  <h3>Example</h3>  <p align="justify">Lets take the instance of search for the code written above</p>  <p align="justify">1. Search starts at the “someAncestorControl” control as it is specified as the ancestor for the control to be found.</p>  <p align="justify">2. At every traversal, we match the properties of the current control “<strong>X</strong>” with the search properties mentioned in the code. Let say we have a list of controls (<strong>X1, X2 and X3</strong>) under the container’s hierarchy that matches the properties.</p>  <p align="justify">3. Now we need to nail down the search to one control. From the list (<strong>X1, X2 and X3</strong>) , we check for the match of 1st Filter property ( HtmlEdit.PropertyNames.LabeledBy ). Let say the list now trims to (<strong>X2 and X3</strong>). In case of no match , we skip this filter property and keep using the next filter property for search.</p>  <p align="justify">4. We continue #Step3 with the following filter properties (one-by-one) till the list of resultant controls trims to 1 or till all the filter properties compared.</p>  <h3>Workflow of Search</h3>  <blockquote>   <div align="justify"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/HowdoesCodedUItestfindsacontrol_D083/image_4.png" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/HowdoesCodedUItestfindsacontrol_D083/image_4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/HowdoesCodedUItestfindsacontrol_D083/image_thumb_1.png" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/HowdoesCodedUItestfindsacontrol_D083/image_thumb_1.png" width="369" height="224" /></a> </div> </blockquote>  <h3>Technology specific data</h3>  <blockquote>   <p align="justify">1. Search for Web controls&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; : Both SearchProperties and Filter Properties are supported.</p>    <p align="justify">2. Search for Winforms, Wpf controls&#160;&#160;&#160;&#160;&#160; : Only SearchProperties are supported.</p> </blockquote>  <h3>Choice of SearchProperties</h3>  <p>Each technology has a limited set of properties that can be used for search via Coded UI tests. So, Coded UI tests chooses only the properties exposed by the technology as SearchProperties. These are chosen by targeting a good trade-off between robustness and performance.</p>  <p>For instance, the Web technology exposes many properties including all the attributes of the controls rendered in the page, whereas .Net controls’ accessibility exposes only a sub-set of the properties via accessibility.</p>]]></content:encoded>
    </item>
    <item>
      <title>Automatic Parameterization in Coded UI Tests</title>
      <link>https://docs.microsoft.com/archive/blogs/balagans/automatic-parameterization-in-coded-ui-tests</link>
      <pubDate>Mon, 28 Dec 2009 05:15:28 GMT</pubDate>
      <dc:creator><![CDATA[Balagans]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balagans/2009/12/28/automatic-parameterization-in-coded-ui-tests/</guid>
      <description><![CDATA[Coded UI tests inherently supports data-parameterization by making the recorded methods and...]]></description>
      <content:encoded><![CDATA[<p align="justify">Coded UI tests inherently supports data-parameterization by making the recorded methods and validation methods agnostic of the data(values) that was used in the context then. This makes the action recording and the validations to be re-used for any set of data without having to re-capture or re-generate the code. Simple isn’t !!</p>  <p align="justify">Coded UI test also honors the parameters used in manual test-case in Team Foundation Server 2010 while code-generating the action recording associated with it. Let see how to author a manual test-case with parameters.</p>  <p align="justify">In TCM, use <a href="mailto:&lsquo;@&rsquo;">‘@’</a> symbol to prefix any parameter name while authoring the test-case. With addition of any parameter in the test case, parameter value table will show the parameter name in new column. Enter all the values that will be used in consecutive iterations of the manual test case. In this example of a Login test-case, notice that 2 values are added for each of the parameters (<strong>Username</strong> and <strong>Domain</strong>)</p>  <p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/AutomaticParameterizationinCodedUITests_FD71/TC%20With%20Params.png" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/AutomaticParameterizationinCodedUITests_FD71/TC%20With%20Params.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="TC With Params" border="0" alt="TC With Params" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/AutomaticParameterizationinCodedUITests_FD71/TC%20With%20Params_thumb.png" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/AutomaticParameterizationinCodedUITests_FD71/TC%20With%20Params_thumb.png" width="515" height="312" /></a> </p>  <p align="justify">Lets assume that the test-case was tested manually with Action recording ON for one iteration of values (<strong>Balagans</strong> and <strong>Fareast</strong>). Now that the action recording is ready for the test-case, we can create a Coded UI test from the automation strip for all iterations of the test.</p>  <p align="justify">1. Create a test project and add a new Coded UI test to it</p>  <p align="justify">2. In the options dialog box, select 2nd option to generate automation code from the action recording that is stored with the test-case in Team Foundation server</p>  <p align="justify">3. Connect to the appropriate server and team project and Query for the test case for which the code needs to be generated.</p>  <p align="justify"></p>  <p align="justify">4. When pressed “Ok”, Visual Studio uses the Automation strip, parameter names and parameter values to create a Data-driven Coded UI test</p>  <h3 align="justify">Test Code</h3>  <blockquote>   <p align="left">[DataSource(&quot;Microsoft.VisualStudio.TestTools.DataSource.TestCase&quot;,      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;<a href="https://vsttidcserver2:8080/tfs/defaultcollection;MTR&quot;">https://vsttidcserver2:8080/tfs/defaultcollection;MTR&quot;</a>,       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;4571&quot;, DataAccessMethod.Sequential),       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; TestMethod]       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; public void CodedUITestMethod1()       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.UIMap.EnterUserNameinuserNameeditBoxParams.<strong>UINameEditText</strong> = TestContext.DataRow[&quot;<strong>UserName</strong>&quot;].ToString();       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.UIMap.EnterUserNameinuserNameeditBox();       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.UIMap.EnterDomainindomaineditBoxParams.<strong>UIEmailEditText</strong> = TestContext.DataRow[&quot;<strong>Domain</strong>&quot;].ToString();       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.UIMap.EnterDomainindomaineditBox();       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p> </blockquote>  <p align="justify">Note that for every Recorded method (<strong>EnterUserNameinuserNameeditBox</strong> ), Coded UI test generates a parameter class ( <strong>EnterUserNameinuserNameeditBoxParams</strong> )that groups all the values of actions used in the automation. Same is the case for the property validation methods. For every validation method, Coded UI test generates a parameter class (&lt;<strong>MethodName</strong>&gt;”<strong>ExpectedValues</strong>”), whose properties can be assigned to any value for changing the behavior based on the requirements.</p>  <p align="justify">So, whenever the tests needs to be data-driven, the only thing that needs to be done is defining a data-source and assign values to the properties of this parameter class before calling the corresponding recorded method or validation method.</p>  <h3 align="justify">Contents of the Data-driven Coded UI test</h3>  <p align="justify">1. <strong>Connection String</strong> – Contains the <strong>Team Foundation Server name</strong> , <strong>Test-case Id</strong> and the <strong>Data source type</strong> name based on the data source chosen (can be Database, XML or CSV). In this case, the parameter values are pulled from the Team Foundation server test-case (Microsoft.VisualStudio.TestTools.DataSource.TestCase)</p>  <p align="justify">2. <strong>Data-Access </strong>– All the values from the parameter values can be accessed via <strong>TestContext</strong> variable that is part of any unit tests. <strong>DataRow</strong> property gives the data in one row from which the values of the columns / fields can be accessed.</p>  <p align="justify">3. <strong>Value-Assignment and Method calls</strong> – Finally to data-drive the test-case, Coded UI test uses the data-source to assign values to the parameter class and then calls the corresponding recorded method or validation method.</p>  <p align="justify">For more details on Data-driven test, visit <a href="https://msdn.microsoft.com/en-us/library/ms182527%28VS.80%29.aspx" target="_blank">Link</a></p>]]></content:encoded>
    </item>
    <item>
      <title>International Software Testing Conference 2009</title>
      <link>https://docs.microsoft.com/archive/blogs/balagans/international-software-testing-conference-2009</link>
      <pubDate>Sat, 21 Nov 2009 10:05:15 GMT</pubDate>
      <dc:creator><![CDATA[Balagans]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balagans/2009/11/21/international-software-testing-conference-2009/</guid>
      <description><![CDATA[Last week, I had a chance to attend the 9th Annual International Testing Conference in Bangalore....]]></description>
      <content:encoded><![CDATA[<p>Last week, I had a chance to attend the <a href="https://www.qaiglobal.com/minisites/stc-2009/index.htm" target="_blank"><strong>9th Annual International Testing Conference in Bangalore</strong></a>. Visual Studio 2010 had a booth to present the Demos and Videos on the ALM solutions provided by Microsoft in Visual Studio 2010.</p>  <p>It was pretty eclectic group with people from different countries involved in different levels of testing : From Test Consultants like Michael Holden to Manual testers, who were keen is getting the knowledge share about the new testing solutions in the market</p>  <p>Day-1 started with the keynote from <a href="https://www.developsense.com/" target="_blank"><strong>Michel Holden</strong></a><strong> about Exploratory Testing and the importance in sapience in testing</strong>. His insights about How testing cant be automated completely without involving sapience and analogy of How Testing and leadership requires same set of skills was an eye-opener. The keynote was followed by a interesting talk on <strong>Model-based testing by <a href="https://www.qaiglobal.com/minisites/stc-2009/bruno.htm" target="_blank">Bruno Legeard</a></strong>,<em> </em>CTO and Co-Founder<em>, </em>Smartesting.</p>  <p>Many testers were surprised to see Microsoft among the players in Testing solutions. One of the attendees had an interesting quote ”Why Microsoft is doing testing tools ? Go and develop software!“. <a href="https://www.qaiglobal.com/minisites/stc-2009/tanuj.htm" target="_blank"><strong>Tanuj Vohra, Partner Director PM in Visual Studio</strong></a> gave a quick round of the presentation about the rich feature set in VS 2010, which made many think about the value props and the ease with which testing can be done.</p>  <p>We had a pretty busy booth with attendees in the following buckets.</p>  <blockquote>   <p>1. Test Consultants</p>    <p>2. Test Managers</p>    <p>3. Senior Executives</p>    <p>4. Testers</p> </blockquote>  <p>One of the main value props that impressed many people was the Application Lifecycle Integration that breaks the walls prevailing in today’s software business. Testers seldom knew the requirement changes, Business analysts fail to understand the quality of their user stories, and of course developers are in their own world fixing bugs that is not linked to any requirements or test plan. Visual Studio 2010 in integration with Team Foundation Server 2010 addresses all these issues by providing integration between Developers and Testers, Business analysts and Developers and so on.</p>  <p>Testers who attended the conference were pretty much impressed with the feature set we are shipping as part of V1. There were many questions related to Migration of assets from existing tools to TFS 2010. We also received quite a bunch of requests from different organisations to have a POC / Demo in their premises for assessing the value wrt their projects.</p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio 2010 - Functional Testing</title>
      <link>https://docs.microsoft.com/archive/blogs/balagans/visual-studio-2010-functional-testing</link>
      <pubDate>Wed, 28 Oct 2009 05:52:26 GMT</pubDate>
      <dc:creator><![CDATA[Balagans]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balagans/2009/10/28/visual-studio-2010-functional-testing/</guid>
      <description><![CDATA[Visual Studio Team Test is part of the Visual Studio 2010 that encapsulates a suite of testing tools...]]></description>
      <content:encoded><![CDATA[<p>Visual Studio Team Test is part of the Visual Studio 2010 that encapsulates a suite of testing tools for Application Lifecycle management. Some of the features of VSTT are the ability to create Unit Tests, Web tests and Load tests for Performance and Stress testing, more importantly the <b>Functional Testing capabilities that addresses the needs of both Manual and Automated testers</b>. The following note will explain in detail about the Functional Testing features in Visual Studio for Automated testers. This is achieved through the <b>UI Automation</b> techonologies along with <b>Record and Playback framework</b>.</p>  <h5>CodedUITest:</h5>  <p>Visual Studio 2010 introduces a new test type – <b>Coded UI Test [CUIT]</b>, which enables you to create automated UI tests which can then be added to a regression test suite. Coded UI Tests may be run as part of a Build Verification Test suite, thus giving the developer immediate feedback on any UI regressions. The developer can run these UI Tests before his check-in and ensure that there are <strong>No more UI regressions.</strong></p>  <p>It supports the following tools</p>  <p>1. <b>Coded UI Test recorder</b> allows users to record test actions and generate code for them. Generated code is re-factored into methods based on user gestures</p>  <p>2. <b>UI Control Locator</b> allows users to add UI controls to a repository and generate assertion code on their properties</p>  <p>3. Coded UI Test has excellent integration with <b>Team Foundation Server</b></p>  <p>The following sub-sections provide details on the features supported by the engine. </p>  <p>· <b>Intent-aware, non-intrusive and resilient action recording</b>: Instead of just capturing raw user actions, the engine has been designed to be intent aware. Set of actions are aggregated into equivalent action to provide an <b>intent aware playback</b>.</p>  <blockquote>   <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/RnP.png" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/RnP.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="RnP" border="0" alt="RnP" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/RnP_thumb.png" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/RnP_thumb.png" width="370" height="245" /></a> </p> </blockquote>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/mathew_aniyan/WindowsLiveWriter/CodedUITest_92EA/clip_image014_2.gif" original-url="https://blogs.msdn.com/blogfiles/mathew_aniyan/WindowsLiveWriter/CodedUITest_92EA/clip_image014_2.gif"></a></p>  <p>Additionally, the engine uses smart algorithms to accommodate changes in configurations like window resize/Minimize/Maximize, screen resolution changes etc to provide a resilient playback support.</p>  <p>· <b>Strong UI technology and platform support</b>: The engine supports a wide range of platforms out-of-the box covering thick client applications built with .Net technologies to latest web applications</p>  <ul>   <li>Internet Explorer 7.0 and Internet Explorer 8.0      <ul>       <li>Support for applications written in ASP.Net, PHP, JSP, ASP, Ajax, SharePoint and other Web 2.0 applications. </li>     </ul>   </li>    <li>Win-forms Controls for Microsoft .Net framework 2.0, 3.5 SP1 and 4.0. Win32 / MFC controls with good accessibility. </li>    <li>Windows Presentation Framework (WPF) for .Net framework 3.5 SP1 and 4.0 </li> </ul>  <p>Internally the engine uses features of IEDOM for recording actions on the web applications being tested via Internet explorer. It uses accessibility technologies in Windows to capture actions on AUTs. Specifically it uses <a href="https://msdn.microsoft.com/en-us/library/ms971310.aspx">Microsoft Active Accessibility</a> (MSAA) for Win-form support and <a href="https://msdn.microsoft.com/en-us/library/ms753107.aspx">UI automation</a> (UIA) for WPF support. Custom controls that are developed for Win-form and WPF that follow accessibility guideline are also supported.</p>  <p>· In-built sophisticated mechanisms for <b>handling complex UI action recording scenarios</b></p>  <ul>   <li><b>Fast Search</b>: In order to be able to playback user actions, the engine must be able to search for the Control that was acted upon. It uses fast search algorithms to quickly identify the controls and take appropriate actions on them. </li>    <li><b>Wait For Ready Mechanism</b>: When playing back an action the engine needs to know that the UI is ready to act on the next action. For example, if the application was navigating to a web page, the engine needs to wait for the navigation to complete before taking an action. The WaitForReady mechanism provides this support by intelligently detecting the application’s readiness to act on the next action. </li>    <li><b>UI Synchronization</b>: If the user acted on a control (e.g. a mouse click), the engine needs to ensure that the control actually did receive the input. UI synchronization feature provides this support to the engine allowing it to perform a more resilient playback. </li>    <li><b>Ensuring UI Control is Visible</b>: In a fast-forward scenario, the UI element (e.g. a list box) that needs to be acted upon might not be visible (scrolled our) or hidden behind another window. This feature ensures that the element is visible before taking an action on it. </li> </ul>  <h5>How is CUIT different?</h5>  <p>CodedUITest has an edge over the existing automation Frameworks in terms on the following</p>  <p>1. Robustness</p>  <p>2. Scalability in different dimensions like number of actions, number of controls and the length of the recording and playback</p>  <p>3. Performance of the Automation</p>  <p>4. Breadth in Platform Support</p>  <p>5. Integration with Visual studio Team System for Planning, Authoring, Executing test cases and Reporting.</p>  <p>To get more insight on the comparison with other automation frameworks, visit the UI Automation Wiki page <a href="https://wiki/default.aspx/Microsoft.Teams.EEG/UIAutomationToolsComparison.html">here</a> [Microsoft internal link]</p>  <h5>Creating Automated Functional Tests using CUIT:</h5>  <p>A typical functional test encompasses a series of <b>Actions</b> to be performed on the application under test followed by set of <b>Validations</b> that will verify the functionality of the test application at that stage of execution.</p>  <p>The following are the steps to be followed to create a CodedUITest. The underlying sample application is a Form-filling application.</p>  <p>1. Start Visual Studio 2010 IDE</p>  <p>2. Click on “Test” menu and select “New Test”</p>  <p>3. Selected “CodedUITest” from the list of available test types and create a Project</p>  <p><i>Note: It is preferable to add the Test project to the Application’s solution itself so that the Test code will be built as part of the product code build process.</i></p>  <h5>Screenshot of the Application under Test:</h5>  <blockquote>   <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/App_2.jpg" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/App_2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="App" border="0" alt="App" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/App_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/App_thumb.jpg" width="215" height="244" /></a> </p> </blockquote>  <p><b></b><b></b><b></b></p>  <h5>Recording the actions and Generating code for Automated Test:</h5>  <p>1. From the Dialog that opens on creating a new instance of CUIT, Select “<b>Record Actions, Edit UIMap or Add Assertions</b>”</p>  <p>2. CodedUITest Builder Window opens just above the task bar with 4 buttons [ Record/Pause, View Actions, Add Assertions, Generate Code ]</p>  <p>3. Click on “<b>Record</b>” and Start performing actions on the Application.</p>  <p>In this example of Form-Filling Application, we will be keying in the details for <b>Name, DOB, Sex and Profession</b> fields and Click on <b>Submit</b> to generate some results</p>  <p>4. Now that we have recorded the application, we need to generate code for the recorded actions to create an automated test for the underlying scenario. To do so, Click on “<b>Generate Code</b>”</p>  <p>5. Key in a Name for the Method and Click on “<b>Add and Generate</b>”</p>  <blockquote>   <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/genREc_2.jpg" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/genREc_2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="genREc" border="0" alt="genREc" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/genREc_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/genREc_thumb.jpg" width="400" height="220" /></a> </p> </blockquote>  <h5>Inserting Assertions for validations:</h5>  <p>1. Any functional testing scenario is complete only if the validation is done for the actions done on the application. In our example, we will be validating the Output of the Results Textbox at the bottom.</p>  <p>2. To Insert Assertion, Click on “Add Assertion”. This opens up CodedUITest Builder in Assertion mode.</p>  <p>3. The Window has 2 panes.</p>  <blockquote>   <p>a. Left pane shows all the controls interacted till now. This is called UIMap Viewer.</p> </blockquote>  <blockquote>   <p>b. Right pane shows all the Properties of the selected control. This is called Property Explorer.</p> </blockquote>  <p>4. To add validation for a control that is already added to UIMap</p>  <blockquote>   <p>a. Click on the control in Left pane. Select the validation property. Right Click on it and Click “Add Assertion”</p> </blockquote>  <blockquote>   <p>b. In order to undo adding Assertion on the same session, Right Click on the property to select “Delete Assertion”</p> </blockquote>  <p>5. To add validation for a new control</p>  <blockquote>   <p>a. Point to the control on the Application. Use the Global Hot-key for Add Control to UIMap [ Win + I ]</p> </blockquote>  <blockquote>   <p>b. Same as above, select the validation property to Assert on and Key in the Assert Value in the dialog that opens up.</p> </blockquote>  <p>6. Click on “Generate code” to generate the code for the Assertion added.</p>  <blockquote>   <p>Code Snippet of the generated assertion:</p>    <p>/// &lt;summary&gt;</p>    <p>/// CheckResult - Use 'CheckResultExpectedValues' to pass parameters into this method.</p>    <p>/// &lt;/summary&gt;</p>    <p>public void CheckResult()</p>    <p>{</p>    <p>WinEdit rtbDetailsEdit = this.FormFillingApplicatiWindow.RtbDetailsWindow.RtbDetailsEdit;</p>    <p>// Verify that 'rtbDetails' text box's property 'Text' equals 'You are Hari born on 19 July 1988 working as Engineer</p>    <p>Assert.AreEqual(this.CheckResultExpectedValues.RtbDetailsEditText, rtbDetailsEdit.Text);</p>    <p>}</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/AddAssert_4.jpg" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/AddAssert_4.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AddAssert" border="0" alt="AddAssert" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/AddAssert_thumb_1.jpg" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/AddAssert_thumb_1.jpg" width="366" height="321" /></a> </p> </blockquote>  <h5>Contents of CodedUITest Project:</h5>  <p>1. <b>UIMap.uitest</b> – This is a xml file that is a repository for the UIObjects interacted in the test and the list of Recorded and Assertion methods added to the test</p>  <p>2. <b>UIMap.Designer.cs</b> – Auto-generated file [ Not to be edited by the users ] , which contains the Class definitions of the UIObjects in the UITest</p>  <p>3. <b>UIMap.cs</b> – Partial class, which is a place-holder for overriding the properties of the UIObjects in UIMap</p>  <p>4. <b>CodedUITest.cs</b> – Test Class that instantiates the UIMap in the current project and calls the Recorded and Assertion methods</p>  <p>5. <b>UserControls.cs</b> – Control Type classes for each of the types of the UIObjects added to the UITest file</p>  <blockquote>   <p>a. In case of a Winforms button, the generated UserControls class name will be <b>WinButton</b></p> </blockquote>  <blockquote>   <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/Cuit_Files_2.jpg" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/Cuit_Files_2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Cuit_Files" border="0" alt="Cuit_Files" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/Cuit_Files_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/balagans/WindowsLiveWriter/VisualStudio2010FunctionalTesting_FE54/Cuit_Files_thumb.jpg" width="244" height="227" /></a> </p> </blockquote>  <p>Finally, run the test to verify the scenarios / validations and hence the functionality of the application will be tested.</p>  <h5>Maintainability of CodedUITest:</h5>  <p>Any Application’s User interface is subject to change over the product cycle. This adds up to the maintainability cost of the automated functional tests. </p>  <p>In the context of CodedUITest, the recorded actions and assertions are code-generated on the controls in the application, which are found through a set of properties called “<b>Search and Filter Properties</b>”. In many instances, the functional tests are not agnostic to the changes in the application. So, the changes in the functional tests are highly vulnerable. The following segment will explain in detail about the series of the recommended steps that needs to be followed for fixing the CodedUITest for a corresponding change in the application.</p>  <h5>What are the possible changes in the Application that will affect CodedUITest?</h5>  <p>1. Change in the Expected Value of the Validation Property</p>  <p>2. Change in Value of the Search Properties.</p>  <p>3. Change in the UI Hierarchy of the control [ like moved to a different container ]</p>  <h5><strong><u>How to deal with changes in Validation properties:</u></strong></h5>  <p>1. The obvious solution would be to make the CodedUITest fail because of incorrect expected value. On the Error Stack Trace in Test results window, Click on the Assertion line link and fix the Expected value. </p>  <p>2. CodedUITest generated code has <b>a Partial class</b> from which the tester will have access to <b>Recorded methods, Assertion methods</b> and the <b>ExpectedValues</b> classes. So the other way to fix the expected value is to write an <b>Initialization function</b> that will change the expected value of the assertion. See sample code below</p>  <blockquote>   <p>//Partial Class Code</p>    <p>public partial class UIMap</p>    <p>{</p>    <p>/// &lt;summary&gt;</p>    <p>/// Method to set the Expected value to String.Empty</p>    <p>/// &lt;/summary&gt;</p>    <p>public void Init()</p>    <p>{</p>    <p>this.CheckResultExpectedValues.RtbDetailsEditText = String.Empty;</p>    <p>}</p>    <p>}</p> </blockquote>  <blockquote>   <p>//CodedUITest Class Code</p>    <p>[TestMethod]</p>    <p>public void CodedUITestMethod1()</p>    <p>{</p>    <p>UIMap map = new UIMap();</p>    <p>//Call Init() to reset the Expected value</p>    <p>map.Init();</p>    <p>//Call Assertion method</p>    <p>map.CheckResult();</p>    <p>}</p> </blockquote>  <h5>How to deal with changes in Search properties:</h5>  <p>Any change in Search Properties will result in failure of Recorded methods as well as the assertions added, as both are dependent on the Search properties of the underlying control.</p>  <p>1. One of the recommended solutions is to <b>re-fetch the control to the UIMap</b>. Add the new control to the UIMap and generate code to reflect the changes of the UIMap in the code. To update the code replace all instances of the old object with the new object added. </p>  <blockquote>   <p>a. This can be done by copying the “Reference of the new and old Object to clipboard” and do a Find-replace in the Test project</p> </blockquote>  <blockquote>   <p>b. You may also delete the old object from the UIMap by clicking on the “<b>Delete</b>” button on CodedUITest builder toolbar. This can be done only when no references to the object is present in the test classes.</p> </blockquote>  <blockquote>   <p>c. Note that, we need to generate code from updated UIMap to remove the obsolete UIObjects in UIMap.Designer.cs file.</p> </blockquote>  <p>2. Search properties can be overridden inside the <b>Partial class</b> using some Initialization methods. See sample code below</p>  <blockquote>   <p>/// &lt;summary&gt;</p>    <p>/// Method to override the Search properties in UITest</p>    <p>/// &lt;/summary&gt;</p>    <p>public void ChangeProperties()</p>    <p>{</p>    <p>this.FormFillingApplicatiWindow.SubmitWindow.SearchProperties[WinProperties.Window.Name] = &quot;SubmitDetails&quot;;</p>    <p>}</p>    <p>//CodedUITest Class Code</p>    <p>[TestMethod]</p>    <p>public void CodedUITestMethod1()</p>    <p>{</p>    <p>UIMap map = new UIMap();</p>    <p>//Call ChangeProperties () to change the search properties</p>    <p>map.ChangeProperties ();</p>    <p>//Call Recorded method</p>    <p>map.Bvtmethod();</p>    <p>}</p> </blockquote>  <p>3. The last resort would be edit the UITest [xml formatted] file directly and “Generate Code” for the changes to reflect in UIMap.Designer.cs file. This is not the recommended way as editing the UITest incorrectly may result in incorrect functionality.</p>  <h5>Ready to try out CodedUITest?</h5>  <p>Visual Studio 2010 Beta2 is available in this <a href="https://msdn.microsoft.com/en-us/teamsystem/dd408375.aspx">link</a>.</p>  <p>Visual Studio Beta2 Forum : <a href="https://social.msdn.microsoft.com/Forums/en-US/vsautotest/threads">https://social.msdn.microsoft.com/Forums/en-US/vsautotest/threads</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Using Visual Studio Team Test for running tests in Developer Environment</title>
      <link>https://docs.microsoft.com/archive/blogs/balagans/using-visual-studio-team-test-for-running-tests-in-developer-environment</link>
      <pubDate>Thu, 17 Sep 2009 10:33:00 GMT</pubDate>
      <dc:creator><![CDATA[Balagans]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balagans/2009/09/17/using-visual-studio-team-test-for-running-tests-in-developer-environment/</guid>
      <description><![CDATA[A developer environment is typically a development machine where the product sources and...]]></description>
      <content:encoded><![CDATA[<p>A developer environment is typically a development machine where the product sources and corresponding unit tests are present in an enlistment. Many a times, a developer may need to block their feature development in order to run unit tests for some of the bugs in their queue. It is a productivity blocker because many instances of unit tests needs to be run in unattended mode[ in case of Functional tests specially ] </p> <p><strong>Visual Studio Team Test [VSTT]</strong> comes to the rescue in these situations !  <p>VSTT encompasses a <strong>Test Controller-Test Agent setup</strong> for facilitating <strong>Remote Execution of automated tests</strong>. The following will briefly give an idea of the High level architecture .  <h5><u>Prerequisites :</u></h5> <ul> <li>Development machine has Visual Studio Team System installed with product and test sources  <li>A Test machine that is a mimic of the Developer machine [ where the tests will be run ]</li></ul> <h5><u>Setting up the Controller - Agent :</u></h5> <ul> <li>Install VSTT Controller on the Developer machine using the below steps and configure it appropriately </li></ul> <ol> <li>Enter the credentials, in case the tests needs to be run on a different credential from Network Service  <li>Apply Settings</li></ol> <blockquote> <p><a href="https://ywlveq.blu.livefilestore.com/y1mHW_bQB6fyexJ0BmEEd7Y5uF6Y2-wxXjnap7U-1zmOh5EY-r6zrFWuZrHlcNUit1Z-CtRdFAoyB-t8x4u2-wFynml_6FCI1Ki9qaVBr8KJk7580qokv6K2RJc1VlTWqrcZ00KaJmw-yXKEl5F6DE4uA/Controller[5].jpg"><img title="Controller" border="0" alt="Controller" src="https://ywlveq.blu.livefilestore.com/y1mqzEZKQnWspwEb4kbZPta4BiMwQyjkWOfvuUN2JqRzzeUiqmczmASaEALTDU8_XLt2ckEPvKMzJAfyZO6nwejwfXldWI9ZjEHJXiT50ab1iPsUfGvZPFMbMZISUuMhxCA7Tc2zvhQlz7eGAKXMxuHdw/Controller_thumb[3].jpg" width="542" height="387"></a></p></blockquote> <ul> <li>Install VSTT Agent on the test machine, which is already setup with all the needed configuration and settings for the unit tests to run  <ol> <li>Enter the credentials, in case the tests needs to be run on a different credential from Network Service  <li>Connect the Agent to the configured Controller which is setup above  <li>Apply Settings</li></ol></li></ul> <blockquote> <p><a href="https://ywlveq.blu.livefilestore.com/y1mEhLErlSzdGLFAqqHQi1t8HvEGZ2ESC-AZALWNnEF7BRft1Ko7sByxRcXXcn5mfZzxM4YdIZ75vdUDhI1-ux_c3S5tHat6VN1HeZ2qPdmWzDrnb6F_ZvrlM62Yq2jRCl3yNjJJuu-_s-JK7Q0QRlwsA/Agent[5].jpg"><img title="Agent" border="0" alt="Agent" src="https://ywlveq.blu.livefilestore.com/y1mOwDLiq9kRWLFz9R2JZ_8ciPgR35K80KW1vlI9qgshNM5MTKL7Ha05ojXgoZa5I7xK258JX1HC_f5xkKt5yLWtz7B_szEC91U3XxbyuRVMMaMe-lLXp7Gfm-vND7FBNtQNnNzA5B3WPBU5D0_7uEmFw/Agent_thumb[3].jpg" width="548" height="348"></a></p></blockquote> <p>Note : In case of running Automated UI tests [ or CodedUITest ], the Agent should be running as an Interactive process instead on Service to act on the UI Components under desktop.  <h5><u>Running Test using Controller - Agent :</u></h5> <ul> <li>Open the product sources in Visual Studio along with the corresponding test entities [ including *.testSettings ]  <li>Open Test-Settings file and Click on Role, and Select "<strong>Remote Execution</strong>" and Enter the <strong>Test Controller machine name .</strong></li></ul> <blockquote> <p><a href="https://ywlveq.blu.livefilestore.com/y1mY8rbQ-p6ZT4gXbpqUDFBcuNN4RQS9udRNC6Vi00kcN0LpyjGDuWYHgOegpaLYlEjwgu1ZsdN8dgjoIvjHi1bK1QmNkFgKWh8DQ2_lyfblsGjAPT9GvfyKqsSBn7xw2MIGafVBKK0FWMiCkNkPBkQZg/TestSettings[11].jpg"><img title="TestSettings" border="0" alt="TestSettings" src="https://ywlveq.blu.livefilestore.com/y1m1fOKvt-Pkj3gs2hwcskaBnFOQoC6gIHQup0UIfTsIXSxYae87bjoAsbNtbjmm5VxqVd739Vzy6A2AZoXxADKzStx73VDz2851juHSK2hngs_OH_lscbWgM3mYDZCXqdZb8XLFebwUR2C9HRH5o3LFg/TestSettings_thumb[7].jpg" width="555" height="412"></a></p></blockquote> <ul> <li>In order to control the load on each of the agents, we can Filter the Agents in which the tests needs to run by giving a Attribute Name and Value condition. These Attributes are assigned via "Manage Test Controllers" options under "Test" menu in Visual-Studio IDE </li></ul> <blockquote> <p><a href="https://ywlveq.blu.livefilestore.com/y1msmCNifNRuPzbFNA-4_4XDFs3Ffj-Vt2dNTNXNh8DQUC5VhgQpdb3J0pzWbWDO8Tz5ECcx72pB8AoF9f52IGFeXQ8VXJhMZSpyc6CkyrV6A6lWHPnkznJkyXrLAl1lWZII0FiJAJPcPfmcbMUBAD2IA/Manage[5].jpg"><img title="Manage" border="0" alt="Manage" src="https://ywlveq.blu.livefilestore.com/y1mx7pFDDAQVnXPYHhMe7kVAE-OycV1U2nwstVPKouyLim9v3WdjsKfaIebouOrsAQH3X6lC_rIms8fjChgEr8kgYgkBidYuAJ49ZfHPllIjAVI3OvEs298jWulO9jSEm0Gk7Y-4IHSVC0rfCP5t6Kj3w/Manage_thumb[3].jpg" width="368" height="272"></a></p></blockquote> <ul> <li>Start running tests from Test View and see the results in "Test Results" pane. </li></ul> <h5><u>Advanced Options :</u></h5> <p>Controller - Agent setup allows the test to collect more information from the test machine using "<strong>Data Collectors</strong>"  <ol> <li>Some of the Data Collectors are Event Log, System Information and Code-coverage</li></ol> <h5><u>Deployment : </u></h5> <ol> <li>Test Binaries and dependant binaries needs to be given as<strong><em> Deployment Files and Folders</em></strong> in Test settings  <li>So the best practice would be to build the solution with <strong>Outdir path</strong> set in<strong> Build Command</strong> and use the corresponding Folder in Test settings</li></ol> <p>Note : The Symbol “*” beside the name of the Agent indicates that it is running as an Interactive process and is ready top run CodedUITest or any Automated tests that interacts with desktop  ]]></content:encoded>
    </item>
  </channel>
</rss>