What tools work well for automating .NET 4.0 web sites using web forms with dynamic data?
What would be the best solution to accommodate automated testing of web forms with code-behind (.NET 4.0)? Specifically, we need a solution that can automate web form testing and handle dynamic data such as database generated IDs across multiple posts.
A little about us
Team: 15 .NET developers, 10 database staff and 1 QC manager (zero QC staff other than manager). Tools Used: TFS, MSDN with Visual Studio Ultimate Tech Used: 99% of our huge codebase is web forms (with code behind/beside) with websites in .NET 4.0 (NOT WebAppProject, NOT MVC). 99% of our apps are dynamic in nature, very minimal static content.
The QC manager is new to our company but comes from previous employment where he had staff with detailed knowledge of http://www.fitnesse.org/. We currently have some automated testing for common code that is manually built to assemblies (not using a build server), but as mentioned above the bulk of what we have is webforms. The web forms are tested manually using MS Word docs and screen shots of manually using the testing server website.
I assume your web application is for external customers (so your users can use web app in many browsers and operating systems outside of your control). Which is very interesting challenge - exactly what we are doing
You are excellently positioned to use new future W3C standard for browser automation, Selenium Webdriver (Se 2). (In a way, you future-proof your QA). It allows you to test your web based app in different browsers, even in parallel. You can avoid building your test farm (virtual machines running different operating systems and browsers) by renting one from cloud providers like SouceLabs. Selenium has bindings for many popular languages, including .NET (We use Python).
And the language for your QA test don't have to be the same as your web app. I found Python much more productive (as dynamically typed "scripting" language, compared to C# or Java) and speed cannot be a concern in QA. Your concern is "speed to market" to develop test, and design patterns (PageObject) to separate page logic and locators from test logic. In fact I know about Wall Street company using Ruby for QA testing their C++ app.
Fitnesse has similar approach as Selenium (and was part of Selenium1), but was using HTML tables to define tests. So your QC manager will feel at home with Selenium Webdriver (similar terminology, method names etc).
I am not sure what would be best test runner for .NET, we use Jenkins (which is in Java), but we are Linux/Python shop as I said.
Read up about PageObject and other best practices to use Selenium, google around or check this.