Peter Gfader was born in South Tirol Italy, studied in Austria, and is now working in Sydney Australia as a.NET developer for SSW. His title is Senior Software Architect, ScrumMaster & Scrum Developer Trainer.
Peter blogs about .NET development. On his blog, he covers many aspects of the Microsoft stack including C# programming, usability, tips & tricks, best practices, problems, and solution development. Most recently he is dealing with the creation of an online chat application that has several requirements including:
- People on the web should be able to use it
- No download of an application
- Broadcasting messages to all users (server to clients)
- Everyone should be able to use it
- People behind firewalls, proxies, NATs, …
- People with any of the current browsers
- Lightweight solution needed
He is also an athlete that likes running, mountain biking, rock climbing, and surfing. He has shared some of his thoughts and experience concerning performance testing in this interview. We are grateful for his investment of time. Here’s the interview:
Please share one tip or best practice that is important to you regarding performance (or load) testing or engineering?
I would like to share 2 tips:
Tip #1 – Start with performance monitoring now!
Fire up “perfmon”, run it for 1 day and try to look at the different performance counters.
A good overview of perfmon is on technet: Taking Your Server’s Pulse. Counters can be found here: Counters of the week on MSDN.
Tip #2 – With performance tuning it is important to measure beforehand and afterward.
Follow the MFFM principle:
- Measure first
- Find the problem
- Fix the problem
- Measure after
Do you have any cool tips/tricks for performance tuning?
Look into your inner workings of your web app with dotTrace or ANTS profiler.
Do you ever measure web performance in terms of revenue decrease/increase?
Yes we do, and that is how you should sell performance engineering to your clients, customers, and users.
What is your technical background?
I started to develop for .NET in 2002, mainly doing Windows Forms applications with Oracle databases. The performance of connecting from .NET to Oracle was always worse than any other technology connecting to Oracle at that time. From there I moved to the ASP.NET Webforms world with SQL server backend, and these days I am doing Silverlight and ASP.NET MVC by using the whole Microsoft technology stack like: SQL Server, Windows Workflow (WF), Windows Communication Foundation (WCF), LINQ to SQL or LINQ to Entities.
Do you consider yourself more of a software developer or QA professional?
I don’t really like the term “quality assurance”, because it means to me that we ensure quality after the application has been developed. I would say I am a software developer/consultant that solves customer pain.
What is your specialty? Why?
Testing. I like all kind of automated tests that help maintain and improve code quality.
Clean code. I follow the Clean Code Development (CCD) movement and try to improve readability of code every day.
What do you believe to be the most critical elements of web application testing? Why?
I think we should focus on performance from the beginning.
Also, we should ask ourselves: What do we want to test? Our code? The user interface? The database? The deployment process? Working reports? Performance? Security?
I think we should and must test that the user requirements are fulfilled. And part of the user requirements is that the application is responsive and available.
We use Scrum in our projects with the corresponding acceptance criteria in each different team.
I try to encourage our teams to have performance tests as part of our “Done” criteria.
How do you see development or testing evolving over the past few years? the next few years?
I see that more and more developers are testing and conduct Test Driven Development.
But there are still a lot of misconceptions on terms like: Unit tests, Integration tests, Functional tests, Data driven tests, Load tests, Stress tests …
The tooling has improved a lot in the last years with tools like: Selenium, WatiN, WebAII and Microsoft Test Manager – and LoadStorm of course.
With tools like FitNesse it is getting even nicer to write tests.
What would you say is the difference between load testing and performance testing?
I think of a load test as a test that simulates the expected user load. The performance test verifies that we have a certain response time of the application (how fast is the system). But the combination of these two tests is important. We want to have good response time during a normal user load.
What do you think is the most important aspect of load testing?
Try to predict the future and simulate it before going live. What could go wrong? How many users could connect? etc.
Hosting in the cloud helps a lot regarding scalability…
Who is the best person you know at getting higher performance from a website?
Corneliu Tusnea. He is an awesome developer and has a good blog on http://acorns.com.au/Blog/
What are some of the most common web app bottlenecks that you find and/or fix?
Too many database calls is a problem that I see very often on different web applications. Another common problem is dependence on external resources that are slow. Caching can help.
Good application architecture should focus on these issues from the beginning.
Please provide a link to your favorite blog post that you have written and tell us what you like about that one.
http://peitor.blogspot.com/2010/02/smack-down-watin-vs-selenium-vs-vs201…
I did a quick comparison of different test frameworks and gave some subjective opinions on those.
If you could make a career from one of your favorite hobbies, what would it be?
Sports like climbing would be great. Or being a mountain bike guide in the European alps would be awesome as well…
What is your favorite web application or testing book that you own? That you wish you owned?
“The Art of Unit testing” from Roy Osherove is definitely one of the best testing books I own.
Our thanks again to Peter for sharing his best practices, tips, and tricks. If you want to show your appreciation, please tweet your gratitude to @peitor.