<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-34236314</id><updated>2012-01-29T14:33:02.384-08:00</updated><category term='zero bug bounce'/><category term='Bug'/><category term='test metrics'/><category term='TemFS'/><category term='Work Item'/><category term='bug convergence'/><title type='text'>Lucubrations and platitudes about testing</title><subtitle type='html'>Testers are usually accused to be quite opinionated. Well, this is the place where I will prove them right!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://testlucubrations.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-34236314.post-5320570018268249122</id><published>2012-01-14T18:11:00.010-08:00</published><updated>2012-01-29T14:07:35.944-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test metrics'/><category scheme='http://www.blogger.com/atom/ns#' term='bug convergence'/><category scheme='http://www.blogger.com/atom/ns#' term='zero bug bounce'/><title type='text'></title><content type='html'>I am subscribed to several mailing lists. One of them is Software Test Professionals (&lt;a href="http://www.softwaretestpro.com"&gt;http://www.softwaretestpro.com&lt;/a&gt;). They organize training and lectures, and in November it was offered one with the title "My Testing Metrics Allergy" (by Dawn Haynes, more information at &lt;a href="http://www.softwaretestpro.com/Item/5332/?utm_source=Email&amp;utm_medium=email&amp;utm_content=111611-ONLINE-SUMMIT-&amp;utm_campaign=TRAININ"&gt;http://www.softwaretestpro.com/Item/5332/?utm_source=Email&amp;utm_medium=email&amp;utm_content=111611-ONLINE-SUMMIT-&amp;utm_campaign=TRAININ&lt;/a&gt;G). The title and the topic stroke a chord. I have been in too many meetings where BA, PM, SME and others with a tester hat on their head uttering ridiculous sentences like "testing is 78.12% completed". Why this sentence is ridiculous? Well, for several reasons: &lt;br /&gt;&lt;br /&gt;a) The two digits precision have no sense. This simply shows the organization has spend a lot of money and effort in a software program that keeps tally of how many test scripts have been executed versus the ones that have not been executed. Given the nature of software testing (see below) this precision is meaningless. In most of the cases the most can be said is "Testing is approximately 25/50/75 % completed".&lt;br /&gt;&lt;br /&gt;b) The statement implicitly assumes all test scripts are equal. They are not. Let's use the following example: &lt;br /&gt;- Test script to validate the correct position of the corporate logo.&lt;br /&gt;- Test script to measure the time to respond for a user, when there are already 1000 users in the system&lt;br /&gt;&lt;br /&gt;the first is straightforward to execute and set up. The second... well, if nothing else will require several measurements (to get some statistics), some data analysis and correlation with other performance indicators of the system. In addition the set up will be nothing but straightforward.To give to both test scripts the same weight when calculating the percentage of completion of testing is to have a skewed view of reality.&lt;br /&gt;&lt;br /&gt;c) The percentage does neither account for missing requirements more requirements that have some, but not the entire necessary test to cover them. In theory it should not happen, but in reality it does.&lt;br /&gt;&lt;br /&gt;d) Usually test scripts may cover more than one requirement. If mapping between requirements and test cases is not perfectly done, the percentage of completion will be misleading.&lt;br /&gt;&lt;br /&gt;e) When you test, you venture into an unknown territory where you may discover surprises that anybody expected. Surprises that were not hinted by any requirement. How these surprises are reflected in the percentage of completion value? The answer is that they are not.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;These are a few of the problems a very precise percentage of completion involves. In other words, the error bars around the number are much larger than 0.01%, or even larger than 10%&lt;br /&gt;&lt;br /&gt;So, how you can evaluate where you are in your testing effort? Well, it depends on the project and/or your experience with similar projects.  In my case, I like to use the bug convergence and zero bug bounce milestones (check &lt;a href="http://technet.microsoft.com/en-us/library/bb497042.aspx"&gt;http://technet.microsoft.com/en-us/library/bb497042.aspx&lt;/a&gt; for clarification of these concepts in the context of the stabilization phase of a software project). Based on my experience, these milestones provide, in the context of an integration project, the 30% and 60% completion marks.  It is less impressive that being able to say 29.78% or 61.07%, but, in my opinion, it is much more honest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-5320570018268249122?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/5320570018268249122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/5320570018268249122'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2012/01/normal-0-false-false-false-en-ca-x-none.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-34236314.post-5717861867796318377</id><published>2011-09-12T20:56:00.002-07:00</published><updated>2011-09-12T21:09:58.802-07:00</updated><title type='text'></title><content type='html'>In this moment I have changed my tester hat for a project manager, or better said, general contractor hard hat. I am building what I hope will be my future house.&lt;br /&gt;&lt;br /&gt;It's a lot of excitement, a lot of frustration, and a lot of opportunities to learn. And one of the things I have learnt is that professions are not so different from one another. &lt;br /&gt;&lt;br /&gt;A few weeks ago the structural engineer -the guy that make sure the architect design will hold in case of storm, high winds, earthquake and so on- presented me the structural drawings. He has a reputation of &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;preferring&lt;/span&gt; to overdue things. However, he was very frank: the structure he designed will ensure that in case of earthquake -the most significant hazard in my corner of the woods- the house will not collapse. However, after an earthquake, the house can not be inhabitable. To continue being useful after an earthquake (think of hospitals, fire stations and so on....) you need to spend more money and time.&lt;br /&gt;&lt;br /&gt;This is a situation identical to software testing: to execute all possible testing paths and areas (functionality, performance, stress, security, usability....) will require an enormous effort that you may choose not to do. The important aspect is the decision needs to be made rationally and even more important, documented. All the stakeholders should be aware of the limitations of the testing effort and the trade off that have been made.&lt;br /&gt;&lt;br /&gt;And trade off are a part of life, and part of software testing. Unless you are testing a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;flight&lt;/span&gt; control system, for example...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-5717861867796318377?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/5717861867796318377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/5717861867796318377'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2011/09/in-this-moment-i-have-changed-my-tester.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-34236314.post-1972642025462523441</id><published>2011-03-02T10:12:00.004-08:00</published><updated>2011-03-10T14:11:43.397-08:00</updated><title type='text'></title><content type='html'>A few months ago, I posted the following question to a test discussion group&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;Is Agile Testing oxymoron?&lt;/strong&gt;&lt;br /&gt;Does Agile make life for testers more difficult?&lt;br /&gt;Agile was though by developers to solve specific developers' issues. However, for other trades like QA Agile has done not much, and arguably has complicated our life a bit more, if nothing else creating false expectations: integration testing, performance testing, stress testing and so on can not follow an Agile model, despite some project managers wish it could.&lt;br /&gt;&lt;br /&gt;I would to start a discussion around this topic, if nothing else to gauge the opinion of fellow QA engineers. If nothing else may provide some food for thought for project managers that think that vague user stories with changing details are enough to develop a good test script!&lt;/blockquote&gt;&lt;br /&gt;Unfortunately, only Jason M. Morgan replied to my post. His comments are&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;My most recent employer was using Scrum. The QA activities related to the new features being developed in the scrum team fit easily into the sprints. But there were larger testing activities such as regression testing that were to big for one team or even one sprint. So I had to break down the regression testing into small pieces that could be assigned to each team within a sprint. It was a lot of overhead for no benefit other than following the scrum model.&lt;/blockquote&gt;&lt;br /&gt;So, clearly, this topic didn't awake the imagination of testers. However, I still think that Agile, as currently formulated and applied, doesn't make life easier for tester and I will argue that to other trades involves in the software development process.&lt;br /&gt;&lt;br /&gt;I think that Agile contains a lot of good principles and it makes a lot of sense to use it in most projects, specially the small/middle size. But I would like to see Agile taking into account the needs of Business Analyst, Technical Writers, Trainers, Infrastructure, QA and QC. For example, it is very difficult for a Technical Writer to put a story into words without really knowing how the other stories have been implemented. The same for a tester: it is possible to test the flow of a single story, but it is much harder to imagine how this story interacts with others if they exist only in concept (think about processing a payment as one story, but the create payment story still is under development). It is in this context that I say Agile has shifted work from development to the other areas. Now the question is not to throw Agile away, but how to extend its benefits to everybody that contributes to the completion of a project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-1972642025462523441?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/1972642025462523441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/1972642025462523441'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2011/03/few-months-ago-i-posted-following.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-34236314.post-8995521482585597159</id><published>2010-11-18T12:15:00.005-08:00</published><updated>2011-03-10T14:28:37.063-08:00</updated><title type='text'></title><content type='html'>&lt;p&gt;&lt;strong&gt;Lessons learned from Performance Testing a complex application&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;After two years too busy to write any blog, I have now a bit more time to share some of the lessons I have learned while doing Performance Testing for a complex application (Enterprise-level, several millions code lines kind of application).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Complex application usually mean lots of different components: network, hardware, software... When producing performance data, you need to gather data about how each component behaves. It is not useful to say "the application is slow" you need to say "the application has a bottleneck in the disk I/O".&lt;br /&gt;&lt;br /&gt;- You will be able to gather pretty much all the information you need about how your system is working using the performance counters embedded into your OS (MS, Linux...).&lt;br /&gt;&lt;br /&gt;- Use only the performance counters you need, as they consume resources. Once you realize the values provided by a counter are "good", you can stop using it.&lt;br /&gt;&lt;br /&gt;- When the application is far from being optimized, run all the counters and make a list of the worse one grouping them by logical areas (data repository, UI, business processes...)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;- With the previous list, test individual components that are described by the counter. For example you may focus on the Data repository layer, looking for the disk I/O, for hard/soft page faults etc. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;- Based on the previous results, concentrate then in a single counter. Using the previous example you may focus in the disk I/O counter if the other counters look Ok.&lt;br /&gt;&lt;br /&gt;- Focus first in the low hanging fruit: most performance problems are related to network bottlenecks, lack of memory, disk I/O  and pinning CPUs. Once these are removed, you can focus in secondary problems: too many threads, unoptimized queries, unmaintained databases etc. After that, you do not have so many options. The most available would be to throw more hardware to the problem. If the Performance is still unsatisfactorily, then rearchitecting your application is usually the only option left &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;- Unless there are egregious errors, refactoring your code helps very little if at all.&lt;br /&gt;&lt;br /&gt;- Use automation to create load. To measure response time to user's actions use a human with a stopwatch&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This last point may be surprising for some. My experience is that introducing timers in the code doesn't work. First it is not always possible, second, in practice it is pretty much impossible to capture certain events: you can capture when an image starts to be displayed in the screen, but not when it is shown entirely. If you want to measure the user experience, better to do it by hand, assuming the role of your user. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-8995521482585597159?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/8995521482585597159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/8995521482585597159'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2010/11/lessons-learned-from-performance.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-34236314.post-6761516748712235694</id><published>2008-11-04T21:23:00.004-08:00</published><updated>2010-11-18T12:19:45.543-08:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;To automate or not automate, this is the question...&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;I&gt;Whether 'tis nobler in the mind to suffer&lt;br /&gt;The slings and arrows of manual testing&lt;br /&gt;Or to take arms against a sea of automated test&lt;br /&gt;And by developing them. To die, to pain--&lt;br /&gt;&lt;br /&gt;.....&lt;br /&gt;&lt;/I&gt;&lt;br /&gt;&lt;br /&gt;Anybody that has tried automation knows that automation needs to be done carefully. Managers, convinced by automated tools salespeople and Start Treck voice activated computers will try to force you to automate everything. The arguments will be the usual ones of increase productivity, results reliability and speed. However the land of automated tests is littered with corpses and failed projects.&lt;br /&gt;&lt;br /&gt;Why? Well, based on what I have seen the foremost reason is that test automation are projects that need to be though, managed, staffed and planned as any other software development project. To be useful they need to answer the following questions:&lt;br /&gt;&lt;br /&gt;&lt;UL&gt;&lt;br /&gt;&lt;LI&gt; Will the test be done a limited number of times or it is a test that needs to be executed regularly?&lt;br /&gt;&lt;LI&gt; The requirements for the application under test, will change soon? change with time? are still undefined?&lt;br /&gt;&lt;LI&gt; Is the code under test architected in such a way that a change in a component will not affect our automated test?&lt;br /&gt;&lt;LI&gt; Can the code under test be automated with an off-the-shelve software?&lt;br /&gt;&lt;LI&gt; Have the code under test be instrumented? Does it have hooks that can be used?&lt;br /&gt;&lt;LI&gt; Is the automated test code modular?&lt;br /&gt;&lt;LI&gt; Is the automated test code easy to maintain?&lt;br /&gt;&lt;LI&gt; There is time allocated to document your automated test?&lt;br /&gt;&lt;LI&gt; Are you testing your automated tests?&lt;br /&gt;&lt;/UL&gt;&lt;br /&gt;&lt;br /&gt;These are basic considerations that need to be answer before proceeding with an automation project. However, before this considerations it is fundamental to consider the first point Ihave made: Any automation exercice as a project in itself. This means it need to have the appropriate level of staffing, project management supervision, methodology... Failure to plan the automation project appropiately will incur the same risk as any other project: overworked staff, last minute problems, cost/time over runs...&lt;br /&gt;&lt;br /&gt;So, my sincere recommendation to anybody trying to automate the testing of their new piece of software: treat it seriously as a subproject of your main project&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-6761516748712235694?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/6761516748712235694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/6761516748712235694'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2008/11/to-automate-or-not-automate-this-is.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-34236314.post-5914289693383222356</id><published>2008-03-17T21:42:00.004-07:00</published><updated>2008-11-04T21:48:42.489-08:00</updated><title type='text'></title><content type='html'>&lt;div&gt;&lt;B&gt;Do not give [free] honest advice/assesment in job interviews&lt;/B&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Ok, this is a rant, so feel free to skip it!&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;About a year ago I had a job interview for a contract position. The project was complex, ill organized and with high probability of failure.  A brief description of the project is:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Company A starts a job for a customer. They were going to adapt their exisiting product, based on US business processes, to the Canadian business processes. After a year, and no progress, company B purchases company A. Another year pass with nothing to show. It is now two years after the project has begun and the customer still has nothing. When company B realizes the mess, decides to cut their loses and hires company C to finish the project. Customer sets up a team to speed the project that will coordinate internal resouces with company C, who incidentlly are  located in a different time zone.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;At this stage I interviewed for the QA position in the coordinating team. Among other responsibilities, it includes testing the code that Company C is producing.  There were no procedures, vague specs and the group of developers used the word Agile methodoly to describe what is a cowboy approach.  The PM, working for the customer, has no carrot no stick over company B or company C. My assesment of the situation was somehow bleak, and I proposed measures like change control, regular risk meetings, clearly defined [and achievable]  goals for each iteration... I know I sounded a bit negative, but definitely I didn't wanted to sound like all was fine: it wasn't.&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;A year later, and because Vancouver is an small IT town, I have learnt they hired another person that had 'Don't worry, be happy' as mantra. Six month after the hiring the PM realized it was not working. So, they started to do risk meetings, put in place a change control and each iteration has a small number of features that had to be implemented. It has took over three year for the customer to have something that is operational and can be put into production.&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;Conclusion: next time I want the job I need to smile, assuage all fears with 'It's going to be fine' and send a bill for any advice I may give during the interview.&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-5914289693383222356?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/5914289693383222356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/5914289693383222356'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2008/03/do-not-give-free-honest-adviceassesment.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-34236314.post-1894701812786898426</id><published>2008-01-12T17:50:00.000-08:00</published><updated>2008-01-12T18:29:45.699-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work Item'/><category scheme='http://www.blogger.com/atom/ns#' term='Bug'/><category scheme='http://www.blogger.com/atom/ns#' term='TemFS'/><title type='text'></title><content type='html'>&lt;strong&gt;Adding/modifying work items in Team Foundation Server -Part 2&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;In the previous blog I explained how to create a 'Steps to reproduce' control. Lets now add this control to default Bug Work Item (WI). In this case, I want to add 'Steps to reproduce' as a new tab.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;If you go to the Layout tab, you will get something like the following image&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5154776980886652802" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_q9ca2jlssd8/R4lyWlocB4I/AAAAAAAAADI/Nc5IfVQY7C4/s400/Control_list_1.jpg" border="0" /&gt;&lt;br /&gt;It is easy to read. The TabGroup refers to tab structure &lt;img id="BLOGGER_PHOTO_ID_5154777354548807602" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_q9ca2jlssd8/R4lysVocB7I/AAAAAAAAADg/IycDworbRPU/s400/tabs_1.jpg" border="0" /&gt; that previously I have qualified as not meeting the tester’s needs. Now that we have created the 'Steps to Reproduce' control, we can add it to the layout.&lt;br /&gt;&lt;br /&gt;To add a new tab element, right Click the ‘TabGroup’ folder and choose ‘New Tab Page’. A new ‘Tab Page-New Tab Page’ element will appear at the bottom of the ‘TabGroup’ list. On the right pane, change the label to something more meaningful, for example ‘Steps to Reproduce’. Note: this simply adds a new container, in this case a tab, where we can place control.&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5154777350253840274" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_q9ca2jlssd8/R4lysFocB5I/AAAAAAAAADQ/zzeAvaWrdmk/s400/Control_list_2.jpg" border="0" /&gt;&lt;br /&gt;Now, we are going to add the previously created 'Steps to reproduce' control we created in the first part of this tutorial to this new tab. To add this control to the tab, right click the ‘TabPage- Steps to Reproduce’ and choose ‘New Control’. The property pane appears, change the label to ‘Steps to Reproduce’, and choose the Visiphor.Steps we created for the field Name field.&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5154779377478404098" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_q9ca2jlssd8/R4l0iFocCAI/AAAAAAAAAEI/evXokIFTwuY/s400/Control_list_3.jpg" border="0" /&gt;&lt;br /&gt;Accept everything, and if you click the ‘Preview Form’ button, you will get the ‘Steps to reproduce’ tab added to the tabs section&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5154778265081874402" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_q9ca2jlssd8/R4lzhVocB-I/AAAAAAAAAD4/1jqYc0syenc/s400/tabs_2.jpg" border="0" /&gt;&lt;br /&gt;If you want to move this tab to be the first, right click the ‘TabPage – Steps to Reproduce’ folder and ‘Move Up’ as many times you want.&lt;br /&gt;&lt;br /&gt;At the end, you can build a bug work item like&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5154777358843774930" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_q9ca2jlssd8/R4lyslocB9I/AAAAAAAAADw/Mu85OL5Y4tM/s400/bug_WI_1.jpg" border="0" /&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;That fits much better my needs as a tester!&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Notice the new tab 'Steps to reproduce' contains the control 'Steps to reproduce'&lt;br /&gt;&lt;br /&gt;Hope it will work well for you too.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-1894701812786898426?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/1894701812786898426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/1894701812786898426'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2008/01/addingmodifying-work-items-in-team.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_q9ca2jlssd8/R4lyWlocB4I/AAAAAAAAADI/Nc5IfVQY7C4/s72-c/Control_list_1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-34236314.post-1588368571101334917</id><published>2007-07-10T12:12:00.000-07:00</published><updated>2008-01-12T18:28:40.788-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work Item'/><category scheme='http://www.blogger.com/atom/ns#' term='Bug'/><category scheme='http://www.blogger.com/atom/ns#' term='TemFS'/><title type='text'></title><content type='html'>&lt;b&gt;Adding/modifying work items in Team Foundation Server -Part 1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As most of you in the trade will know, Microsoft released in 2006 Team Foundation Server (TFS), a new product/tool that allows testers, developers and architects to work together using Visual Studio as its GUI. In this way, a seamless environment will be created where all these roles can work together, or at least this is what the Sales&amp;amp;Marketing department would like us to believe. In the practice, this level of integration is some iterations away.&lt;br /&gt;&lt;br /&gt;TFS out of the box include two approaches: CMMI and Agile. In both of them it has the concept of work items (WI), among them, it has a WI named 'Bugs'. Unfortunately, I find the Bug WI included in these templates not very useful. So, if you want to create a new Bug WI in TFS with the product as it is out of the box, you will get the following&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5085653359028604210" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_q9ca2jlssd8/RpPeyPusDTI/AAAAAAAAABU/jU1_4VqWSAs/s400/VS_no_mods.JPG" border="0" /&gt; Enlarging the tab section (apologies for the bad quality of some of the images...)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_q9ca2jlssd8/RzIyoeREgfI/AAAAAAAAACw/K_oL2Eexass/s1600-h/VS_no_mods_2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5130218596429234674" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_q9ca2jlssd8/RzIyoeREgfI/AAAAAAAAACw/K_oL2Eexass/s400/VS_no_mods_2.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;As a tester I am surprised to see how 'developer' oriented is this interface. For example: I couldn't care less about the fix, however, however, I think it is very important to describe the steps to reproduce the bug. This is a single example... there are several more fields/tabs I would like to see that are not there by default!.&lt;/p&gt;&lt;p&gt;So, how you manage to customize TFS to your needs? This blog will guide you to the process of creating/editing work items.&lt;br /&gt;&lt;br /&gt;First you need to have Visual Studio 2005 on your machine. Then, you will need to download the following tools from Microsoft:&lt;/p&gt;&lt;p&gt;&lt;a href="http://go.microsoft.com/?linkid=6270225"&gt;http://go.microsoft.com/?linkid=6270225&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/vstudio/aa718351.aspx"&gt;http://msdn2.microsoft.com/en-us/vstudio/aa718351.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The tool properly is the second link, but you need the components included in the first.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Once is installed, you will be able to access the documentation, that is pretty clear. You access the documentation from Start&gt;All Programs&gt;Microsoft Team Foundation Server Power Tools&gt;Microsoft Visual Studio Team System Process Editor&gt;PEUserGuide.doc&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5085655858699570514" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" height="68" alt="" src="http://4.bp.blogspot.com/_q9ca2jlssd8/RpPhDvusDVI/AAAAAAAAABk/Drkrx9Kx2J0/s400/Bar_1.JPG" width="511" border="0" /&gt; &lt;/p&gt;&lt;p&gt;If you want to modify a WI, from Visual Studio you select the menu item Team&gt;Process Editor&gt;Work Item Types&gt;Open WIT from Server&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5085657731305311586" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_q9ca2jlssd8/RpPiwvusDWI/AAAAAAAAABs/LzhApZtnYgQ/s400/WIT.JPG" border="0" /&gt;&lt;/p&gt;&lt;p&gt;You will get the following interface &lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5085658122147335538" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_q9ca2jlssd8/RpPjHfusDXI/AAAAAAAAAB0/8t37JAM0CBk/s400/editor.JPG" border="0" /&gt;&lt;/p&gt;&lt;p&gt;In this case, 'Add' a new control (controls in the .NET sense, like text boxes, drop down...) with type Plain Text. The reference name used in this case is Visiphor.Steps, the first part is the namespace used internally and the second part anything you want. For this example, I have created a new control named 'Steps to reproduce.&lt;/p&gt;&lt;p&gt;The second part of this article will refer of how to add this control to a WI.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-1588368571101334917?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/1588368571101334917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/1588368571101334917'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2007/07/as-most-of-you-in-trade-will-know.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_q9ca2jlssd8/RpPeyPusDTI/AAAAAAAAABU/jU1_4VqWSAs/s72-c/VS_no_mods.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-34236314.post-7209813986278209557</id><published>2007-06-04T13:32:00.000-07:00</published><updated>2007-06-04T14:00:00.146-07:00</updated><title type='text'></title><content type='html'>&lt;p&gt;Second part of the list, as promised! I feel a bit less strongly about the recommendations in this second list. In some cases, I would advise a 'menu approach' that will allow the team to pick and choose. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;As before any omments, suggestions and real life stories will be most certainly welcomed!&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Action&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Who is responsible?&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Phase&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Code Coverage&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The new Visual Studio suite offers the possibility to explore all the possible paths of a piece of code. If all the lines of code are executed at least once in a test environment, it is less probable that they will contain critical errors. Also, if there are areas of the code that are never accessed, it would point to areas where maintenance can be compromised.&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Developers&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Development&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Tracing requirements to Use Cases/Test Cases &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;This would add overhead to the QA operation, however, it may help to keep all the requirements in sight and also limit their scope&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Tester/PM&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Planning, Development, Stabilization&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Sign on at each milestone. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;My proposal would be that at each milestone the PM MUST send an email to the team announcing it. This means that a change in design (Planning) after the ending of the Planning phase will not affect developing. The change will affect next iteration (Thinking in MSF context).&lt;br /&gt;This may seem draconian, but may help architects, PM and Customer to be more conscious when they are breaking the process.&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;End of each phase inside the iteration&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;No switching of resources&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Every time that resources are brought in/out of the project, there is a learning curve and information that is lost. A project with a big resource turn-over risks to have a larger amount of undetected issues&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;All phases&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Representative Test environment&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Sometimes, due to the complexity and expense of the production system, the test environment is significantly different from the Production Environment. If the environment are similar, the test effort twill be much more accurate&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM, System Engineering, Testing&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Stabilization&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Risk Management&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Core to the MSF, it should include the customer/customer representative. The extra overhead is well compensated by the managed approach to problem when, if they, appear. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM, Everybody&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;All phases&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Real and represenative test Data&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;If the customer supplies real and representative test data, it is easier and more probable to spot problems/code deficiencies during the test process &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM, Testing&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Development, stabilization&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Customer agreement on quality&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Customer should take an active role defining what they expect of the product. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Envisioning&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Formal Security Review (if applicable)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;For project that require a high level of security, in addition to the usual test procedures –encryption, use of certificates, users rights…- it also should be submitted to deliberate attacks to try to break into the application&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Sys Eng/Testing&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Planning, stabilization, deployment&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Cross disciplinary Peer review of documents&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;This could identify issues that are more obvious to another team.&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Everybody&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;All phases&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-7209813986278209557?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/7209813986278209557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/7209813986278209557'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2007/06/second-part-of-list-as-promised-i-feel.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-34236314.post-267379507923233869</id><published>2007-04-25T14:58:00.000-07:00</published><updated>2007-04-30T14:31:35.407-07:00</updated><title type='text'></title><content type='html'>&lt;p&gt;Despite the name, most of QA groups/departments in the software industry are not QA departments at all. They are a testing group that design, implements and execute test plans, test cases and test scripts. Nothing wrong with that indeed!. However, the next step to improve the quality of the software is to go beyond the testing phase and create a culture of quality among all the participants of the software development process. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;How is possible to begin this culture of quality? Ideally you will implement any of the existing models (CMMI, ISO...), however, given the amount of effort and time (so, money!) involved, it is usually difficult to get committed support from senior management. A group that incidentally looks at testing and QA as non-core/non-fundamental software development process activity. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;Here at Visiphor the Test Group is reinventing itself into a QA group by pushing the following list of actions that are easy to implement. Incremental change is powerful if steady. You do not need to apply all the items, you can pick and choose or add your own. However consistency is important. If you pick one of the items, you need to keep it during all the development cycle: it doesn't make sense to peer review version 1, 2 and 4 of a document but not versions 3, 5 and 6 of the same document! &lt;/p&gt;&lt;p&gt;&lt;br /&gt;Here is the list. Comments, suggestions and real life stories gladly accepted. I would love to read your comments and what has worked (or not!) for you.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Action&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Who is responsible?&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Phase&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Peer review of documents (architects)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Each document is reviewed at least by another member of the Architects team Architects &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Architects&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Planning&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Peer review of documents (developers) &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Each document is reviewed at least by another member of the developers team&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Development&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Planning, Development&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Peer review of documents (tester)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Each document is reviewed at least by another member of the testing team&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Testing &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Planning, development, stabilization&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Peer review of documents (systems)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Each document is reviewed at least by another member of the systems engineer team &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Sys. Eng. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Planning, development, stabilization, deployment&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Solution Setup (developers)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;A senior developer creates the Visual Studio solution(s), project structure, and namespace framework.&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Development&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Planning or Development&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Source Control Repository Setup &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;A senior developer adds the solution(s) to the source control repository. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Development &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Development&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Code Reviews (developers) &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Similar to the peer reviews of documents, the code for the application is regularly reviewed by another member of the team or by an automatic tool. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Development &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Development&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Kick off meeting. Also known as Launch Meeting.&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Everybody involved in the project needs to be present. The purpose of this meeting is to fulfill several of the MSF principles of common goals, vision, foster communication…. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Planning&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Setup and use of Issue tracking system &lt;/span&gt;&lt;br /&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;An Issue Tracking System needs to be set up for every project, in addition, it needs to be the central collaboration tool that each team member uses to identify, record, triage and solve bugs and change requests. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Testing &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Planning &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Sign on at each iteration/Marking Iteration boundaries &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The beginning of each new iteration (as defined in the MSF process) should be marked by a team meeting with the same purpose as the Launch meeting. Iteration ends should at least be marked by an email from the PM, and in some cases by a post-mortem-like team meeting. The goal is to keep everybody informed, and with the same objectives. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Through the lifecycle of the process&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Dedicated Test environment &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The Test environment should be used exclusively by testers and not shared with development. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM/Sys Eng/Testing &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Development, stabilization&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Unit test &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Developers, should unit test each piece of their code either manually or using automated tools &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Development &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Development, stabilization&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Define the Scope for every project. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;It is important to define what is in the project and what is out. Gray areas will always exist but need to be minimized.&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM, Development, Testing&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Envisioning&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Customer involvement in the testing effort of User Interfaces &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The rationale of this point is based in the premise the customer is the best to judge the user interface: both the information contained, the user-friendliness, the work flow and the business logic behind it . In this context, if the customer is involved in the testing, the quality of the end product will be better. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Stabilization, deployment&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Project will proceed in a continuous stretch with not time gaps in between. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;When a project stops, and then restarts, a lot of the knowledge accumulated is lost. Projects done as a continuum will have better chances to reflect better the customer original intentions.&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Through the lifecycle of the process&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Post-mortem meetings a the end of each iteration &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;In a multi-phase or multi-iteration project, this practice should help to improve process and correct problems that have appear in previous phases &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;PM&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;End of the project&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Setup and use of Change Request Procedure &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The team, PM and customer should set up a procedure to deal with new/changed requirements. I should include a risk assessment for the requests. &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Testing, everybody &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Planning&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Setup and use of Requirements System &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;A centralized requirements repository will reduce the dispersion of information and ensure all the member of the team share a common list of requirements.&lt;br /&gt;It may allow the possibility to generate metrics and be able to show to the customer all the requirements changes.&lt;/span&gt; &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;BA, Testing, PM &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Planning&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Data dictionary&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;A spreadsheet or document that describes the name, meaning, type and other information about the fields of a database and how they transform&lt;br /&gt;(if applicable, as not all the projects may recommend a data dictionary) &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;BA, Development, testing &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Planning, Development&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Monitoring of the systems for unauthorized changes &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;This monitoring should be associated with clearly defined consequences for intentional unauthorized changes &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Everybody &lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;All phases&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;Soon I will post a second list of recommendations that are a little bit harder to implement or less applicable to all projects.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Note: The "Phase" is in the context of the Microsoft Solutions Framework (MSF), and are orientative. Some of the tasks do not have a clearly defined phase in which they need to be done.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-267379507923233869?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/267379507923233869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/267379507923233869'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2007/04/despite-name-most-of-qa.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-34236314.post-116329465158947296</id><published>2006-11-11T17:22:00.000-08:00</published><updated>2006-11-11T17:24:11.590-08:00</updated><title type='text'></title><content type='html'>I have read the interesting article about Michael Porter's ideas titled 'Why Do Good Managers Set Bad Strategies' (&lt;a href="http://knowledge.wharton.upenn.edu/article.cfm?articleid=1594" target="_blank"&gt;&lt;br /&gt;http://knowledge.wharton.upenn.edu/article.cfm?articleid=1594&lt;/a&gt;). The answers are interesting, although I have some concerns about the premise: Excellent managers can be very bad strategist and vice-versa (In WWI Germany was very well managed, but its long-term strategy proved disastrous, while the new and chaotic Soviet Union became a World power).&lt;br /&gt;&lt;br /&gt;However, it is his statement of "Strategy has to do with what will make you unique" what make me scratch my head. In the current context of the software development industry, specifically in the context of a small professional services firm like the one I am working on, what we can bring that is unique?&lt;br /&gt;&lt;br /&gt;Perhaps it is a self-interested answer. However, it is clear for me that currently that major differentiator among our competitors is Quality, used in the broadest possible terms. Quality understood as the set of processes that will be able to deliver in time in budget a solution a business need in accordance to the customers' expectations. Notice this would include managing the customer's expectations!&lt;br /&gt;&lt;br /&gt;After more than ten years in the software industry, still surprises me that so few are trying to exploit this niche as differentiator. It still surprises me that many managers, visionaries, captains of industry and so on see QA as a luxury or fat to trim. In most of the cases, it is a simple marketing investment.&lt;br /&gt;&lt;br /&gt;In an ad from Mercury, they say, "80% of applications are deployed untested. 100% of customers really hate that.” So, if this is the state of the industry, let me return to my suggestion and to the point of this lucubration: what about developing a strategy that will focus in the QA of your product as a way to make it unique?&lt;br /&gt;&lt;br /&gt;The last but not the least. The article also includes the quote "If you don't pursue a direction for two or three years, it's meaningless." Putting the quote in the QA context: you should not waste energy and efforts implementing a lukewarm QA strategy. Do not set a policy and then constantly break it. For QA professionals it is frustrating and you will not achieve any good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-116329465158947296?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/116329465158947296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/116329465158947296'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2006/11/i-have-read-interesting-article-about.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-34236314.post-115896124170194300</id><published>2006-09-22T14:24:00.000-07:00</published><updated>2006-09-22T14:40:41.733-07:00</updated><title type='text'></title><content type='html'>I have been reading the massive article&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/mtf.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/mtf.asp&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/mtf_ch02.asp"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;posted in the Microsoft web site with the title of "Testing .NET Application Blocks–Version 1.0".&lt;br /&gt;&lt;br /&gt;I can not say that I liked it. I consider it useful, I think that will take me some time to fully digest it contents, however, I would say that it could be written in a less bone-dry tone. For example, I should be excited to read the article after reading the introduction, not to consider that it could be appropriate to read it...&lt;br /&gt;&lt;br /&gt;In addition, there are tendentious comments :-). For example&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/mtf_ch02.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/mtf_ch02.asp&lt;/a&gt;&lt;br /&gt;"Testing Methodologies" is not an honest report about the different testing methodologies. It is a naked attempt of Agile apologetics. After the authors, Agile has no disadvantage at all! What about scalability for example? The more I know about Agile, the more attractive I find some aspects. However, you should not forget all the strings this methodology has attached: a competent, committed and engaged customer for starters....&lt;br /&gt;&lt;br /&gt;In any case, if you have lots of patience, are not sleep deprived and have some time, it is a reading that I recommend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-115896124170194300?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/115896124170194300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/115896124170194300'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2006/09/i-have-been-reading-massive-article.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-34236314.post-115801069150780790</id><published>2006-09-11T14:34:00.000-07:00</published><updated>2006-09-11T14:38:11.520-07:00</updated><title type='text'></title><content type='html'>As the lead tester at Visiphor Consulting Services, I find myself in the position of having to expose my opinion even in case in which I do not really have an opinion!&lt;br /&gt;&lt;br /&gt;In this blog I will post some of my though about the art of testing, specially in the brave new world of SOA, .NET, Web services, integration platforms and hints of Agile methodology.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34236314-115801069150780790?l=testlucubrations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/115801069150780790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34236314/posts/default/115801069150780790'/><link rel='alternate' type='text/html' href='http://testlucubrations.blogspot.com/2006/09/as-lead-tester-at-visiphor-consulting.html' title=''/><author><name>Carles Roch-Cunill</name><uri>http://www.blogger.com/profile/10628319080176935668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
