640 likes | 694 Views
DEV302. Identify and Fix Performance Problems with Visual Studio Ultimate. Benjamin Day Benjamin Day Consulting, Inc. www.benday.com | blog.benday.com . Benjamin Day. Consultant, Coach, Trainer Professional Scrum Development Trainer http://scrum.org Unit testing enthusiast
E N D
DEV302 Identify and Fix Performance Problemswith Visual Studio Ultimate Benjamin Day Benjamin Day Consulting, Inc.www.benday.com | blog.benday.com
Benjamin Day • Consultant, Coach, Trainer • Professional Scrum Development Trainer • http://scrum.org • Unit testing enthusiast • Microsoft MVP for Visual Studio ALM • Silverlight, Windows Azure, C#,Team Foundation Server • http://blog.benday.com • benday@benday.com
Thanks. • To my content reviewers • Jerri Chiu, Microsoft • Dennis Bass, Microsoft
The Agenda • Basics of • Web Performance Tests • Load Tests • Load Test Rigs • Performance Explorer • Existing application • Identify performance problems • Go from bad performance to good • ASP.NET & WCF
Disclaimer: I’m going to use the term “load testing” imprecisely…a lot.
The Purpose of Load Testing • Identify the capabilities of your application • Possible goals • Explore • Verify • Find the limits • Crush
The Obligatory “Eat Your Vegetables” • Load test throughout the development cycle. • Catch problems early • Establish performance baseline • Watch for performance trends • Cheaper to fix early • Plan for performance • Best Practice
Dose Of Reality • You know you should work that way. • You probably don’t. • This talk is for you. • You have problems. • How do you figure out what’s going wrong?
Inspiration for this talk • Real customer engagement • Spent years developing a web application • Released it • Seriously grumpy customers • Huge hardware • ~20 simultaneous users • Fixed it • 4000+ simultaneous users • Reduced hardware
Disaster Strikes. • The application is deployed to production. • Users are losing their minds. • Intermittent errors on the site. • Site is slow. • Your boss is seriously angry. • “Fix it!”
The Problem. • “No Repro” • “Works on my box.” • You don’t know what the errors are. • The site seems to work fine. • Wild guess: it dies under load. • You need to create some load.
The Plan. • Script user activity with Web Performance Tests • Simulate a mix of users using Load Tests • Simulate lots of users with a Load Test Rig • Reproduce the errors...hopefully • Find code problems with the Performance Wizard • Fix the code
The Plan. • Script user activity with Web Performance Tests • Simulate a mix of users using Load Tests • Simulate lots of users with a Load Test Rig • Reproduce the errors...hopefully • Find code problems with the Performance Wizard • Fix the code
What is a Web Performance Test? • Test type in Visual Studio 2010 Ultimate • Simulate a user using an ASP.NET application • HTTP traffic • Building block of Load Tests
Tip: Web Tests & User Stories • Web Tests should simulate a User Story • Example: • As an administrator, I need to search for a person by username so that I can deactivate that person’s account. • As a customer, I want to order a pizza and pay with a credit card. • Helps to organize your suite
Data-driven Web Tests • Run web test once per row in data source • Simulate multiple users doing *similar* actions • Data source types • OLE DB, CSV, XML • Parameterization • Better tests, better coverage
The Plan. • Script user activity with Web Performance Tests • Simulate a mix of users using Load Tests • Simulate lots of users with a Load Test Rig • Reproduce the errors...hopefully • Find code problems with the Performance Wizard • Fix the code
What are Load Tests? • Mix of Web Performance and Unit Tests • Simulates a mix of users doing a mix of things • Simulate • Network speeds • Different browsers • Varying user activity loads
Why would you put a Unit Test in a Load Test? • Helpful for testing WCF • Cumbersome to simulate WCF via Web Test • (You’d have to re-invent the wheel.) • Unit tests can re-use the WCF libraries • (Done and done.) • Important for Silverlight and SOA • http://wcfloadtest.codeplex.com/ • http://sqlloadtest.codeplex.com/
Hey Kids, Let’s create some Load Tests! (Hooray!) demo
The Plan. • Script user activity with Web Performance Tests • Simulate a mix of users using Load Tests • Simulate lots of users with a Load Test Rig • Reproduce the errors...hopefully • Find code problems with the Performance Wizard • Fix the code
Two ways to run load tests. • Generate load from Visual Studio 2010 • Uses only 1 core/processor • Limited to 250 simulated users • Generate load from a Test Rig • Far better test • Simulate lots more users
Load Test Agent Licensing • Microsoft Visual Studio Team System 2010 Test Load Virtual User Pack • Simulate up to 1000 virtual users • Used to cost $$$
Visual Studio 2010 Load Test Feature Pack • Used to cost ~$3500.00 per 1000 simulated users • Free starting March 8, 2011 • Visual Studio 2010 Ultimate with MSDN • Simulate unlimited amount of load • (Limited only by your hardware.) • http://www.microsoft.com/visualstudio/en-us/products/2010-editions/load-test-virtual-user-pack
Load Test Rig & The Application • Controller • Orchestrates • Licensing • PerfMon Counters • Agent (1..n) • Simulates users
The Plan. • Script user activity with Web Performance Tests • Simulate a mix of users using Load Tests • Simulate lots of users with a Load Test Rig • Reproduce the errors...hopefully • Find code problems with the Performance Wizard • Fix the code
The Plan. • Script user activity with Web Performance Tests • Simulate a mix of users using Load Tests • Simulate lots of users with a Load Test Rig • Reproduce the errors...hopefully • Find code problems with the Performance Wizard • Fix the code
Profiling Tools • Load Tests help you find issues in a system • “Surface” issues • Profiling helps you find issues in the code • Unit Tests, Web Tests, Load Tests • Repeatable • Good for targeted tuning • System under “natural” load • Not repeatable • Looking for rough patterns
Load Test Performance Sessions Via Wizard • Must be only Web Performance Tests • Can’t profile via Load Test Rig • ASP.NET must be running in x86 mode
The Plan. • Script user activity with Web Performance Tests • Simulate a mix of users using Load Tests • Simulate lots of users with a Load Test Rig • Reproduce the errors...hopefully • Find code problems with the Performance Wizard • Fix the code
For More Information: Articles http://tinyurl.com/3xjqgvz http://tinyurl.com/2ulvvvr
For More Information: Microsoft Links • Visual Studio Performance Testing Quick Reference Guidehttp://vsptqrg.codeplex.com/ • Content Index for Web Tests & Load Testshttp://tinyurl.com/ye97e52
For More Information: Microsoft Bloggers • VS Team Test Blog Site http://blogs.msdn.com/b/vstsqualitytools/ • Ed Glas - http://blogs.msdn.com/edglas/ • Bill Barnett - http://blogs.msdn.com/billbar/ • Sean Lumley - http://blogs.msdn.com/slumley/ • Dennis Stone - http://blogs.msdn.com/densto/ • Mike Taute - http://blogs.msdn.com/mtaute/ • Neelesh Kamkolkar - http://blogs.msdn.com/b/nkamkolkar/
Thank you. http://blog.benday.com | http://www.benday.com | benday@benday.com
DEV Track Resources • http://www.microsoft.com/visualstudio • http://www.microsoft.com/visualstudio/en-us/lightswitch • http://www.microsoft.com/expression/ • http://blogs.msdn.com/b/somasegar/ • http://blogs.msdn.com/b/bharry/ • http://www.microsoft.com/sqlserver/en/us/default.aspx • http://www.facebook.com/visualstudio
Resources • Connect. Share. Discuss. http://northamerica.msteched.com Learning • Sessions On-Demand & Community • Microsoft Certification & Training Resources www.microsoft.com/teched www.microsoft.com/learning • Resources for IT Professionals • Resources for Developers http://microsoft.com/technet http://microsoft.com/msdn