Skip to main content

VSTT Reference Guide

If you are looking for some serious guidance on Visual Studio test, then the Rangers have come to the rescue (again) with a lovely 83 page document on VSTT. Get it from CodePlex

It sounds like a contraction that 83 pages is a reference guide but from my use this morning of it (couldn’t of come out at a better time for me), it isn’t. It is not meant to be read from beginning to end, rather you can easily skip between parts because the material is presented in a Q&A format which is easy to manage.

What’s in it?

  • SETUP CONSIDERATIONS 9
  • WEB TEST CONSIDERATIONS 14
  • WEB SERVICE TEST CONSIDERATIONS 35
  • UNIT TEST CONSIDERATIONS 36
  • LOAD TEST CONSIDERATIONS 42
  • LOAD TEST RIG CONSIDERATION 56
  • PERFORMANCE DATA COLLECTION AND USAGE 66
  • LOAD TEST RESULTS STORE INFORMATION 73
  • TEST CUSTOMIZATION 76
  • ITEMS CHANGED OR FIXED IN VSTS 2008 SP1 77
  • GENERAL COMMANDS AND TRICKS (NOT VSTS SPECIFIC) 79

How to convert a VS standard class library to a Workflow activity library

Introduction

image VS. image

If you are working in a workflow foundation project you may find you have created a class library (see image below) and want to put workflow activities into it but you may have issues with that because you didn’t create a Workflow activity library.

Issues

Some of the issues you may find are the add item menu doesn’t have the options you expect and the workflow designer interface doesn’t work.

image VS. image

Solution

To solve this you need to modify the class library project file very slightly. To do that simply open the file with a text editor such as Notepad or use the options in Visual Studio to unload and edit the project.

image

The first thing is to add a ProjectTypeGuids node to the base PropertyGroup node. To get there you need to navigate to the PropertyGroup node (it is under the Project node) without any Condition attributes. On my machine that is on line 3

image

Next add the following line in the node:

<ProjectTypeGuids>{14822709-B5A1-4724-98CA-57A101D1B079};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Example: image

Next you need add a new project target into the Project node. You should already have one of these  around line 56

image

Right below that you need to add a new one (so you will have two), the line to add is:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\Windows Workflow Foundation\v3.5\Workflow.Targets" />

Example: image

Now save the project file and re-open it in Visual Studio and the problems should be gone!

Troubleshooting

You may find that the designer is not working or you get errors when adding new activities still. In such a case it could be that you are missing the workflow foundation assemblies (System.Workflow.Activities; System.Workflow.ComponentModel; System.Workflow.Runtime):

image

Once you have those added everything should be working fine.

S.A. Architect Community Website Stats - March 2009

Finally broke the bad habit of posting stats late! The stats are based off of IIS log parsing as well as off of the stats information from SharePoint (which powers it).

Previous Stats:

Some notes on it:

  • Definite climb this month over Feb, thanks to a few factors I think.
    • First there has been some renewed actions in the group - if you didn’t know about it, you can read it about it here.
    • Also I have heard via the grapevine it was mentioned at the DevDays/TechDays events!
  • A stat I keep but don’t speak about is the top page, which this month (for the first time since I started) is the Publications page. So it seems people are into downloading more content this month!
  • Distinct Users means people which can be identified through logs/tracking to be unique (it’s not an exacting science so there may be people who are counted more than once while others are grouped together as they come from behind a proxy). They are not members and can include things like search bots. I don’t care about the number too much on this but rather the trend.
  • Registered Members are people who have completed the registration form on the website.
  • New members climbed by 5 which seems exactly average for us now.

Below is the pretty excel image stats - click it for a bigger version:

image

image

image

Boring Games Are Dead

figurebannerblog

Microsoft is running a competition for the most fun game to play and the winner gets a free trip to Tech-Ed 2009! Since it is Microsoft games need to be developed using XNA Game Studio, Visual Studio or Expression Studio and must run on Windows!

Since it is decided on by the community there is also a prize for one of the ‘judges’!

More information can be found at: www.boringgamesaredead.co.za

What makes a senior developer

Trumpi asked the question What makes a senior developer? So I started to write a comment on it, and it ended up a little big for a comment so I thought a blog post would be better.

Warning: This post is FULL of generalizations and is based on my narrow sighted view of the world.

Before I answer the title question, I want to take a stab at a point in Trumpi’s post about why they are tossing so many 'senior' dev's CVs away? Arne commented on it and said it’s because developers want the high life quicker (easier?) now. I disagree with Arne because I think it's the companies who hire these junior/intermediate developers and push them into higher positions out of need (i.e. the company does not have seniors, so they put intermediates or juniors into those positions as there is a gap to fill). They then think because they are a senior in company x - they should be a senior else where. I’ve seen this a lot in the “newer” development companies, the more established ones seem to avoid this issue.

Not to say that I haven’t met developers wanting the high life quickly - however this seems to stem from a education background. Developers who are self trained, go to training colleges or techs don’t seem to be so fast lane driven. The higher the education (honor students being the worst) seem that the “high life quickly” syndrome effects them more.

To the question at hand what makes a senior developer? That is a tough question because it's more about environment/culture of the company than the person him/her self. If your culture is more formal (suit and tie), senior could be based more on qualification while in a more informal environment it could be more experience. There is no wrong or right here.

My view of a senior is a person who meets 5 key items: Knowledge, Proven, Sharing, Passionate, and Humility.

  • Knowledge: Has a deep knowledge of a technology or technologies (how it was obtained is irrelevant to me).
  • Proven: Has paid his 'school fees': Meaning he has done real (hard) work to prove he deserves to be called senior.
  • Sharing: Is able to share knowledge. This is important because a senior who can't share knowledge is not worth it. Now there is the issue about personality here (being that some developers don’t really have one) - I am not saying seniors need to be the great speakers like Scott Hanselman, or sales men. If they are introverted and can only share with people they know at work, that is just as good as being a great speaker/blogger etc…
  • Passionate: They must be passionate. As a senior, being called a geek/nerd is a badge of honor that should be strived for.
  • Humility: Lastly, and most importantly, the culmination of all of those points should lead a senior to actually be in the spot of saying I don't know everything... but I am willing to learn.

The senior developers I have worked with have come from such a varied background and are on many a varied path but they all meet those 5 points.

S.A. Architect - Road ahead

S.A. Architect, the quiet community which great links in the software development community, is a fairly inactive community at the moment. The reason for that is because of lack of ideas, but no more! Over the last two weeks I’ve been planning and discussing a number of ideas with the goal being community growth through increasing the activity in the group.

image
There are three areas where I would like to see growth can occur:

  • Communication: Get the group speaking to each other more and assisting each other.
  • Content: Get more content for the site.
  • Events: Get together more.

So how do we do that, for communication there is now a discussion group hosted by Google Groups which should help get the community chatting, and in a week or three I will be doing a big push to get more blogs mirrored to the site.

Google Groups
Subscribe to SA Architect
Email:
Visit this group

For the content side we are focusing on videos both in terms of videos the community will produce and video interviews which are planned to be similar to Channel 9 type. Lastly for the events Tech-Ed is the big S.A. Architect meet up and we are starting to think about that.

If you have any ideas or comments on this plan please feel free to contact me directly (click on my name below and use the contact form), or send a message to the group.

Remember this is YOUR group, how it grows is up to you!

Free SharePoint Posters

What could look better than a great poster on SharePoint development up on your wall? How about if it was free? Well the S.A. Architect community has a number of posters in crazy high resolutions (they all seem to  be around 33mega pixels or 6872 x 4916 for the more technical ones out there). So what posters are available and where do you get them?

Well you can get them and hundreds more from: S.A. Architect Posters, and the posters are:

Creating SharePoint Web Applications

image

Direct Link: http://www.saarchitect.net/Publications/Value%20Add%20Information/Quick%20Reference%20Posters/BBD%20Technology%20Readiness/JPG%20(high-quality%20A4-A2%20scalability)/0500%20Creating%20Web%20Applications.jpg

Developing with SharePoint 2007 - Concepts

image

Direct Link: http://www.saarchitect.net/Publications/Value%20Add%20Information/Quick%20Reference%20Posters/BBD%20Technology%20Readiness/JPG%20(high-quality%20A4-A2%20scalability)/0500%20DevelopingWithSharepoint2007.jpg

SharePoint Concepts

image

Direct Link: http://www.saarchitect.net/Publications/Value%20Add%20Information/Quick%20Reference%20Posters/BBD%20Technology%20Readiness/JPG%20(high-quality%20A4-A2%20scalability)/0500%20Sharepoint%20Concepts.jpg

SharePoint Development Environment Scenarios

Great one for planning how your development team will work against SharePoint!

image

Direct Link: http://www.saarchitect.net/Publications/Value%20Add%20Information/Quick%20Reference%20Posters/BBD%20Technology%20Readiness/JPG%20(high-quality%20A4-A2%20scalability)/0500%20SharePoint%20Development%20Scenarios.jpg

SharePoint Architecture For Developers

image

Direct Link: http://www.saarchitect.net/Publications/Value%20Add%20Information/Quick%20Reference%20Posters/BBD%20Technology%20Readiness/JPG%20(high-quality%20A4-A2%20scalability)/0500%20SharepointArchitecture.jpg

SharePoint Workflow Development Lifecycle

image

Direct Link: http://www.saarchitect.net/Publications/Value%20Add%20Information/Quick%20Reference%20Posters/BBD%20Technology%20Readiness/JPG%20(high-quality%20A4-A2%20scalability)/0500%20SharepointWorkflow.jpg

SharePoint Site Structure

image

Direct Link: http://www.saarchitect.net/Publications/Value%20Add%20Information/Quick%20Reference%20Posters/BBD%20Technology%20Readiness/JPG%20(high-quality%20A4-A2%20scalability)/0500%20SiteStructure.jpg

SharePoint HTTP Request Pipeline

image

Direct Link: http://www.saarchitect.net/Publications/Value%20Add%20Information/Quick%20Reference%20Posters/BBD%20Technology%20Readiness/JPG%20(high-quality%20A4-A2%20scalability)/0500%20TheRequestPipeline.jpg

SharePoint HTTP Request Pipeline - Ghosting & unghosting

image

Direct Link: http://www.saarchitect.net/Publications/Value%20Add%20Information/Quick%20Reference%20Posters/BBD%20Technology%20Readiness/JPG%20(high-quality%20A4-A2%20scalability)/0500%20TheRequestPipelineGhostingAndUnghosting.jpg

SharePoint Workflow Basics

image

Direct Link: http://www.saarchitect.net/Publications/Value%20Add%20Information/Quick%20Reference%20Posters/BBD%20Technology%20Readiness/JPG%20(high-quality%20A4-A2%20scalability)/0500%20WFBasics.jpg

ADO.NET Data Services - Weird Error

Working on a project which uses ADO.NET data services for a small part of it. I put the ADO.NET Data Services portion together (add the files, put the EF data model together, link it up etc…) on my machine (Windows 2008 Server, SQL 2008, VS 2008) and it all worked great! Checked into source control and then went about doing something else, ignorant of the coming problem.

Then the developer who would actually consume it (we are consuming it in C# using LINQ) came to me saying that nothing worked :( All we get is the generic ADO.NET Data Services error: “An error occurred while processing this request”. We removed the where clauses and everything worked perfectly, which hinted to me the LINQ/EF expression tree was borking out somewhere. So we went to the EF data model, told it to update and it did a change under the surface and everything worked again?!

image

I love TFS because it allowed me to compare my version and the updated one easily and their was one tiny change (literally 1 byte!) in the edmx file (not the .cs backing file, the edmx file itself). Turns out that in dev they are using SQL Server 2005 and I built the model with SQL Server 2008 - now note there is ZERO 2008 special features in use, but it seems that the EF expression tree doesn’t care and try’s to use some SQL 2008 magic cause it thinks it is SQL 2008. This is controlled by the ProviderManifestToken attribute! Changing that to 2005 (which is what the update did automatically for me) solved the problem!

image

S.A. Architect Community Website Stats - February 2009

A second month in a row I am late in sharing the stats from last month - it’s becoming a bad habit. The stats are based off of IIS log parsing as well as off of the stats information from SharePoint (which powers it).

Previous Stats:

Some notes on it:

  • Distinct Users means people which can be identified through logs/tracking to be unique (it’s not an exacting science so there may be people who are counted more than once while others are grouped together as they come from behind a proxy). They are not members and can include things like search bots. I don’t care about the number too much on this but rather the trend.
  • Registered Members are people who have completed the registration form on the website.
  • Feb was a worse than Jan for usage of the site, things I think are a combination of lack of content (far less blog posts being mirrored) and the group not doing too much at the moment.
  • New members climbed by 5 which seems about average.

Below is the pretty excel image stats - click it for a bigger version:

image

SharePoint Object Model Performance Considerations

Andreas Grabner has posted a brilliant article on performance effects of doing things with the SharePoint object model. He covers which methods you should use over other methods (like using SPContect.Current.List.Items.Count is much slower than SPContext.Current.List.ItemCount), structuring the code etc… and backs it up with performance stats and details on how to do your own.

I would say its a must read for all SharePoint developers.