Visual Studio 2013 Premium won the 2014 Jolt Award, which is nice, and it seems like a good time to revisit a common question; what’s the difference between Visual Studio 2013 Professional and Visual Studio Premium 2013? The comparison matrix shows everything but I’ve been thinking about the top capabilities that I value, and came up with a dozen to be getting on with…
Building on the extensible unit testing support in Professional, Premium adds in Code Coverage, to help you understand how much of your code is covered by your unit tests, from assembly level to lines of code. Extremely useful in helping you to understand where to focus your effort in unit testing. I’d use this to either set overall targets (we should have 90% unit test coverage) and/or to look at specific parts of the application and see where coverage is poor.
Code Metrics analyses your code using a number of factors, including cyclomatic complexity, inheritance and the number of lines of code to provide a maintainability index indicating, from assembly to method level, where your code is potentially too complicated and/or difficult to maintain. There’s a relationship between code that’s complicated and bugs – if it’s difficult to understand all of the paths through the code, it’s unlikely that those paths will all have been tested, and therefore there are potentially bugs lurking. Use Code Metrics in conjunction with Code Coverage and you can look for code that is potentially too complicated and under tested, and focus your efforts in the most valuable parts of the codebase.
Ever written some code only to find that something similar already exists in your code base? Ever been guilty of copy and paste programming? Not sure if either of these are true in your project? Code Clone Analysis can identify similar code and help you focus on where code can be refactored to remove redundancy and simplify maintenance.
Premium adds in support for a Code Review work flow, using Team Foundation Server (or Visual Studio Online). Create and submit a code review request to one or more people, and they can see your request with your description and the related files. Respond to that, including adding comments linked to individual code lines as part of the flow.
Ever been deep in the middle of coding when the request to “drop everything and fix this other problem/bug/situation” arises? Suspend and Resume allows you hit suspend and save the state of your pending changes and the layout of Visual Studio (which files are open, break points etc.). You can then switch projects/versions/solutions, or whatever is needed to address the higher priority situation, and then once that is done, resume to get back to exactly where you where before the interruption.
It won’t help with the mental context switching but it means you don’t have to worry about whether the code is ready to be checked in or not, or lose “your place” inside Visual Studio while you deal with the other situation. Suspend and Resume uses Team Foundation Server shelve sets to store the data safely in TFS.
You get a whole other toolset with Visual Studio Premium: Microsoft Test Manager (MTM). MTM provides test case management, manual test case creation and execution, fast forward testing to “semi-automate” manual tests, exploratory testing and rich actionable bugs. Way too much to go into here, but essentially you’ve got an entire range of test tools available to you as part of Premium.
I really like Exploratory testing – you can start testing without any test scripts, and if you find a bug, your steps have been recorded so you don’t need to document how you discovered the bug. You can also reverse engineer a test case from the steps you took so that you can add it to a regression suite for future use.
A lot of that Microsoft Test Manager goodness above is now also available to Premium users in the web access tooling. There’s a new Test hub that allows you to create test plans, test suites and test cases as well as run tests from the browser. It’s not as fully features as the thick client, but it gives you some solid basic test tools with no install necessary. It also provides something that the thick client doesn’t – the ability to paste test cases in directly from Excel and work with tests cases in a grid view.
Visual Studio 2013 introduced Release Management; how to author a workflow, including human approvals, for releasing builds into multiple environments (e.g. Dev, Test and Production). This lets you eliminate what can be a tedious and error prone manual approach whilst also allowing you to reuse any existing scripts or code that you use to achieve this. Visual Studio 2013 Premium gives you the Release Management client tooling to let you create these workflows.
Outside of MTM but part of Visual Studio Premium itself, is Coded UI Tests. This provides automated functional testing including the ability create assertions to validate that a test has passed. Coded UI allows you to create regression tests and suites to automate the testing of new versions of your application.
Coded UI can be created from scratch (watch and record) or by taking a manual test that’s been run with action recording turned on, and works by driving the accessibility API for the application you want to test. It works for any kind of web application (it doesn’t need to be ASP.NET), WinForms, WPF and some other technologies. The test itself is maintained as code, managed within Visual Studio just like any other solution or project.
So; do you want to be able to run 10, 100 or 1000 automated functional tests whenever you’ve got a new build (including if it's been deployed to the test environment automatically with Release Management)? Coded UI can do that for you.
I think most people are visual, and being able to present back how you envisage delivering requirements in the form of a story board of screens and flow can really help to confirm and test understanding of how to implement requirements. Premium gives you access to Storyboarding, which is an add-on into PowerPoint, and allows you to easily create screens from library of shapes, and link these back to requirements inside Team Foundation Server.
When working with the Agile Planning tools in Team Foundation Server, there can be Product Backlog Items that can’t sensibly be delivered within a single Sprint; they’re too big or too high in concept. In order to record and track these higher level requirements, Agile Portfolio Management adds support for levels above the Product Backlog. Visual Studio Premium allows you to access this functionality.
These are called Features out of the box, but you can rename them (a lot of you might think of these as Epics, for example), and add extra levels above that, perhaps to reflect a structure like that found in Scalable Agile Frameworks (SAFe).
These can be mapped to Product Backlog Items, allowing you to view the relationship between the levels of requirements, and understand which Sprints are going to contribute to addressing them.
Team Foundation Server 2013 introduced Team Rooms, which requires Premium. A team room records selected events (builds, check-ins, work item changes, code reviews) alongside team chat to provide a date organised contextual history of what was happening in a project. Really useful to understand what was going on and who was involved. Even more useful if your team is not co-located (different offices, working from home) or even not in the same time zone.
An incredibly fast (as in seconds) and easy way to create Work Item Charts (pie, bar, column, stacked bar and pivot table) based on work item queries. So; if you have a query that you find useful (all bugs in Sprint 2, remaining work, all active tasks, etc.) Premium gives you the capability to add visualisations of that data in no time, and pin them to the project home page.
Last but not least is the Microsoft Azure credit you get with Premium: £65 a month of free credit. So, every month you get £65 of Azure billing for free. No credit card required, and by default once that credit gets used, it simply stops until next month, so you can’t end up with a bill you didn’t expect.
What does £65 a month in Microsoft Azure give you? Well, have a play around with the pricing calculator, but you could have web sites, storage, virtual machines (Windows, Visual Studio, SQL Server, SharePoint, Linux, Oracle and others) or more. If we look at virtual machines that could be:
But remember that Microsoft Azure bills by the minute, so if you don’t run these 24/7 you could get a lot more:
Interested, but not sure how to get started? Colin covered this in another post.
So, wish you had some more environments for dev, test or even R&D? If you have Premium you already have the credit to expand your environments into the cloud.
I haven’t gone into much detail on each of these in order to keep this at a readable length but hopefully that’s of some use in explaining what I see as the key reasons for looking at Visual Studio 2013 Premium.
Also, Premium includes a license to Microsoft Office. It may not be a "VS capability", but it is another "key reason" to upgrade from Professional.
I got premium personally because it includes all the Microsoft servers too - so if I need to do some work with CRM I have access to it, or SharePoint, Biztalk, etc.. And because it included Visio, though that has changed from production use now :( It's also worth noting that the azure credits don't include production use anymore either - a small amount would have been nice.
I used to have professional but it lacks the servers and client stuff like Office - it was very cheap though :). I got ultimate for one year (2010) and loved some of the features but it's too expensive for what you get extra (like buying a car every year to keep my skills current).
Visual Studio Premium is the middle ground that is priced about right but lacks a few useful features you can put up with not having.
They are some fairly key features that feel like they should be in premium to be honest - like basic memory dump analysis and intellitrace; arguably the memory dump stuff should be in professional. I'd trade the storyboarding for those anytime. Suspend and resume doesn't seem to work in all cases either: it's totally missing from the GIT support for example.
It isn't a great value proposition at the moment but I think it is the best of the three key options (pro has too little, ultimate costs WAY too much), I don't regret it and recommend it to anyone else that can afford it.
@Another Reason and @Simon Thanks for the comments, I agree about the other MSDN benefits and it's good to get your feedback. One point I'll pick up on is that there are a few areas where TFS capabilities aren't available when you choose Git as the version control repository within TFS. Some of these (including Suspend and Resume, Gated Check-ins and Code Reviews) use TFS Shelvesets, which are specific to TF VC. I believe these are on the backlog to be addressed and made available when you use Git, so hopefully those differences will go over time.