Thursday, November 19, 2009

DogFood v2 Session summary on: Customizing TFS Process Template to Match Your Process.

My slide portion of the session has briefly covered customization and extension points on TFS. Due to time limitations I had to hide a significant portion of slides.  The full version of the PowerPoint Deck is available for download.

In summary, if you are planning on customizing process template I recommend for you to follow a few simple steps:
1. Start with documenting your process.  Do an ALM Assessment, as a mere a fact Microsoft has a great tool for it: Application Platform Capability Assessment.  Spend the time with all the people that are involved in the process and get a "Green Light" from the management.  Remember the process is not only for developers, but for the entire team (including business sponsors and clients).  Create an Action Plan of the implementation steps.

2. Templates shipped with current versions of TFS are not meant to be used as is, they are just blueprints.  Do not treat the process as paint, throwing it on the wall and seeing what will stick is not the best strategy for the development.

3.  Do not expect by customizing TFS process guidance to go fully integrated (dynamic) environment over night. It will take time, long time.  Use your Action Plan (created part of the ALM Assessment) to fully integrated ALM into VSTS/TFS.

4. Treat your TFS server as production server.  Do not go and try some new ideas against.  If you need to prototype a rule or workflow or workitem get yourself a test environment.  Once you know that it is working well in test server, then go ahead and implement it in your production TFS.

5.  Do not be afraid to make process adjustments on active projects (as long as you are following rule #4).  If your project needs a new rule/workitem/field/report/etc then just implement it.  At the end of the project do a retrospective and decide if the change is worth making part of the global template.  If you are not willing to change and adjust the process, chances are it will become stagnant and obsolete.  100 years ago ice houses and transporting ice down the rivers was a booming business, now days we just use refrigerators...

Happy customizations!

Monday, November 2, 2009

Customizing TFS Process Template to Match Your Process at the Second Annual DogFood Conference

On November 12th 2009, I will be presenting on TFS Process Template customization.

TFS is a very versatile tool that has a lot of features and capabilities. I think of TFS as a highly customizable/adoptable to my needs framework. Prior to using TFS we had a lot of different tools to manage our development progress; while we can still use them now, the beauty of using of TFS is that all the data is centralized and available from one tool. It does not matter if it is source code I am after or status report or the progress state of the requirement - I can find all this information in one place, using my everyday tools.

How do you know that the team is following the development process, standards, policies? TFS Process Templates helps to insure that development guidelines and processes are adhere by team members.
TFS comes with two Process Templates (MSF for CMMI Process Improvement and MSF Agile Software Development). In my opinion the two templates are there as an example and a starting for customization and should not be used as is.

I have seen a lot of organizations implementing TFS and using it only for source code management. I have heard many different reasons on why it has been done, starting with: we are just easing into using TFS; or we are not managing our development the "Microsoft Way", or we already have a good process and we do not want to break it, etc...

In my presentation I will show that it is easy to make changes to the process templates, we can actually make changes not only before the project starts, but during the active project. Its like magic going from fighting the tool to actually using it!

Eventhough DogFood conference is sponsored by the partner community, it would not have been possible without Danilo Casino, read more about the conference from Brian's blog.
This 2 day event will feature over 40 technology topics spread over 4 tracks. 

Come and join us: DogFood agenda and registration.

You can track me down at the conference during the "Ask the Experts" in the Executive Briefing Room (4th floor) from 2:30 to 3:40 on 11/12/2009 8800 Lyra Dr., Suite #400, Columbus OH 43240

Tuesday, September 8, 2009

COALMG Recorded Session: Application Lifecycle: Security!

Last time COALMG had Brent Huston talking about web application security, you may find the recording of the session on COALMG site

Wednesday, August 26, 2009

QSI Grok Talk: PEX

Developers at Quick Solutions have a monthly meeting known as "Grok Talk". The meeting typically takes place during lunch. The goal of the meeting is to share information on the topic of choosing. The most recent Grok has been done by Mel Grubb on PEX.
Here is the recording of the session:

Friday, August 14, 2009

QSI Tech Night: Code Generation with T4 Templates

Recently, Mel Grubb has presented Code Generation with T4 Templates at Quick Solution's Tech Nigh meeting. While we still finalizing the details on how to share those presentations with the community you may watch Mel's presentation from here:


Monday, August 3, 2009

Follow up questions from KY SDLC

After the SDLC presentation we had several questions that we were going tofollow through:

Q: How can I see all created Alerts for the selected TFS Project?
The answer is Yes and No. There is no an easy UI that will tell someone of all project alerts, but this information can be easily discovered by two methods:
Option 1: Query the underlying database (not recommended), all subscriptions are stored in
[TfsIntegration].[dbo].[tbl_subscription]. If soemone chooses this path my recomendation would be: LOOK, BUT DON'T TOUCH.
There is a reson on why there is ae extensive set of API asvaialble to us, modifying data in the table may lead into path of unpredictable problems with TFS.

Option 2: use TFS API web services to aggregate the information.
you will start by calling ReadIdentityFromSource method of the http://localhost:8080/services/v1.0/GroupSecurityService.asmx service to find out the list of all users that have access to a project, assuming that you know names of the Application Groups (like Contributors, Project Administrators, etc) then you can set factor as: AccountName, and factorValue as: {Account Group Name, ex. [DCVR]\Contributors]}

Now that you have a list of users that have access to the project, you may get each person's subscription by calling EventSubscriptions method of http://localhost:8080/services/v1.0/eventservice.asmx service.

if you are not sure on what Application Groups you have, you may find them by either looking at the "Group Memebership" option of the Team Project Setting in the Team Explorer or you can use TFS APIs:

http://localhost:8080/services/v1.0/CommonStructureService.asmx?op=ListProjectsx to get the Project URI
http://localhost:8080/services/v1.0/GroupSecurityService.asmx?op=ListApplicationGroups to get the list of the groups for the selected Project URI.

More information of the TFS API can be found at Buck Hodges blog


Q: I am having a problem with check-in 50MB file, is there a setting to increase a max size of checked in file?
There are no switches in TFS that will limit a person on the size of the check-in file. Mike and I were able to check-in 100+MB file without any problems. My recomendation will be to check IIS and Application Event logs for logged messages as a strating point to troubleshoot the issue.

An interesting fact is: if you are checking large files (>16MB) then TFS deltas mechanism that is used to figure out the difference between file versions will not be used, which means that the entire file will be checked into source control. Not a big deal unless you are working with a lot of large files and have a database disk constrain. To ensure that TFS deltas mechanism is used to store file revisions you will need to update the default value of "deltaMaxFileSize" key located in {TFS Install Folder}\Web Services\VersionControl\:


Another interesting fact: by default workitem attachments are limited to 4MB sizes. To change that value one will need to call the GetMaxAttachmentSize method of http://localhost:8080/services/v1.0/ConfigurationSettingsService.asmx service.


Q: Can recorded Web Tests be hooked to the external data source to provide input values?
Yes, web test can be easily configured to support input of the values from the external sources like: database, csv, or xml. You may find additional details from my previous post: http://govorin.blogspot.com/2009/07/data-driven-web-tests-with-vsts2008.html

Thursday, July 30, 2009

Data Driven Web Tests with VSTS2008

Recently, I was asked if a recorded WebTest can be link to the external datasource for data feed. For example if we would like to pass different search parameters into a search page to test the logic and data of the search, we definitely do not want to have multiple tests that do the same thing. It totally make sense to have a single test that will feed different data and will aggregate/reports results back to us.

My second attempt at the webcasting runs through example on how to accomplish data bounding to the web test:


Visual Studio Team System Testers Edition has an option of recording a Web Test, once the test is created we can easily add a data source to it, by doing following steps:

1. Right Click on the web test, Select Add Data Source.
From here you will a Wizard with multiple choices:





I think that you may want to use CSV,XML types:


  • if you want BA or End Users to easily provide you with a test data

  • if the amount of data is small

  • you need a version history of data evolution (the file can be checked in into Source Control and deployed as part of the build process).


The Database choice is good:


  • large amount of data (thousand/million data points).

  • re-use the same data across multiple test/projects/teams/environments.


Once the data source is created, all is left is to replace hard coded values for the data from bound source.

2. Find a Post Parameter by expanding Request Form Post Parameter

3. Select Properties by Right Click on ContentPlaceHolder

4. Select created DataSource by Clicking on the drop down menu of the Value property.

5. Expand Datasource and Navigate to the needed column.





This is it, you know can run web test and feed the data from the external source.

But what if you want to add Validation and Extraction rules to your test and be able to run positive and negative tests, how do you do it with external data source?

You may take a similar approach and try to bind the value properties of the rules to data source, but you may run into a problem of setting the "Pass if Found" Boolean property.





In my opinion it would be better to convert the test to coded version and then you will have control over all aspects of the test.

6. Select Generate Code by right Clicking on the web test.





7. Make changes to the "PassIfFound" property of the rule.



Web Test Coded file from my demo can be downloaded from here