Posted by malcolmdavis
on May 3, 2007 at 7:28 AM PDT
Is Microsoft still playing catch up with tools, technology, and techniques?
Several years ago, I spent a summer doing contract work with Microsoft Visual Studio 2003. I was amazed at the low quality of Visual Studio. A major pain to install and configure, no refactoring, performed horribly, blew up all the time, etc.
Now there is Microsoft Visual Studio Team System (VSTS). For the most part, VSTS is a copy of the technology that is available free in Java world.
In an article that .NET developer, Jeff Levinson gives a brief, description of TDD capabilities of VSTS. Some of the oversights convey the missing mindset and limitations of the VSTS, and the developers that use the tools.
1. The article description says "Team Edition for Software Testers". In 20 years of software development, I have never seen testers write low-level unit test. That is one of the reasons (among many) that there is a push to get developers to carry out the task. Furthermore, TDD is about developers designing the code via tests, not about not testers designing the code.
2. The article describes disadvantages to using TDD. "TDD does not allow you to create class diagrams and perform optimization up front." The lack of class diagrams and perform optimization is a misnomer. The concept is to design classes from an interface perspective, however there is nothing keeping developers from using class diagrams (both high-level and low-level UML diagram techniques) to design the interfaces. I see the design misconceptions from people new to Agile, claiming to be agile but never having been involved with an actual agile project.
3. 100% Myth. â€œall code you write will be testableâ€. The concept of a 100% regression test suite is some times unachievable. UI and database regression testing can be difficult, additionally there are other testing techniques required such as inheritance testing.
4. Limitations: â€œUsing VSTS you can generate method stubs from your unit tests, but you need to create the class that is going to house the method stub first. This is really the only limitation when using VSTS's unit testing from a purist's perspective.â€ I guess Microsoft needs to hire more developers for VSTS team to keep up with all the advances in the free and open source world.
5. More: Other reasons for TDD not being described in the article include providing clear examples of how the code/class is to be used, and to separating test code from class, which helps avoid code clutter and class bloat in the release package.
I think Levinsonâ€™s thinking is limited to his Microsoft Visual Studio family of products, rather than the entirety of software development. I feel sorry for people that are stuck in Microsoft development shop that have to hang their profession on the limitations of Microsoft Visual Studio experience. Almost 7 years ago, I wrote an article for IBM on Unit testing http://www-128.ibm.com/developerworks/java/library/j-ant/ , and I had been doing Java unit testing for sometime prior to the IBM Article.
BTW: The word â€˜interfaceâ€™ did not show up in the entire article. Makes me want to go â€œHmmmâ€.