<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">VS Team System for Database Professionals QA Blog</title><subtitle type="html">This blog exposes how we go about testing our product.  Our thoughts, methodologies, lessons learned, how we understand the customer, and what we're trying next
</subtitle><id>http://blogs.msdn.com/jeffdw/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/jeffdw/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/jeffdw/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2006-06-14T21:02:00Z</updated><entry><title>Visual Studio Team System will be holding a Web Chat on December 5th.</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/jeffdw/archive/2007/12/04/visual-studio-team-system-will-be-holding-a-web-chat-on-december-5th.aspx" /><id>http://blogs.msdn.com/jeffdw/archive/2007/12/04/visual-studio-team-system-will-be-holding-a-web-chat-on-december-5th.aspx</id><published>2007-12-05T00:49:00Z</published><updated>2007-12-05T00:49:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;If you're doing .NET or database testing, Team System is holding a web chat tomorrow that may be of interest to you.&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;And now, a word from my sponsor: ;)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Come chat with the Visual Studio Team System group tomorrow&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Join members of the Visual Studio Team System product group to discuss features available in Team Foundation Server, Team Suite, Architecture Edition, Development Edition, Database Edition, and Test Edition. In addition, discuss what's new for these editions for Visual Studio 2008.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;We will be holding two sessions:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Join the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/chats"&gt;&lt;FONT face=Calibri size=3&gt;chat&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; on Wednesday, December 5th, 2007 from 10:00am - 11:00am Pacific Time. &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/communities/chats/vcs/07_1205_msdn_VSTS10.ics"&gt;&lt;FONT face=Calibri size=3&gt;Add to Calendar&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; | &lt;/FONT&gt;&lt;A href="http://www.timeanddate.com/worldclock/fixedtime.html?month=12&amp;amp;day=5&amp;amp;year=2007&amp;amp;hour=10&amp;amp;min=0&amp;amp;sec=0&amp;amp;p1=234"&gt;&lt;FONT face=Calibri size=3&gt;Additional Time Zones&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt"&gt;&lt;BR&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -and-&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Join the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/chats"&gt;&lt;FONT face=Calibri size=3&gt;chat&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; on Wednesday, December 5th, 2007 from 4:00pm - 5:00pm Pacific Time. &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/communities/chats/vcs/07_1205_msdn_VSTS4.ics"&gt;&lt;FONT face=Calibri size=3&gt;Add to Calendar&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; | &lt;/FONT&gt;&lt;A href="http://www.timeanddate.com/worldclock/fixedtime.html?month=12&amp;amp;day=5&amp;amp;year=2007&amp;amp;hour=16&amp;amp;min=0&amp;amp;sec=0&amp;amp;p1=234"&gt;&lt;FONT face=Calibri size=3&gt;Additional Time Zones&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6658228" width="1" height="1"&gt;</content><author><name>JeffDW</name><uri>http://blogs.msdn.com/members/JeffDW.aspx</uri></author></entry><entry><title>Achieving breadth of testing while remaining agile.  The Data-Driven P1 test:  Our new bread &amp; butter</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/jeffdw/archive/2007/11/16/achieving-breadth-of-testing-while-remaining-agile-the-data-driven-p1-test-our-new-bread-butter.aspx" /><id>http://blogs.msdn.com/jeffdw/archive/2007/11/16/achieving-breadth-of-testing-while-remaining-agile-the-data-driven-p1-test-our-new-bread-butter.aspx</id><published>2007-11-17T00:42:00Z</published><updated>2007-11-17T00:42:00Z</updated><content type="html">&lt;P&gt;Wow, I just looked at the date of my last post and had no idea it had been that long.&amp;nbsp; This have been rather crazy with VS 2008 signoff, hiring to do, and lots of feature team leadership matters to cover.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;In my last post I talked about P0 tests being the mechanism by which we stay tightly coupled with dev work and get tests in place very quickly after feature implementation.&amp;nbsp; This model continues to work well for us, though the 24-hour turnaround that we shoot for is not something we always achieve.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Anyway, once QA is actively engaged with Dev, has identified and implemented initial P0 tests, what's next on the priority list?&amp;nbsp; Of course, you're going to need to expand both the breadth and depth of scenarios that you hit in the P0 tests.&amp;nbsp; There are a number of ways that QA can go about this.&amp;nbsp; Here are&amp;nbsp;a couple&amp;nbsp;of the approaches we've&amp;nbsp;taken before:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The classic approach is to write up a detailed test plan, including all of the test cases you plan to automate.&amp;nbsp; Once you have a few tests in place, you continually clone them and alter them, somewhat, for each new scenario.&amp;nbsp; By the time you're done you have hundreds, if not thousands, of nearly-identical tests that have minor differences to cover various scenarios.&amp;nbsp; The drawbacks of this approach are many, and in many ways are all&amp;nbsp;due to having &lt;STRONG&gt;insufficient abstraction in your test automation&lt;/STRONG&gt;:&amp;nbsp;&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;If the feature design changes in such a way as to make the tests invalid, you must go in and repair hundres, if not thousands, of tests.&amp;nbsp; "Clone and alter" is very fragile&lt;/LI&gt;
&lt;LI&gt;The logical 'input data' for the test is hard-coded into the test itself.&amp;nbsp; This not only means the test isn't flexible, but also that it is extremely difficult to review what is and is not being covered by your tests.&amp;nbsp; It's bad engineering to merge your data and logic, but QA does it all the time.&lt;/LI&gt;
&lt;LI&gt;Nobody outside of QA is really able to improve the test suite since devs are unlikely to go about cloning and altering tests that a QA owner has.&amp;nbsp; &lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;Utilize model-based testing (MBT) to maximize abstraction and code reuse as you generate a broad set of product tests.&amp;nbsp; We've tried 3 different MBT tools over the last few product cycles I've been in.&amp;nbsp; We've had some success, and there's no doubt that the approach forces greater test abstraction; nevertheless, we've moved away from using MBT for a few key reasons:&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;Individual tests become almost indecipherable to those who did not work on them&lt;/LI&gt;
&lt;LI&gt;In order to avoid 'model explosion' (your model spits out tens of thousands of tests), you have to choke the model to the point that you lose key benefits of MBT&lt;/LI&gt;
&lt;LI&gt;Test data is &lt;EM&gt;somewhat&lt;/EM&gt; abstracted from individual tests, but the data sets are usually not easily accessible and often not very granular.&lt;/LI&gt;
&lt;LI&gt;Using MBT you REALLY can't clearly explain to Dev what the purpose of each test is.&lt;/LI&gt;
&lt;LI&gt;Getting a model going is very time-consuming.&amp;nbsp; The approach is simply not at all agile.&lt;/LI&gt;&lt;/OL&gt;&lt;/UL&gt;
&lt;P&gt;OK, with all of this said (or, perhaps,&amp;nbsp;resaid as I mentioned several of these points in earlier posts), what approach are we taking to meet our key goals of agility, data separation, code reuse, and transparency to other disciplines?&amp;nbsp; Well, most all of our P1 tests are data-driven both in terms of input data as well as verification.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;Some of you may have used data-driven testing through nUnit or VSTT in which you associate a test with a data-source for input data.&amp;nbsp; That data source may be a&amp;nbsp;table in SQL Server, an Excel spreadsheet,&amp;nbsp;or, perhaps,&amp;nbsp;an .mdb.&amp;nbsp; We're taking&amp;nbsp;this aproach&amp;nbsp;a step or two&amp;nbsp;further and, so far, we're seeing improved results&amp;nbsp;across QA than we've seen in previous cycles and much better feedback from Dev as that discipline feels like it understands what it is that we're testing.&lt;/P&gt;
&lt;P&gt;Our QA team has created and continues to expand and maintain a single SQL Server 2005 database dedicated to our team's data-driven testing.&amp;nbsp; Within this database we have created a variety of schemas, one per feature area and&amp;nbsp;one schema for shared data.&amp;nbsp; Tables within the database are of two basic types, input data and verification data.&lt;/P&gt;
&lt;P&gt;Input data tables contain all data and associated metadata (I know this sounds cryptic, but in subsequent posts I'll give specific details on some of the tables that we use in our team).&amp;nbsp; Our QA feature owners are expected not only to cover all the scenarios they can with data in their input tables, but also to ensure that Dev and PM not only have the chance to review those data but also to encourage them to input additional data for the tests as they identify it.&amp;nbsp; This focus on input data, rather than on imperitive test logic, means that Dev, PM, and other QA team members who don't own a given feature can contribute to the test coverage of that feature simply by knowing the breadth of input data that a feature should support.&lt;/P&gt;
&lt;P&gt;Verification tables all have a foreign key relationship to an input data table.&amp;nbsp; The data contained in a verification table may be pure baselines (a bad idea), or an abstraction such as RegEx, an XML representation of expected object state, or whatever.&amp;nbsp; This means that a single input data table may have multiple associated Verification tables (in other words, there is a 1...n relationship between input tables and verification tables), each of which may verify some of the same data in different ways for different test cases.&amp;nbsp; For most test cases, the input test data used in the test is limited to those data having associated verification.&lt;/P&gt;
&lt;P&gt;My next post will go into specifics of some of our input and verification tables&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6318744" width="1" height="1"&gt;</content><author><name>JeffDW</name><uri>http://blogs.msdn.com/members/JeffDW.aspx</uri></author></entry><entry><title>"What is QA doing?!?":  Moving QA into an iterative, Agile environment with 'P0' testing</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/jeffdw/archive/2007/09/23/what-is-qa-doing-kill-this-question-quickly-or-it-will-kill-you.aspx" /><id>http://blogs.msdn.com/jeffdw/archive/2007/09/23/what-is-qa-doing-kill-this-question-quickly-or-it-will-kill-you.aspx</id><published>2007-09-24T04:43:00Z</published><updated>2007-09-24T04:43:00Z</updated><content type="html">&lt;P&gt;Our single biggest misstep in our test approach last version&amp;nbsp;was that we failed to sufficiently change our testing methodologies to fit the Agile environment under which we developed our V1 product.&amp;nbsp; As we&amp;nbsp;had done in our previous years here at MS, we placed our emphasis on system-level, UI-based test automation, which had served us well in the past when working under more of a waterfall model.&lt;/P&gt;
&lt;P&gt;So, what did our test approach look like heading into V1?&amp;nbsp; Well, let me try to encapsulate a book-sized chunk of info into a succinct, semi-directed list:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Receive the initial feature specs&lt;/LI&gt;
&lt;LI&gt;Review and provide feedback on the spec&lt;/LI&gt;
&lt;LI&gt;Create a comprehensive test plan based on the spec.&amp;nbsp; The focus of the test plan is at the system level, meaning that it is abstracted more or less at an end user action level&lt;/LI&gt;
&lt;LI&gt;Determine the supporting test libraries, both UI and non-UI, to be authored&lt;/LI&gt;
&lt;LI&gt;Author supporting libraries as you author automation.&amp;nbsp; This is a labor-intensive process, particularly for the UI libraries as they are not only complex, but also fragile, being highly succeptible to product changes&lt;/LI&gt;
&lt;LI&gt;Author test automation&lt;/LI&gt;
&lt;LI&gt;Excecute recurring test runs in a test management environment upon which our automation was entirely dependent&lt;/LI&gt;
&lt;LI&gt;Repair automation as product changes occur&lt;/LI&gt;
&lt;LI&gt;Expand and further abstract the supporting libraries to enable model-based testing tools to generate broad suites of tests to be used as static regression tests.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;We found that following this traditional, system-level testing approach our automation was consistently about a sprint behind feature implementation.&amp;nbsp; This gap led to many unintended consequences:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;For about a sprint, there was little to no consistent QA automation backing up some features, meaning that serious breaks could go uncaught for far too long&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;QA and Dev were at different points in the feature development timeline, severely dampening critical QA/Dev person-to-person conversations.&amp;nbsp; Simply, Devs were focusing on implementing new features while QA was still looking at the 'old stuff' in an effort to get automation in place&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Changes made to the product meant that QA would, at times, spend time working on supporting libraries that were now out of date&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;QA constantly felt behind, putting a damper on the amount of time that many QA feature owners devoted to critical hands-on testing.&amp;nbsp; Getting the automation in place and keeping it running&amp;nbsp;was soaking up too much time.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;As we moved on to V2 and looked back at the lessons learned, it was clear that we needed to make a number of bold steps:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;QA and Dev owners of the same feature &lt;EM&gt;must&lt;/EM&gt; work in a far more collaborative fashion and develop strong interpersonal relationships and a sense of joint ownership of their feature.&amp;nbsp; This was accomplished by some owners in V1, but we needed it to be more broadly true in the organization.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;QA cannot afford to focus all, or even the majority,&amp;nbsp;of its testing efforts at a system level as can be done in a waterfall environment.&amp;nbsp; Instead, much of QA's efforts must be at the subsystem level.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;When a new feature comes online or is significantly altered, QA needs to get some high-pri tests automated immediately before moving on to broader testing.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;The overhead of test automation must be made far lighter to free up time for additional QA hands-on testing early in a feature's life and QA management must ensure that such testing is a highly valued priority.&amp;nbsp; To lighten the overhead, use of UI-driven automation is avoided, instead leveraging API testing and DTE testing.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;To further strengthen Dev/QA synergy, all Dev unit tests and QA tests are run together on a nightly basis.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;The P0 test:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The initial focus of test automation is what we call the 'P0' test.&amp;nbsp; This is the quick-turnaround automation that ensures that QA and Dev are in synch, gets regression automation in place quickly, and&amp;nbsp;seeks to push&amp;nbsp;QA/Dev to stay in synch through the cycle.&amp;nbsp; Here are the basic requirements for P0 tests:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;They should be automated and in place within 1 day after a feature or feature change appears in the build.&amp;nbsp; In order to make this happen, P0s must be few in number (this is by design) and Dev must give QA a heads-up on the changes being made &lt;EM&gt;before&lt;/EM&gt; they are checked in.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;P0 tests must be associated with the dev workitem(s) that they cover.&amp;nbsp; This is recorded in the tests' metadata&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;P0 tests must have been agreed to by both Dev and QA before they are implemented.&amp;nbsp; Both should agree that failure of the test represents a critical failure.&amp;nbsp; If not, the scenario envisioned is likely a P1 or P2 test (I'll cover those in another posting)&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;P0 tests must not duplicate Dev unit tests but, instead, be at a bit more abstract level, what we call 'API integration testing'.&amp;nbsp; What does this mean?&amp;nbsp; Well, if you have methods A, B, and C, Dev should have unit tests for each; however, QA P0 tests will cover how A, B, and C interact.&amp;nbsp; B may appear to work correctly and C may appear to work correctly, but if C is dependent upon upstream action from B and that integration point is faulty, QA should catch it.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;All P0 tests are run on a nightly basis.&amp;nbsp; Many P0 tests are also labeled as being 'check-in' tests and must be run by Dev before any code check-in takes place.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;This is a 100k foot view of something that we've spent a lot of time on and, as I read the post, can see that it may be confusing in many ways on its own.&amp;nbsp; As I follow-up with more info on other testing that we are doing, though, I hope that the place of P0 testing is put into proper context&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5085666" width="1" height="1"&gt;</content><author><name>JeffDW</name><uri>http://blogs.msdn.com/members/JeffDW.aspx</uri></author></entry><entry><title>Rededication and retargeting of this blog to a pure QA focus</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/jeffdw/archive/2007/09/19/rededication-and-retargeting-of-this-blog-to-a-pure-qa-focus.aspx" /><id>http://blogs.msdn.com/jeffdw/archive/2007/09/19/rededication-and-retargeting-of-this-blog-to-a-pure-qa-focus.aspx</id><published>2007-09-20T02:33:00Z</published><updated>2007-09-20T02:33:00Z</updated><content type="html">&lt;P&gt;The original incarnation of my blog went fallow for a simple reason.&amp;nbsp; At the same time that I launched it, numerous other blogs focusing on Visual Studio Team System for Database Professionals were created by management, PM, marketing, etc.&amp;nbsp; Most topics that I would have covered were being covered repeatedly elsewhere.&amp;nbsp; This fact gave me the excuse to leave the blog behind and focus on driving testing of our product as our V1 RTM data rushed toward us.&lt;/P&gt;
&lt;P&gt;Why resurrect the blog now?&amp;nbsp; Well, we learned a lot of lessons about doing QA in a Scrum development environment in V1.&amp;nbsp; While we achieved good product coverage, as measured&amp;nbsp;by code coverage numbers&amp;nbsp;for our test automation,&amp;nbsp;in our V1 cycle, it was not always pleasant.&amp;nbsp; The problem was that we were using 'old' approaches to QA in a new, highly iterative development environment.&amp;nbsp; Here were some lessons we learned:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Scrum&amp;nbsp;is well-suited to 'greasing the wheels' of dev, but it is a methodology that is not naturally&amp;nbsp;QA-focused.&amp;nbsp; Yes, I know that the methodology stresses quality upstream.&amp;nbsp; I've read all of the books and been through a full product cycle under the methodology.&amp;nbsp; Does this mean that you cannot deliver a high-quality product under Scrum?&amp;nbsp; Of course not.&amp;nbsp; What it does mean, though, is that QA must interact with Dev in new ways and re-prioritize how it executes.&amp;nbsp; The Scrum methodology suggests this, of course, but now &lt;EM&gt;how&lt;/EM&gt; it is to be accomplished in the real world.&amp;nbsp; We've made a lot of progress here.&lt;/LI&gt;
&lt;LI&gt;QA must be much more agressive in its communication than under non-Agile methodologies.&amp;nbsp; Not snarky, mind you, just more productively agressive :)&lt;/LI&gt;
&lt;LI&gt;Teams used to puting a primary emphasis on system-level testing must shift their priorities&amp;nbsp;in Scrum or other Agile environments.&amp;nbsp; You will still write system-level tests, but your automation efforts will need to 'grow' to these tests rather than starting there.&lt;/LI&gt;
&lt;LI&gt;Inefficient internal tooling that is merely annoying in a non-Agile environment can present a major productivity hurdle under Scrum&lt;/LI&gt;
&lt;LI&gt;In highly iterative development there is a greater need for metadata associating specific test automation with specific Dev work items so that QA can quickly identify specific scenarios that are and are not covered and quickly create automation runs that are targeted to specific changes.&lt;/LI&gt;
&lt;LI&gt;If you think that communication between QA feature owners and their Dev counterparts is 'OK', it's not good enough.&lt;/LI&gt;
&lt;LI&gt;If you want your QA team to engage in customer-scenario-centric, extended, 'deep dive' testing, you must plan it out sprints in advance, defend it vociferously to Dev and to management, and be ready to show off the results that justify the efforts.&lt;/LI&gt;
&lt;LI&gt;A lot of teams in Microsoft are placing bets on model-based testing (MBT).&amp;nbsp; We learned a lot about how MBT helps and where it's full of hype.&amp;nbsp; Many aspects of MBT do not fit the Scrum environment in my view; nevertheless, there are some key uses of MBT tooling and methodologies that can pay off for QA in an iterative development environment&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;As a result of lessons learned in our V1 product cycle we are radically changing how we do our work in QA for our V2 cycle.&amp;nbsp; We were successful in V1, but we are confident that we now know how to significantly improve our effectiveness in V2.&amp;nbsp; The approaches I'll discuss in this blog are already in place and already showing productivity gains.&lt;/P&gt;
&lt;P&gt;Most of what I discuss in this blog will be specific to the work our team is doing, not an academic discussion of what testing &lt;EM&gt;should&lt;/EM&gt; be like.&amp;nbsp; Further, I'll be providing details on customer scenarios that we're testing, database schema constructs we're testing, input data we're using for our tests, and verification approaches we're using.&amp;nbsp; It is my sincere hope that customers of our product, real or potential, will see what we're doing and provide feedback that validates where we're doing the right thing and correcting us where we're making incorrect assumptions about how customers build their databases.&amp;nbsp; Such feedback will help us to get more and more into the customers' shoes.&lt;/P&gt;
&lt;P&gt;We really do work very hard in the Developer Division to provide quality tools to our customers.&amp;nbsp; I've spent a decade of my life, so far, trying to maximize customer satisfaction and I take that responsibility very seriously, as do the excellent members of my team.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5002863" width="1" height="1"&gt;</content><author><name>JeffDW</name><uri>http://blogs.msdn.com/members/JeffDW.aspx</uri></author></entry><entry><title>Report of activities at Tech Ed 2006</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/jeffdw/archive/2006/07/20/673204.aspx" /><id>http://blogs.msdn.com/jeffdw/archive/2006/07/20/673204.aspx</id><published>2006-07-21T00:59:00Z</published><updated>2006-07-21T00:59:00Z</updated><content type="html">&lt;P&gt;Well, after Tech Ed, catching up on e-mail, a couple of weeks&amp;nbsp;of vacation, then catching up on e-mail &lt;EM&gt;again&lt;/EM&gt; (gotta love the 'conveniences' of the 21st century), I'm finally getting back to the blog.&lt;/P&gt;
&lt;P&gt;Rather than repeating the analytical exercise that resulted in my 12-page Tech Ed report to our team, I figured I'd just toss into the blog some of the sections of that report (understandably omitting sensitive, internal information).&lt;/P&gt;
&lt;P&gt;Oh, one quick note before the report.&amp;nbsp; I gave a very impromptu podcast interview to Tech Net Radio while I was on booth duty (if you listen, it will quickly become apparent just how impromptu it was :)).&amp;nbsp; I'll toss in the links to the WMA and the MP3 versions.&amp;nbsp; My interview is the second one done:&lt;/P&gt;
&lt;P&gt;WMA: &lt;A href="http://download.microsoft.com/download/B/1/5/B15D95AC-F710-43A3-962D-CB50F71483B5/TechNetRadio-060616.wma"&gt;http://download.microsoft.com/download/B/1/5/B15D95AC-F710-43A3-962D-CB50F71483B5/TechNetRadio-060616.wma&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;MP3:&amp;nbsp; &lt;A href="http://download.microsoft.com/download/B/1/5/B15D95AC-F710-43A3-962D-CB50F71483B5/TechNetRadio-060616_Hi.mp3"&gt;http://download.microsoft.com/download/B/1/5/B15D95AC-F710-43A3-962D-CB50F71483B5/TechNetRadio-060616_Hi.mp3&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=5&gt;Selections from my report on Tech Ed 2006&lt;/FONT&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Summary&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Every customer I spoke to, DBAs, DB devs, and managers, was excited about the direction that we are taking VSTS.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;They are split on whether or not we have enough functionality in V1 for them to immediately commit to our product (which is standard for a V1).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Those who are not ready to commit to V1 gave specifics about the features that they need to have for them to jump in.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;There were few surprises in the feedback and feature requests that we received and the feedback was remarkably narrow and consistent, in my opinion.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This speaks well of our understanding of our customers and of our opportunity to increase ‘customer delight’ about our product in the next version with specific, targeted additions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;We, like most other V1 teams, have overly simplified the profile of our target customers.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In fact, we have different groups of customers who are passionate about different directions that we are going, and the passions of one group sometimes directly conflict with those of another group.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;The Booth and Other Customer Feedback&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;We spoke to hundreds of customers at the booth during the week, engaging in conversations that lasted anywhere from 30 seconds to 30 minutes or longer.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;As often as we could, we jotted down notes from our conversations (Robert and Jon will send out contents from their notes, too, I’m sure).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Additionally, we created a feedback form for those who did our hands-on labs to gather their impressions, positive and negative, about our product.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In this section I’ll go through the highlights of what we learned as well as quotes (usually paraphrased) from customers I met.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;What customers like best about our product::&lt;/SPAN&gt;&lt;/U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;There is not a single ‘dud’ feature in the product.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Not every customer wants to use every feature of the product, of course, but all features received a good amount of love:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo3; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;SCC/versioning as a first-class citizen in a DB tool is a huge hit.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Many already use SCC, but not in the central fashion that we do; they want to use our vision of DB versioning&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“What problems will this solve?&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Trying to figure out who changed what and when”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“This solves the problem of managing changes between my dev and production databases”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“This ensures a set location for the ‘latest and greatest’ DB version and a structured method of moving DB changes from the developer to the master copy of the DB”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“Now we can instigate a code review process for our DB changes”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo3; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Developing in a sandbox, not against a live DB resonated well with everyone.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;They quickly see how this improves their development process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo3; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Involving DBA in the development cycle&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;DBAs who talked to us were nervous about the idea of using VS until we showed them that the barrier to entry was low and that they would be working with TSQL, not .NET code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;DBAs, and many devs, are excited that having DBA in the development cycle will increase their projects’ chances for success at deployment time&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=square&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level3 lfo3; tab-stops: list 1.5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Many described the wall that currently exists between DBA and Dev, with Devs often seeing DBAs as some kind of killjoy troll while DBAs saw Devs as wanting to keep them out of the loop on work being done that targeted their databases.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level4 lfo3; tab-stops: list 2.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“As a DBA, I feel, sometimes, that devs want to keep DBAs ‘in the basement’.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;They want to make changes on their own when they can”.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;He doesn’t like current VS DB tools because they’re not integrated with the rest of the development process (he says that they’re ‘shoved in a corner’ of VS).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Needless to say, he very much likes the prospect of DBA being made part of the solution process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level4 lfo3; tab-stops: list 2.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Heck, if our sales are as strong as we hope, we might get a Nobel Prize to go along with our Ship It! awards ;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“This product will give us an increase of shared knowledge between DBA and developers”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo3; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Data Generation&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;One of the women completing DAT006 in the HOL gushed about DGen for a full 20 minutes&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=square&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level3 lfo3; tab-stops: list 1.5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;She’s thrilled that DGen will allow her to populate test tables with 1,000,000 rows for testing (&lt;B style="mso-bidi-font-weight: normal"&gt;Deep Dive Testing Target&lt;/B&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level3 lfo3; tab-stops: list 1.5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;She currently uses 4 tools to do what our tool does in DAT006&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level3 lfo3; tab-stops: list 1.5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;They currently have a team dedicated to creating and populating their test DBs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;There is overwhelming feedback that we need to have Select/Deselect All checkbox for DGen.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo3; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Unit Testing&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Several of those we talked to didn’t know what to make of this feature right off the bat because they weren’t doing anything like it.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Many more, though, immediately saw it as a big improvement over their current testing methodologies.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;For those already using unit testing of code, it was important that our DB unit testing story integrate with their code unit testing processes in VSTS.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo3; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Schema Compare&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“One of the main reasons I &lt;I style="mso-bidi-font-style: normal"&gt;don’t&lt;/I&gt; currently have a test database is because I’d have to remember the differences between my test DB and my deployment DB”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo3; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Data Compare&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;A developer from a small shop works in an environment in which each dev keeps an identical copy of a test DB.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;He likes our lifecycle story for maintaining a ‘true’ copy of the schema for deployment; however, he does not want to use DGen, as they have specific customer data that they use for all testing.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I showed him how he could leverage Data Compare for his task.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;He was thrilled and felt that the product met all of their needs.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This was an interesting conversation, to me, because it pointed out how heterogeneous our customers’ work environments are.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This was not what we would call an ‘enterprise shop’, but we still benefit as a product by meeting their needs and those of the other small shops. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo3; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Refactoring&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“This tool makes a really tough job for me much easier”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo3; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;T-SQL Editor&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“I love the validation of scripts on save” (Adolfo, trainer, consultant, and author)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo3; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;VSTS/TFS integration&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo3; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“Now we can have communication and tracking of bugs around our DB”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo3; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;”I came to Tech Ed to check out this product for our group.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Before I did the hand-on lab I expected to hate it.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Your product changed my mind, though!”&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;She’s very excited about it.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;She didn’t expect MS to give her anything new or innovative (ouch!).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;She found SQL 2k5 to have some added features, but that it didn’t change much for her.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;SSMS is a bit easier to use, but not much better.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;What customers feel is missing from our product:&lt;/SPAN&gt;&lt;/U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Few surprises here, although it was disappointing to hear how a number of customers considered some of our missing features in V1 to be adoption blockers.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;On the bright side, though, each of those, without exception, said that they love the direction that we’re going and will be watching what we do in VNext.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Here are key missing features that we heard about:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Support for non-SQL Server databases&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Visual database designers/modeling.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is an adoption blocker for a number of customers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“A dream would be to have an ERD, as well”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“Graphical Query/Table editors”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;“I will not write TSQL in a text editor.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’ll keep trying to use the visual DB tools in VS”. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Interestingly, though, a number of DBAs believe that working in a visual designer makes one ‘not really a DBA’. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Go figure.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Deeper refactoring support.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Rename is exciting and they want more.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;In particular, there is a &lt;B style="mso-bidi-font-weight: normal"&gt;strong&lt;/B&gt; expectation by many we spoke to that in the future we have refactoring cascade changes into middle-tier code that calls the refactored objects.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Intellisense&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;People have come to expect this in VS and are very disappointed to not yet see it in our product.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is not an adoption blocker, but it’s a hole we want to fill as soon as we can.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Prescriptive guidance/best practices&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“We want integration with existing standards and perhaps an automated rules engine”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Performance tools&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;SQL2k5 SSMS provides performance tools.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;One of our most enthusiastic HOL visitors wants to see us have integration with that.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Team support for encryption&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Store encrypted files in SCC and have anyone on his team work on them.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Custom TSQL templates&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Several customers want to customize the TSQL templates that we provide.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Prescriptive guidance around security and architecture.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;People want help in making some tough decisions.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;After a long conversation with one gentleman at the booth, I asked him what might be missing from our product that would help him.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;He responded that he had been trying to come up with something during our discussion, but couldn’t.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;“Everything you’ve shown me is stuff that I do and need”. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;In what ways can we make VSTEDP easier to use?:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l2 level1 lfo4; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“Not many.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Well done on the VS2005 framework integration”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l2 level1 lfo4; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“Some kind of Intellisense”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l2 level1 lfo4; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“Clicking on an error did not take me to the error line, even though the line number is displayed.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I want error navigation”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l2 level1 lfo4; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“Give us integration between the Server Explorer and Import Schema”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l2 level1 lfo4; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“I want to use the Query Builder to make my query for the Data Bound Generator.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Oh, and if I have only one result field from my query, please autobind that to the column to be populated”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l2 level1 lfo4; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Gary, who we met at the booth, heavily relies on stored procs.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In VS he wants to be able to step through his .NET code and right into the stored proc in our T-SQL editor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/P&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;How customers currently manage DB change:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Some customers don’t really have a defined process&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“Good question.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We only have CA Erwin”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“We individually apply changes to the database”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Others have home-grown processes, no two of which seem to be same.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“We run manual tests against a testing instance” (yeesh!)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“We manually track changes to the dev database and rolling changes into a master upgrade script”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“Individuals creating the change test it, then it is tested as part of front-end application testing”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“We use Erwin and have DBA reviews of changes”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“We diff schema scripts manually and in VSS”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“We have test and staging servers and use SQL Delta to compare them after changes”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“It is a very manual process.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Unit tests change and we run test harness code against stored procs for regress testing”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l3 level2 lfo2; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“We get sql scripts, periodically, from the DB and put them into SCC”.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;So, their SCC version is reactive to the deployed DB, not the other way around.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;SPAN style="TEXT-DECORATION: none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;The nature of the databases that our customers work with:&lt;/SPAN&gt;&lt;/U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Desiring to learn more about how we should be testing our product, we asked many customers to describe the databases on which they work.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Not surprisingly, we received a broad range of answers:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;When we asked customers about the number of tables in their databases, we received answers in the range of ~15-200+, skewed toward the lower end of this range.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Asked about the number of rows they have in tables, answers ranged from tens of thousands to tens of millions, with many reporting 1,000,000+.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This highlights the need that we have to do extensive performance testing and tuning late in the cycle.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 12pt 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Many customers are tasked with maintaining and testing legacy databases with poor architecture.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I spoke to multiple customers who work with databases that simply are not normalized, but which cannot be changed architecturally.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;These customers want to be able to use DGen (&lt;B style="mso-bidi-font-weight: normal"&gt;Deep Dive Testing Target&lt;/B&gt;) successfully against these databases.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 12pt 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“Our previous developer created Access DBs, then used a wizard to migrate to SQL Server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The design was terrible, but it produces 50 reports per day and cannot be taken offline to rearchitect.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Your tool will let me work in a sandbox to make and test changes to the architecture and version while I fix this bad DB”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 12pt 0in 0pt; mso-list: l1 level2 lfo1; tab-stops: list 1.0in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;“Our legacy DB has no PK-FK relationships.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Despite this, there are inter-table and inter-column dependencies in the DB, all handled through business logic.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I want to be able to declare these relationships in DGen and have population work as if a PK-FK relationship existed.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Updating the schema is not an option for us”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Lookup tables are quite common and it’s very important to those customers that our product allow them to RevEng, check into SCC, and otherwise manage such tables.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Performance expectations for DGen:&lt;/SPAN&gt;&lt;/U&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Since perf has been such a concern for DGen, we took the opportunity to ask many attendees how many rows of data they might want to populate in a test server and what their performance expectations are:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo5; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;One corporate customer wants to populate 1,000,000 rows in a ‘short time’ (a few hours or less) or they won’t use it.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo5; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Another company wants to populate 50,000 rows with test data.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;He expects this to complete in less than one minute, or he’d begin to wonder if something is wrong.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo5; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Yet another (&lt;B style="mso-bidi-font-weight: normal"&gt;Blog note:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’m eliminating company names for the blog posting&lt;/B&gt;) tables with 120,000,000 rows.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Our current pre-beta doesn’t work for them because it takes too long.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Statistical analysis tells them that they need to populate ~1,000,000 rows with test data.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;He wants that population to complete within a day&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo5; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;A company in The Netherlands expect to populate 100,000 rows with test data within one hour.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo5; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;A final customer, involved in our TAP program (Andrew and I spoke to them after Tech Ed) wants to populate 1,000,000 rows in a highly normalize DB at a rate of 250,000/hour&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=673204" width="1" height="1"&gt;</content><author><name>JeffDW</name><uri>http://blogs.msdn.com/members/JeffDW.aspx</uri></author></entry><entry><title>For Visual Studio Team Edition for Database Professionals, 3 days at Tech Ed down, 2 more to go</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/jeffdw/archive/2006/06/14/631822.aspx" /><id>http://blogs.msdn.com/jeffdw/archive/2006/06/14/631822.aspx</id><published>2006-06-15T07:02:00Z</published><updated>2006-06-15T07:02:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;So far, I’ve spent three extremely busy days here at Tech Ed Boston, talking to scores of attendees at our booth, meeting with DBAs, trainers, and dev team leads for extended discussions about the benefits of our product (as well as its current gaps and our future plans to fill them).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’ve had the opportunity to do a brief podcast segment (I’ll post a link as soon as it’s up at sigs.sqlpass.org) about our product.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Finally, I’ve taken advantage of every opportunity possible to meet with folks who are completing our hands-on labs to get their take on how our V1 looks, what problems it might solve for them, and, most importantly, where we’re still missing the mark for their needs.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;I absolutely love this kind of constant customer engagement.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It’s always amazing how many assumptions that we take for granted as being true are shattered when you get face to face with the folks who pay your check (sorry, Bill, but it’s the customers who ultimately do that).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Customers always bring up scenarios that, despite our best efforts, we’ve never thought of and &lt;I style="mso-bidi-font-style: normal"&gt;would&lt;/I&gt; never think of from our point of view.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Learning about these different needs and points of view through face-to-face interaction is irreplaceable, especially for someone, like me, in QA.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It is impossible to do a thorough job of integration testing without a deep understanding of the problems that customers will try to solve with your product and how they currently go about solving those problems.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;With the information that I and my teammates are gathering through these customer engagements, we’ll do a much better job of getting this product ready to ship before the end of the year.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;So, what’s in it for the customers?&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Aside from the quasi-selfish view that they’ll get a higher-quality version of our product, customers come to us with many, many questions about how to use current products, best practices and how they can leverage extensibility of our products to improve their own sales. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;My favorite so far is the gentleman who wrote a tool that uses Team Foundation Server an Outlook to automatically schedule a meeting when certain bug criteria are met.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; Great.&amp;nbsp; &lt;/SPAN&gt;Just what the world needs, an automatic meeting-creation factory.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Maybe next he can work on a tool to automatically cut employee benefits and raise executive pay when a company’s stock drops to a certain level.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;But, I digress.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Finally, today we had a 3 hour focus group with a dozen prospective customers.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This was another invaluable experience.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The attendees were generous with their time and did not hold back.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;They let us know exactly where they felt that we fall short in V1, though they all love the direction that we are going and a number of them are going to adopt V1 even if we add nothing else to it.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Despite the constructive criticism, I see this as all good.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We want this product to grow over a number of cycles and even if we don’t get everyone with V1, we’ll get their eyes on us, watching for V2.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;So, what, exactly, were the main customer requests?&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’ll address that with my next posting.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;As for now, it’s almost midnight, I have another long day ahead, so I’m going to bed.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=631822" width="1" height="1"&gt;</content><author><name>JeffDW</name><uri>http://blogs.msdn.com/members/JeffDW.aspx</uri></author></entry></feed>