Tuesday, January 29, 2013

TFS Adminsitration - How to Delete Workitems

This is based on VS2010. 2012 wiull have a different installation path.

For 64 bit OS machines use below. For 32 bit machines use c:\program files\

Escape the path when doing the cd.

cd "c:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE"

You need admin rights to do this operation. Make really sure you know what item you want to destroy, especially in a multi-collection  multi-project environment.

c:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE>witadmin destroywi /collection:http://sql1:8080/tfs/IH  /id:6576

Are you sure you want to destroy work item(s) 6576? This action is not recoverable. (Yes/No) y
The work item(s) were destroyed.

Wednesday, January 9, 2013

Test DB Connection w/o SQL Server Installed

There are times you do not have Management Studio installed on a server and need to validate a connection can be made to the database tier. The easiest way to do this is by creating an empty file and saving it with a .udl extension (e.g. TestDBConnection.udl). This opens a native connection tool. Be sure to know the type of security, account to be used, and the connection provider you will use (look in your config file). If you are missing the SQL Server Native Client in the provider tab, it is not installed on your server. This needs to be installed if you are targeting this provider in your code (which is the most effecient way to connect to a SQL Server db). You can then open the file and see the connections string that was generated.

Sunday, November 25, 2012

Two Ways of Initializing a New Object in C#

Recently I posted a question about the different ways one can initialize an object in a C# class. I generally use EXAMPLE 1 below. Resharper suggests I use EXAMPLE 2. EXAMPLE 1 is more intuitive to me (since it is want I always use). However my friend FC pointed out he prefers to "choose a syntax that directly associates the data with the name of its field, rather than relying on the order of the arguments, wherein various perils are wrought", meaning Example 2. I find this argument quite compelling.
My amigo BS has a very nice explanation "The first is required if you need those values for processing during the initialization of your object." This is corroborated in the linked MSDN article at the bottom. BS goes on to say: EXAMPLE 1 "can also be used as a way to force anyone creating the object to always provide those values. The second is useful for things like Data Contract objects where you need a parameter-less constructor for serialization and to assign values directly to its properties in one step. The key difference is values are assigned after construction in the second example."

Even
though my tests tend not to have the serialization requirements facilitated by EXAMPLE 2 I will consider switching course for the sole value stated by FC.
EXAMPLE 1
public static void Main()
{
     StudentName student1 = new StudentName("Marcus", "Deatonus");
...
}
EXAMPLE 2
public static void Main()
{
     StudentName student1 = new StudentName
       {
          FirstName = "Chris",
          LastName = "Bellcamp"
       };
...
}
REFERENCES
http://msdn.microsoft.com/en-us/library/vstudio/bb397680.aspx

Monday, November 12, 2012

SQL Server Unicode and Codepage Support




STEP 1: Find all your collations...



CREATE TABLE #CollationTbl
(ID INT Identity (1,1),ServerCollation sql_variant, DatabaseName varchar(300),    DatabaseCollation sql_variant ,    DatabaseCollationDescription nVarchar(500))

EXEC sp_MSforeachdb


'

Declare
    @1 sql_variant = (SELECT SERVERPROPERTY(''Collation''))
    ,@2 varchar(300) = "?"
    ,@3 sql_variant = (SELECT DATABASEPROPERTYEX("?",''Collation''))
    ,@4 varchar(300)
   
    SET @4 = (SELECT DESCRIPTION FROM fn_helpcollations() WHERE Name = @3)



INSERT INTO #CollationTbl
SELECT @1 , @2, @3, @4
    ;
   
'

SELECT * FROM #CollationTbl;

DROP TABLE #CollationTbl;

STEP 2: Look at each element of the collation. The code page element should be the same or lower page than the code page set in the OS.

The OS codepage can be found using

C:>systeminfo|findstr -i locale
System Locale:             en-us;English (United States)
Input Locale:              N/A

You can also try using chcp, but it really defines the codepage used in the command prompt session, not the codepage for the server. This is useful for debugging character/codepage incompatibility.

C>chcp
Active code page: 437

References
http://msdn.microsoft.com/en-us/library/ms143726%28v=sql.105%29.aspx
http://stackoverflow.com/questions/1259084/what-encoding-code-page-is-cmd-exe-using
http://msdn.microsoft.com/en-us/library/ms186356%28v=sql.105%29.aspx

Wednesday, November 7, 2012

TFS Aministration - How To Modify a WorkItem Type In Project A Based on Project B


I recently made a purchasing decision for our company to invest in Microsoft Test Manager. This is a shop that uses TFS for source control, work item tracking, and continuous integration. It made sense to leverage the mighty TFSWarehouse for my quality metrics as well. The down side of the decision in general is cost and complexity of administration. I am ok with the administration tasks personally, so for my team I can mitigate that concern. The value of the quality reporting solution mitigates the cost, at least at this company. I would sya that if we were using a setup like Team City (or Cruise Control), a Kanban board, and Mercurial I would be far less likely to make this same decision. The value would not be there as it would require a bunch integration patches just to execute test cases associated with automation.

A recent issue I had is the reason for this post. One team was unable to leverage the UI controls to create test steps and shared steps. I originally thought this was an issue with us working in a mixed MTM 2012 / TFS 2010 environment. It turns out the test case and shared step templates were out of date in one project. The links at the bottom of the page have all the details, but the basic work plan was:

LIST WORKITEM TYPES
PS C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE> .\witadmin listwitd /collection:http://sql1:8080/tfs/CollectionA  /p:Broken
PS C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE> .\witadmin listwitd /collection:http://sql1:8080/tfs/CollectionA  /p:Working

EXPORT WORKITEM TYPES FROM Working
PS C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE> .\witadmin exportwitd /collection:http://sql1:8080/tfs/CollectionA  /p:Working /f:c:\WorkingTestCaseSettings.xml /n:’Test Case’
PS C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE> .\witadmin exportwitd /collection:http://sql1:8080/tfs/CollectionA  /p:Working /f:c:\WorkingSharedStepsSettings.xml /n:’Shared Steps’

EXPORT WORKITEM TYPES FROM Broken
PS C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE> .\witadmin exportwitd /collection:http://sql1:8080/tfs/CollectionA  /p:Broken /f:c:\BrokenTestCaseSettings.xml /n:’Test Case’
PS C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE> .\witadmin exportwitd /collection:http://sql1:8080/tfs/CollectionA  /p:Broken /f:c:\BrokenSharedStepsSettings.xml /n:’Shared Steps’



Make a copy of the Working export files.
Change the  <GLOBALLIST name="Builds - Working" /> value to  <GLOBALLIST name="Builds - Broken" /> in the Working shared steps export file.
Change the  <GLOBALLIST name="Builds - Working" /> value to  <GLOBALLIST name="Builds - Broken" /> in the Working test case export file.

VALIDATE THE MODIFIED WORKITEM TYPES FILES
PS C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE> .\witadmin importwitd /collection:http://sql1:8080/tfs/CollectionA  /p:Broken /f:c:\BrokenTestCaseSettings.xml /v
PS C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE> .\witadmin importwitd /collection:http://sql1:8080/tfs/CollectionA  /p:Broken /f:c:\BrokenSharedStepsSettings.xml /v

IMPORT WORKITEM TYPES FROM Working TO Broken
PS C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE> .\witadmin importwitd /collection:http://sql1:8080/tfs/CollectionA  /p:Broken /f:c:\BrokenTestCaseSettings.xml
PS C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE> .\witadmin importwitd /collection:http://sql1:8080/tfs/CollectionA  /p:Broken /f:c:\BrokenSharedStepsSettings.xml

REFERENCES
http://social.msdn.microsoft.com/Forums/en-US/vsmantest/thread/6658f6e8-ab07-4579-8db0-441d322ff223
http://msdn.microsoft.com/en-us/library/dd312129%28v=vs.100%29.aspx
http://blogs.msdn.com/b/lakhminder/archive/2010/09/30/tfs-2010-enable-test-case-management-for-upgraded-team-projects.aspx


Tuesday, October 9, 2012

Microsoft Test Manager 2012 Setup

There is not much difference between 2010 and 20012 MTM. The subtle differences are covered in any number of blog posts. However I often forget what order you need to create settings when installing form scratch, hence this post.

Close visual studio
Install visual studio test edition or ultimate.
Reboot not once, but twice.
If you have not already done so, install TFS power tools to modify areas and iterations.
open test manager
create all your test plans for each project names should be meaningful from iteration to iteration if the test plans is reusable
write your test plans to be reusable as much as possible.
create a lab environment
create roles based on the environment
...stopping here as TMT 2012 does not allow environment configuration against TFS 2010.

Wednesday, September 26, 2012

CTO Interview Question Set



Have candidate describe his current role and skills
Describe our position.

Ask candidate these questions:
How do you communicate financial justifications for staffing, hardware, and software?
How do you amortize time spent developing software?
Where is the line of responsibility drawn between technical and business planning?
How do you stay current with technology innovations?
How are the acronyms API and SSO relevant to a web architecture?
What excites you about technology ?
What means do you use to measure the effectiveness of your technology department? How do you communicate that to non-technical cohorts in the c-suite or on a board of directors?
What role does a CTO play in ensuring retention of key engineering assets?
What do you communicate in a technology roadmap and who is the audience?
What is a product roadmap and how does it vary from a technology roadmap? Who is the author of each?