November 3, 2012

My friend Brad just turned me onto this amazing tool. It is NCrunch http://www.ncrunch.net/. I have played with it for several days, and I am buying it when my trial period expires. It is really nice. In their words

“It intelligently runs automated tests so that you don’t have to, and gives you a huge amount of useful information about your tested code, such as code coverage and performance metrics, inline in your IDE while you type.”

I am using Visual Studio 2012. And the unit testing experience, although slightly improved, is still pretty clumsy and slow. But now that I have NCrunch, I don’t mind. I know Microsoft worked hard and are proud of their improvements. But this takes it so much further than they dared to go, that I bet you their own people will soon be using this. It’s that good.

I am not even disappointed in Microsoft. Instead, I am pleased that their tool is so easily extend by so many partners. (“easily? easy for me to say. I don’t code these things). This whole arrangement smells like a healthy IDE ecosystem. As long as the total package is good, I am cool. By the way, I am also using ReSharper at the same time without problems. I love that tool too.

The key is SPEED and immediate visual feedback. This tool allows you to configure how many CPU cores you can allocate to it in the background. And every time you change a line of code, it is running these background threads that test your code and show you code coverage.

Downsides? Brad tells me he had some slowdowns and hiccups. But I don’t know what hardware he used. I am using a plain old Dell desktop with 8 cores and 8 GB of RAM. It also runs fine on my virtual machines on my server. But that is cheating cause it’s a bit overpowered. I can see you might have slowdowns on a weak PC or a starved VM.

I really like the Web performance testing tools built into Visual Studio 2012 Ultimate. These are tools you can use to create and execute automated tests of web applications for the purpose of measuring performance and load. These latest versions are much more polished, feature-rich, and easy to use than the versions that came in previous versions of Visual Studio. One of my favorite features is the ability to export load test results into an Excel workbook.

When you generate the Excel load test reports, there are two different formats available. One is a side-by-side comparison of two different load test runs. The other is a trend analysis that can compare two or more test runs and show a graph of the trends of various performance measures. When you press the button to export the test results, it does not merely dump the raw data into an Excel workbook, it uses Excel automation to generate a bunch of graphs that show the comparisons or trends in the various performance measures. It is the same kind of work that we used to have to do by hand. Only now, thanks to automation, we can see the results in a visual fashion much more quickly.The sample image shown above shows a trend report I ran.

I was testing the performance of a web application with various web garden settings. The first two runs, 44 and 45, were run with the worker process equal to one. Run 47 performs the load test with two worker processes, and run 48 is the performance of the web garden with four worker processes. From my experiment, I concluded that my current configuration would be able to deliver far more results with four worker processes. As an interesting side note, the IIS server that was hosting my web application had four CPUs. So this is a reasonable result to expect. But there is something very satisfying about having actual performance tests data to verify your hypothesis.

October 22, 2011

How can we make good software? What are current best practices and what are some promising areas for future development? In this post, I share a couple of ideas that you can use now, and a few ideas to keep an eye on for the future.

July 28, 2011

If you use mocking frameworks, you may run into scenarios in which you want an operation to behave one way on the first call, and a different way on the second or third call. In the MOQ framework, which I use, I just discovered the SetupSequence method. (more…)