<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Musings of a tester testing test tools! : Automation</title><link>http://blogs.msdn.com/anutthara/archive/tags/Automation/default.aspx</link><description>Tags: Automation</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Running tests in mstest without installing the VS IDE</title><link>http://blogs.msdn.com/anutthara/archive/2009/12/16/running-tests-in-mstest-without-installing-the-vs-ide.aspx</link><pubDate>Wed, 16 Dec 2009 10:52:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9937577</guid><dc:creator>anutthara</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/anutthara/comments/9937577.aspx</comments><wfw:commentRss>http://blogs.msdn.com/anutthara/commentrss.aspx?PostID=9937577</wfw:commentRss><description>&lt;p&gt;&lt;font color="#000080"&gt;Yes, you CAN run your unit tests or any other VS test type on a machine without having Visual Studio IDE installed on that machine. You need the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=165574"&gt;Visual Studio Team Agent&lt;/a&gt; to be installed on your test machine to run your tests. This is a 15 min lightweight install and is pretty easy to &lt;a href="http://msdn.microsoft.com/en-us/library/dd648127(VS.100).aspx"&gt;configure&lt;/a&gt;. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;Those of you familiar with remote testing from our previous versions, will already know that &lt;a href="http://msdn.microsoft.com/en-us/library/dd293551(VS.100).aspx"&gt;you can trigger a test run on the client to run tests on a remote machine&lt;/a&gt; with the test agent installed. Just use the test settings to point to a test agent where your tests can run remotely. With the VS Team Agent installed on machine A and the client (VS Ultimate or Pro or Test Elements) installed on machine B, you can run tests remotely on A by triggering the run from client B. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;Another alternate scenario where you would want to run tests without having the Visual Studio IDE installed is during builds. If you use Team Build to do builds and run tests as part of your build process, you can setup the build agent on a machine with no VS IDE installed. You can now go ahead and run all your tests without any additional installs on the build machine in VS 2010. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;What if you want to run mstest from the command line though? You can choose to run mstest.exe from either the test agent or the build agent to run tests, but note that you can run only the unit test and ordered test types. &lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9937577" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/anutthara/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/anutthara/archive/tags/Automation/default.aspx">Automation</category></item><item><title>What’s new for testers doing UI automation in VS 2010 Beta2?</title><link>http://blogs.msdn.com/anutthara/archive/2009/10/25/what-s-new-for-testers-doing-ui-automation-in-vs-2010-beta2.aspx</link><pubDate>Mon, 26 Oct 2009 05:31:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9912783</guid><dc:creator>anutthara</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/anutthara/comments/9912783.aspx</comments><wfw:commentRss>http://blogs.msdn.com/anutthara/commentrss.aspx?PostID=9912783</wfw:commentRss><description>&lt;p&gt;&lt;font color="#000080"&gt;We are back in Beta2 with a bunch of new stuff in Coded UI test for UI automation testers. First up, the code generation in Coded UI test has been changed to structure the code in a much more usable and intuitive way:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;1. All the UI elements you interact with, whether part of recording or added from the UI control locator, all go into a single UI Map – a single collection of all the UI objects in your test. So, you can now edit objects from a single store&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;2. Every assertion you add is now a method in itself which takes parameters where you can define the expected value to assert on. So, you can now separate the test into logical actions and assertions&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;3. The recorded methods also have input parameters defined on them that help make data driving easier to do. So, you can now data drive the method by changing the values of the input parameters that go into the recorded method. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;For example, if you were testing the new user sign up in hotmail.com and checking if a certain id’s availability is displayed correctly, you can record steps to open hotmail.com, go to sign up page, enter a particular id and press “check availability” button.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;The coded UI test project generated has 4 files – the coded UI test .cs file (TestHotmail.cs) containing the test method, UIMap.uitest file which is an XML representation of all the UI elements and actions/assertions performed on each UI object, the UImap.designer.cs file which is the code-behind for the .uitest file containing code for the objects and actions, the UIMap.cs is a file containing a partial definition of the UImap class to help preserve user customizations to the test code. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;&lt;u&gt;TestHotmail.cs&lt;/u&gt; – contains the actual test method and invocations to recorded methods and assertions&lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;[&lt;span style="color: #2b91af"&gt;CodedUITest&lt;/span&gt;] &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TestHotmail&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="color: #2b91af"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;[&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; TestNewUserSignUp()&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;{ &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.UIMap.GotoSignUpPage(); &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.UIMap.CheckAvailabilityOfId(); &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;.UIMap.VerifyIdAvailable(); &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt;}&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;font color="#000080"&gt;&lt;u&gt;UIMap.designer.cs – &lt;/u&gt;contains the definitions of the recorded methods, assertions and UI objects. Plus also contains the parameter class definitions passed into each class &lt;/font&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; color: blue; font-size: 9.5pt"&gt;public&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;UIMap&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{ &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; GotoSignUpPage() &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;HtmlInputButton&lt;/span&gt; signupButton = &lt;span style="color: blue"&gt;this&lt;/span&gt;.SignInWindowsInterneWindow.HttploginlivecomlogiClient.SignInDocument.SignupButton; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// Click 'Sign up' button&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Mouse&lt;/span&gt;.Click(signupButton, &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Point&lt;/span&gt;(&lt;span style="color: brown"&gt;47&lt;/span&gt;, &lt;span style="color: brown"&gt;11&lt;/span&gt;)); }&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; CheckAvailabilityOfId() &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{ &lt;span style="line-height: 115%; font-family: consolas; color: #2b91af; font-size: 9.5pt; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;HtmlEdit&lt;/span&gt;&lt;span style="line-height: 115%; font-family: consolas; font-size: 9.5pt; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt; imembernameliveEdit = &lt;span style="color: blue"&gt;this&lt;/span&gt;.SignupWindowsLiveWinWindow.HttpssignuplivecomsiClient.SignupWindowsLiveDocument.ImembernameliveEdit;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// Type 'anutthar' in 'imembernamelive' text box&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;imembernameliveEdit.Text = &lt;span style="color: blue"&gt;this&lt;/span&gt;.CheckAvailabilityOfIdParams.ImembernameliveEditText; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;// Click 'Check availability' button&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Mouse&lt;/span&gt;.Click(checkavailabilityButton, &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Point&lt;/span&gt;(&lt;span style="color: brown"&gt;88&lt;/span&gt;, &lt;span style="color: brown"&gt;15&lt;/span&gt;));&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}}&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="color: green"&gt;// Input parameter into the CheckAvailabilityOfId recorded method&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="color: green"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CheckAvailabilityOfIdParams&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; ImembernameliveEditText = &lt;span style="color: #a31515"&gt;&amp;quot;anutthar&amp;quot;&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt; &lt;font face="Consolas"&gt;&lt;/font&gt;&lt;font color="#000080"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#000080"&gt;Other than that, the CUIT builder has gone through a major redesign and morphed into a stack bar at the bottom of your screen with pop up dialogs for the control locator, actions viewer, generate code etc. More on that in the next post &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;We’ve also added support for virtualized controls in WPF. You will need to wait until the UI Automation 3.0 APIs are available to get this working though. But this should certainly help WPF programmers trying to write tests on their UI apps.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080"&gt;Go ahead, give CUIT a spin and tell us what you think… &lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9912783" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/anutthara/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/anutthara/archive/tags/Automation/default.aspx">Automation</category><category domain="http://blogs.msdn.com/anutthara/archive/tags/Coded+UI/default.aspx">Coded UI</category></item><item><title>Using regular expressions to locate controls in Coded UI Test</title><link>http://blogs.msdn.com/anutthara/archive/2009/08/19/using-regular-expressions-to-locate-controls-in-coded-ui-test.aspx</link><pubDate>Wed, 19 Aug 2009 13:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9875353</guid><dc:creator>anutthara</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/anutthara/comments/9875353.aspx</comments><wfw:commentRss>http://blogs.msdn.com/anutthara/commentrss.aspx?PostID=9875353</wfw:commentRss><description>&lt;P&gt;&lt;FONT color=#000080&gt;When testing UI applications, you often want to locate a control on the app under test that has dynamic properties. For instance, when you login into a website, there may be a link/label on the first page that says “Welcome user, UserName1”. Now this username is going to change as per the user that logged in. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;While writing a coded UI test to locate this label however, the search properties are set to &lt;/FONT&gt;&lt;FONT color=#000080&gt;the value that was found during recording. While playing back if you logged in as a new user, the search fails since it was looking for “UserName1” instead of your logged in “UserName2”. To address this, you can tweak the search properties of the control you are using:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;UITestControl lblObj = new UITestControl(); &lt;BR&gt;lblObj.SearchProperties.Add("InnerText", "Welcome", PropertyExpressionOperator.Contains);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;The above code uses “Contains” to ensure that it is searching for a string containing the substring “Welcome”. If you need a more accurate search, you might want to use regular expressions for matching the title. Unfortunately, we don’t have built in support to match the a search property against a given regular expression. However, you can write code to find the set of labels that are under a given hierarchy and match each of their inner text properties against a regular expression of your choice using the standard .NET APIs&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9875353" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/anutthara/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://blogs.msdn.com/anutthara/archive/tags/Automation/default.aspx">Automation</category><category domain="http://blogs.msdn.com/anutthara/archive/tags/Coded+UI/default.aspx">Coded UI</category></item><item><title>But will the dog eat the dog food?</title><link>http://blogs.msdn.com/anutthara/archive/2007/07/11/but-will-the-dog-eat-the-dog-food.aspx</link><pubDate>Wed, 11 Jul 2007 11:40:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3811662</guid><dc:creator>anutthara</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/anutthara/comments/3811662.aspx</comments><wfw:commentRss>http://blogs.msdn.com/anutthara/commentrss.aspx?PostID=3811662</wfw:commentRss><description>&lt;p&gt;&lt;font color="#000080"&gt;Since I am a tester on the Test edition of VSTS - I get this q a lot of times: "Do you use VSTST for testing VSTST?" And the answer is "You bet, I do!" :) &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000080"&gt;As you might know already, this is called "&lt;/font&gt;&lt;a href="http://en.wikipedia.org/wiki/Eat_one%27s_own_dog_food"&gt;&lt;font color="#0080ff"&gt;Dogfooding&lt;/font&gt;&lt;/a&gt;&lt;font color="#000080"&gt;".&amp;nbsp;Many Microsoft products are dogfooded extensively before release - Vista, MSN Search, Visual Studio, Team System... &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000080"&gt;Our devs use unit test types to write their developer regression tests. Our QA team uses unit tests to write our functional tests. Yes, I know this is not a perfect fit for UI heavy testing, but it does suffice for the time being. We use generic tests to wrap our legacy tests that may be scripts or batch files. Load tests are added to the test bed to do stress testing on the app. All of this goes into the TFS server that we have deployed for the entire Developer Division and testing performed out of it. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000080"&gt;Like any other user, I have my own set of pet features and pet peeves in TST. I absolutely love the code coverage coloring, the "Run test" from the editor (Orcas feature), the ease with which load tests can be configured and the controller-agent functionality. It makes my life so much easier as a tester. Not to mention that it's incredibly easy to point out to devs where the problems are and associate results with bugs since we use TFS for work item tracking. Now for the bad parts - I think the test list feature is absolutely useless for large test projects. The UI confuses me - more than once, I have selected a test in the window, right clicked and said "Run checked tests", but some other tests start running!! That's because selecting a run is not the same as checking it. :( I have a wishlist as well - stuff like test case management being easier to handle, the test run results being easier to analyze etc.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000080"&gt;The best part of dogfooding is that this is a good chance to know which features are likely to be real relief and which ones are mostly going to tick the users off. Testers being the first customers of the tool is literally true in this case. Plus the QA team gets additional testing in the process so that bugs/suggestions are filed before outside users get a chance to go at it. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000080"&gt;So, do &lt;strong&gt;you &lt;/strong&gt;eat your own dogfood? ;-)&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3811662" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/anutthara/archive/tags/Team+System/default.aspx">Team System</category><category domain="http://blogs.msdn.com/anutthara/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.msdn.com/anutthara/archive/tags/Dogfood/default.aspx">Dogfood</category><category domain="http://blogs.msdn.com/anutthara/archive/tags/Automation/default.aspx">Automation</category></item></channel></rss>