April 2009 - Posts
I have recently posted about bugs in: Are All Bugs Should Be Fixed? there I promised to post about how to manage bugs.
How to manage bugs is a little boring subject so I will try to explain it in a different way.
I will quote from a bug’s diary in the “Bugs Life” posts so we can understand what happens from a “bug’s perspective”, I will add my own explanations to it so we can understand the process.
I hope you will like it, lets start…
This diary has been written in what our bug describes as “Jail” which is what we call a bug tracking tool, our little bug is waiting for the final decision on what to do with it lets look at the first part of the diary:
“Dear diary,
I have decided to write these lines in order to leave something behind.
My name is bug 256, and I am now in jail because of the Fu--- tester Pitters.
He caught me drinking some bites so what??? and you know what he said? That I am a Critical bug, yes this is what he said only because I was naughty bad OK I was very bad…
The rumors say they are about to “Fix” me I heard that when they fix a bug he returns crazy, he never drinks again, they set you free but they always keep track on you, you need to always watch your back.
I don’t want to be “Fixed” what will happen with my wife then? I have a beautiful wife, her name is “ForEach”.
You know I haven’t told that to anyone but I think that she is cheating on me with the Debugger.
Yesterday I have seen the Debugger looks at her over and over and over again, he checked her from top to bottom, one day I will catch this Debugger and I will put him so many break points that he will never get to my wife.
That’s all for today, I meet my friend bug 510, we are going to get some bytes to drink…”
So what is the process that is described here?
We can see that the tester found the bug, documented it in the bug tracking tool and decided on its severity, the QA/Testers are the only people that decides on the bug’s severity.
After the bug is documented it waits for the decision on its “Fait”, the result can be to leave it unfixed or to fix it.
Not all bugs will be fixed!
On my next post we will see what happens to our little bug in the Bug Management Process…
Have Fun!
In the Excel Guide that I have published I mentioned the reporting capabilities of the Team System 2010, you can read about it here.
There is a webcast that shows how reports are done, this webcast made by Brian Keller and posted to Channel9, you can read more about channel9 here and you can see the webcast here.
In the Webcast Brian shows a few examples of reports from Team System 2008 and how to create custom reports in Team System 2010 using Excel.
Have Fun!!!
There are times when you need to write your own extraction rule, it is very simple to do that just follow these steps:
Step 1: Create a new project, make it a “Class Library” type.
Step 2: Add a reference to: Microsoft.VisualStudio.QualityTools.WebTestFramework.dll located in “Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\”.
Step 3: Add the following using:
using Microsoft.VisualStudio.TestTools.WebTesting;
using Microsoft.VisualStudio.TestTools.WebTesting.Rules;
using System.ComponentModel;
Note: The last using is not related to the Team System but it will let us the use of attributes in order to make the implementation simple.
Step 4: Next step is to add the following:
namespace CustomExtraction
{
[DisplayName("Rule Name")]
[Description("Rule Description")]
public class FirstExtractionRule : ExtractionRule
{
public override void Extract(object sender, ExtractionEventArgs e)
{
Put here your code…
}
}
}
Important: Don’t forget to make the class public!!!
Step 5: Now add a reference from your test project to the extraction rule project in order to see your new extraction.
Now you can start using your new extraction rule, you will see it with the name you defined in the “Display Name” attribute
Have Fun!!!
Many times I have been asked about the new features in Team System 2010.
I have recently read a post by Brian Harry giving an overview of the new features in Team System 2010.
You can read the post here.
Have Fun!!!
Many people using the Source Control of the Team System don’t really understand how do Get Latest Version works.
Customers calls me in the middle of the night telling me that they have lost files and lost changes, after the shuck is over I ask them what they did, they tell me: “I did Get Latest Version and I don’t see the files or the changes”.
Because that I am tired of getting to customers in the middle of the night I decided to write this post explaining how does it work.
Lets start with that the Get Latest Version is not overwriting local changes, so if you have deleted a file than the system sees it as an intention of making a change with the file, at that case deleting the file from the project. So at that case when doing Get Latest Version you will not get the deleted file.
Get Latest Version works in a check list method, means that when it gets a file from the server to your local file system it writes down the file and its version, it will not get that file again until the file version will be changed on the server.
In case you made local changes and changes have been made on the server the Get Latest Version will trigger the merge window in order to merge your local changes with the server changes.
Here are some examples:
Scenario 1:
You trigger a Get Latest Version and get all the files from the server, one of the files is test.txt and its version on the server is V5.
You check out the test.txt, open it and add your name to it.
You save the file but you don’t check in the file.
You trigger the Get Latest Version once again.
A check is being made in the check list and the source control finds that the server has V5 for test.txt and on the last Get Latest Version you got V5 so nothing happens to this file.
You check your local changes and you can still see them.
Scenario 2:
You trigger a Get Latest Version and get all the files from the server, one of the files is test.txt and its version on the server is V5.
You delete the file.
you don’t check in the deletion.
You trigger the Get Latest Version once again.
A check is being made in the check list and the source control finds that the server has V5 for Test.txt and on the last Get Latest Version you got V5 so nothing happens to this file.
You check your local file system and you find that the file is missing.
Scenario 3:
You trigger a Get Latest Version and get all the files from the server, one of the files is test.txt and its version on the server is V5.
You check out the test.txt, open it and add your name to it.
You save the file but you don’t check in the file.
You trigger the Get Latest Version once again.
A check is being made in the check list and the source control finds that the server has V6 for test.txt and on the last Get Latest Version you got V5.
The source control also see that your local version contains changes, so it triggers the merge tool.
So we can see the most common scenarios that can happen with the Get Latest Version, I hope that now its mechanism is clear and there will be less night work for me ;-)
Have Fun!!!
The answer is 2 – 5 days!
I am working with a lot of project managers and team leaders and when they show me there project plans I see tasks that are half a day, a day and many times I see tasks that are more than a week.
I like to clarify a few points before I continue:
- When talking about tasks I talk about any type of task, for example tasks for testers, programmers, IT etc.
- There are tasks that are estimated to more than 5 days, these are high level tasks that will be divided later to smaller tasks. It is important NOT to give these tasks to the target person that will eventually do the work.
- The time frame that is mentioned in this post is a guideline and not a constraint, there are exceptions that should be not more than 5 to 10 percent of the total amount of tasks.
Lets start with looking at the minimum, why not giving tasks time estimations that are less than 2 days?
Lets look at an example of a very very short project, 30 days of work 5 people (It is more likely to be a part of a project)
- Using tasks that are estimated for half a day will give you up to 300 tasks. That is a lot to manage in a very short time frame.
- Lets look at each person that is assigned to these tasks, each person will get an average of 60 tasks in a time frame of 30 days, I would have freaking out getting this amount of tasks to do in 30 days.
- Lets not forget that all these tasks should be written, you will need to write 600 tasks, is your time worth nothing?
- Imagine the Gantt you get with 600 tasks all in 30 days timeframe.
- When working in this timeframes you don’t give any space to your workers, you are MICRO Managing.
After seeing why not to make such short estimations, why not giving tasks time estimations that are longer than 5 days?
- Tasks that are longer than 5 days will be to high level and will open a window for misunderstandings.
- Tasks that are so long are to risky, you can have a delay that will be shown to late.
- There is a bigger risk for wrong time estimations for tasks that are longer than 5 days.
In order to see that you can do a simple exercise, see how many times you change the time estimations for your high level tasks when planning the detailed tasks. Most cases you will find out that you change it a lot.
We have talked about time frames for tasks and sow a few reasons for why not estimate tasks for less than 2 days and why not estimate tasks for longer than 5 days.
The reasons that I have mentioned here are few of many reasons, if you think of reasons that supports or against this recommendation that were not mentioned in this post, please share…
Have Fun!!!
I just sow a grate video in YouTube regarding the Visual Studio features.
This is not an ordinary video of Visual Studio, I hope you like it…
You can watch the video here.
In the video you can see a 5 years old girl explaining about here experience with Visual Studio.
Have Fun!!!
I will start by explaining what is a test plug-in and than I will show how to create one.
Web Test Plug-in is used to do the following:
- Run code that you write at the beginning or at the end of each Iteration.
In order to use it in the beginning and the end of each iteration you will need to override the PreWebTest and PostWebTest methods.
- Run code at the beginning or the end of each Request.
In order to use a Web Test Plug-in in the beginning and the end of each request you will need to override the PreRequest or PostRequest methods.
- Run code at the beginning or the end of each Page.
In order to use a Web Test Plug-in in the beginning and the end of each page you will need to override the PrePage or PostPage methods.
- Run code at the beginning or the end of each Transaction.
In order to use a Web Test Plug-in in the beginning and the end of each page you will need to override the PreTransaction or PostTransaction methods.
So, how do I create a Web Test Plug-in?
Step 1: Create a new project, make it a “Class Library” type.
Step 2: Add a reference to: Microsoft.VisualStudio.QualityTools.WebTestFramework.dll located in “Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\”.
Step 3: Add the following using:
using Microsoft.VisualStudio.TestTools.WebTesting;
using System.ComponentModel;
Note: The last using is not related to the Team System but it will let us the use of attributes in order to make the implementation simple.
Step 4: Next step is to add the following, see that you override only what you need:
namespace TestPlugin
{
[DisplayName("Web Test Plug-in Name")]
[Description("Web Test Plug-in Description")]
public class MyWebPlugin : WebTestPlugin
{
public override void PreRequest(object sender, PreRequestEventArgs e)
{
base.PreRequest(sender, e);
}
public override void PostRequest(object sender, PostRequestEventArgs e)
{
base.PostRequest(sender, e);
}
public override void PreWebTest(object sender, PreWebTestEventArgs e)
{
base.PreWebTest(sender, e);
}
public override void PostWebTest(object sender, PostWebTestEventArgs e)
{
base.PostWebTest(sender, e);
}
public override void PrePage(object sender, PrePageEventArgs e)
{
base.PrePage(sender, e);
}
public override void PostPage(object sender, PostPageEventArgs e)
{
base.PostPage(sender, e);
}
public override void PreTransaction(object sender, PreTransactionEventArgs e)
{
base.PreTransaction(sender, e);
}
public override void PostTransaction(object sender, PostTransactionEventArgs e)
{
base.PostTransaction(sender, e);
}
}
}
Important: Don’t forget to make the class public!!!
Step 5: Now add a reference from your test project to the Web Test Plug-in project.
Now the Web Test Plug-in is available.
So How can I use it?
Step 1: Click the “Add Web Test Plug-in” button.
Step 2: Choose the Web Test Plug-in to use and click OK
Run the test and see the result of the Web Test Plug-in.
Have Fun!!!
I have published a post regarding the Scrum Process Template here.
Now I like to talk about a grate addition to the Scrum with Team System.
In CodePlex there is a project name Scrum Sprint Monitor located here.
This project is a screen saver that shows you the Sprint status at all times with nice summaries, graphs and charts.
To set it up you need to do the following:
Step 1: Edit the “SprintConfiguration.txt” file
Here is an example:
ProjectName= Scrum Example
ProcessTemplateName= Scrum for Team System
'IterationId= 162698
IterationPath= Scrum Example\Release 1\Sprint 1
'BuildDefinitionName= <CI Build Definition Name>
SprintStartDate= 2009-3-18 10:00:00 -6:00
SprintEndDate= 2009-4-18 17:00:00 -6:00
Step 2: Edit the “team-info.xml” with the Team Members
Here is an example for one team member, you can add as many as you like:
<?xml version="1.0" encoding="utf-8"?>
<team-members>
<team-member name="Darren">
<time-zone>Eastern Standard Time</time-zone>
<workday>
<start>08:00:00</start>
<end>17:00:00</end>
</workday>
<lunch>
<start>11:30:00</start>
<end>12:30:00</end>
</lunch>
</team-member>
</team-members>
Step 3: Launch the “ScrumSprintMonitor.Wpf.Application.scr” a screen will popup, fill all fields.
Team Server Name – The TFS server name.
Sprint Configuration File – Navigate to the “SprintConfiguration.txt” file.
Team Members Configuration File – Navigate to the “team-info.xml” file.
Step 4: Click OK to start the screen saver.
Have Fun!!!
Scrum is an Agile development methodology that has a growing audience in the software development world.
I have been asked by customers of mine regarding the Team System and the Scrum.
Team System is very flexible and can easily support the Scrum Methodology with a few customizations, however there are Process Templates already made with the Scrum support so you can download them and start using them with no charge.
I will mention here two of these Process Templates:
CodePlex:
I will start with the CodePlex Project Template that can be downloaded from the “Scrum Process Template Home Page” located here.
The CodePlex Project Template has versions that supports the Team System 2005 and the Team System 2008.
In the site you can read about the Process Template, download it and see what other people think about it.
Conchango:
Conchango company has developed a free Process Template for Scrum that can be downloaded from there site located here, in order to download the template you will need to register to the site with no charge.
The Conchango company has created Process Templates for the Team System 2005 and Team System 2008.
The Conchango company has also developed a nice User Interface that is very similar to the way you work with notes on the wall, I will show it in one of my future posts.
Have Fun!!!