<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>QA Intelligence - a QABlog &#187; Best Practices</title>
	<atom:link href="http://qablog.practitest.com/category/best-practices/feed/" rel="self" type="application/rss+xml" />
	<link>http://qablog.practitest.com</link>
	<description>Testing &#38; QA Management blog</description>
	<lastBuildDate>Sat, 31 Dec 2011 15:15:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Stop being a NON-Technical Tester!</title>
		<link>http://qablog.practitest.com/2011/12/stop-being-a-non-technical-tester/</link>
		<comments>http://qablog.practitest.com/2011/12/stop-being-a-non-technical-tester/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 09:07:29 +0000</pubDate>
		<dc:creator>Joel Montvelisky</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[On-Going Improvement]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[Future of Testing]]></category>
		<category><![CDATA[Testing Skills]]></category>

		<guid isPermaLink="false">http://qablog.practitest.com/?p=2170</guid>
		<description><![CDATA[There is an on-going discussion in the World of Testing around whether a tester should be more or less technical in his work... (and this is without even asking if we should call someone technical or not!)

The truth is that I believe testers SHOULD be technical, and that there is a marked added value for a tester that is technical over one that is not.   

This doesn't mean we should be only technical and stop concentrating on understanding our users, or that we should strive to be more technical than our programming peers.  But there are many ways in which we should start getting rid Non-Technical tester each of us carries inside of us.]]></description>
			<content:encoded><![CDATA[<p>A short while ago I posted an open question on twitter:</p>
<p style="text-align: center;"><a href="http://qablog.practitest.com/wp-content/uploads/2011/12/twitter.png"><img src="http://qablog.practitest.com/wp-content/uploads/2011/12/twitter.png" alt="" title="twitter" width="200" height="37" class="aligncenter size-full wp-image-2217" /></a><em><strong>&#8220;Do tester need to be as technical as programmer<br />
to be successful at their jobs?&#8221;</strong></em></p>
<p>I got plenty of answers, so I will only post some of them representing the main opinions threads:</p>
<p><strong>@TestAndAnalysis </strong>- Testing is a technical discipline that is different to programming and testers add a lot of value to projects<br />
<strong>@huibschoots</strong> &#8211; No! It depends on the context they work in. But in general they need to have some basic technical skills (or the will to learn)<br />
<strong>@datoon83</strong> &#8211; I&#8217;d say that all people involved in the delivery need to talk 1 language &#8211; that of the domain and customers!<br />
<strong>@klyr</strong> &#8211; Technical and non-technical testers have a different approach to testing, and will find different bugs.<br />
<strong>@sgershon</strong> &#8211; Certainly do. Not sure about &#8220;more/less technical&#8221; as programmers, possibly they have to be &#8220;differently technical&#8221; than them.<br />
<strong>@halperinko</strong> &#8211; @sgershon @joelmonte I normally look at it as in depth knowledge for devs, vs. System-wise knowledge for testers. (Some don&#8217;t follow rules)</p>
<p>There were also a couple of tweeps who replied with blog posts of their own sharing their opinion on the subject. <br />
<strong>@diamontip</strong> &#8211; my answer &#8211; do tester need to be as technical as programmers to be successful at their jobs? <a href="http://t.co/QkG1FqBe" target="_blank">bit.ly/v5vcX<br />
</a>and<br />
<strong>@adampknight</strong> &#8211; I personally dislike calling testers &#8220;technical&#8221; wrote about it here <a href="http://t.co/bTTxxfE2" target="_blank">bit.ly/tVHDOB</a></p>
<p>To all the tweeps above and those I missed, thanks for the great feedback!  </p>
<p>But as you surely guessed I have my own opinion on the subject and I want to share it with you, so here it goes&#8230;</p>
<h3>My definition of Technical</h3>
<p><a href="http://qablog.practitest.com/wp-content/uploads/2011/12/38157utp8vb6saw.jpg"><img src="http://qablog.practitest.com/wp-content/uploads/2011/12/38157utp8vb6saw-300x199.jpg" alt="" title="Technical" width="300" height="199" class="alignright size-medium wp-image-2221" /></a>Specially after reading Adam&#8217;s post I feel the need to explain what do I mean by technical, or better yet how do I differentiate a Technical Tester from a Non-Technical Tester.  (If you read my previous blogs on &#8220;<a href="http://qablog.practitest.com/2011/11/10-reasons-why-you-are-not-a-professional-tester-part-1/" target="_blank">Why are some tester not really Professional Testers</a>&#8221; then you should already have an idea&#8230;)</p>
<p>A <strong>Technical Tester</strong> is not afraid of doing most of the following stuff on a regular basis as part of his job (without any specific order):</p>
<p><strong>- Understand the architecture of the product he is testing</strong>,<br />
including the pros &#038; cons of the specific design, as well as the risks linked to each of the components and interfaces in the product.  </p>
<p>He then uses this information to plan his testing strategy, to execute his tests and find the hidden issues, and also to provide visibility to his team regarding the risks involved in developing a specific feature or making a given change to the system.</p>
<p><strong>- Review the code he needs to test</strong>.<br />
He can do this on a number of levels, starting from going only over the names of the files that were changed, and all the way to reviewing the code itself.  This information will provide valuable inputs to help decide what needs to be tested and how, as well as to find things about the changes that might have been missed by the developer or the documentation.</p>
<p>BTW, by code I mean SQL queries, scripts, configuration files, etc.</p>
<p><strong>- Work with scripts &#038; tools to help his work</strong>.<br />
A technical tester should be able to create (or at least &#8220;play&#8221;) with scripts to help him run repetitive tests such as sanity or smoke, and tasks such as configurations, installation, setups, etc.  </p>
<p>He should also be able to work with free automation tools such as Selenium or WATIR (or any of the paid ones like QTP, SeeTest, TestComplete, etc) to create and run test scripts that will increase the stability of the product in development, and over time save time&#8230;</p>
<p><strong>- Be up to date with the technical aspects of his infrastructure</strong><br />
(e.g. browsers, databases, languages, etc)<br />
He should read the latest updates on all aspects of his infrastructure that may have an effect on his work.  For example new updates to his O/S matrix, known issues with the browsers supported by his product, updates to external products they integrate, etc.</p>
<p>With the help of <a href="http://www.google.com/alerts" target="_blank">Google alerts</a> and by subscribing to a couple of newsletters anyone can do this by reading 5 to 10 email 2 or 3 times a week.  The value gained from becoming an independent source of knowledge greatly exceeds the time invested in the efforts.</p>
<p><strong>- Is able to troubleshoot issues from Logs or other System Feeds</strong>.<br />
He is aware of all the logs and feeds available in his system, and uses them to investigate more about any issue or strange behavior.</p>
<p>This information is helpful during testing to provide more information than simply writing &#8220;there is a bug with functionality X&#8221;.  And it will be critical if he is called to work on a customer bug, where he needs to understand complex issues quickly and without access to all the information.</p>
<p>In addition to the above, a technical tester should also be able to:<br />
- Provide feedback and run the <strong>unit tests</strong> created by his programmer peers.<br />
- Run <strong>SQL Queries</strong> on the DB directly to help verify his testing results.<br />
- <strong>Install and configure</strong> the system he is testing.<br />
etc.</p>
<h3>Sounds like Superman or MacGyver?</h3>
<p><a href="http://qablog.practitest.com/wp-content/uploads/2011/12/44927ecn5q7jauo.jpg"><img src="http://qablog.practitest.com/wp-content/uploads/2011/12/44927ecn5q7jauo-199x300.jpg" alt="" title="Flying Man" width="199" height="300" class="alignright size-medium wp-image-2224" /></a>It may sound like this, but actually it&#8217;s not!</p>
<p>As testers we work on projects that revolve around Software, Hardware, and/or Embedded products.  The only way to do a good job in testing them is to have a deep understanding of <u>both</u> angles: technical and functional.</p>
<p>This doesn&#8217;t mean that you need replace or have the same technical dept as your developers, or surpass your Product Marketing&#8217;s knowledge of your users.  </p>
<p>You need to achieve a balance, where you have &#8220;enough&#8221; knowledge and understanding of both these areas in order to do your job as a tester, or rephrasing the tweet from @halperinko &#8211; as testers we should achieve system-wide knowledge, as opposed to the in-dept knowledge required from the developers or the product marketing guys.</p>
<h3>Is it black and white?</h3>
<p>This time quoting &#8220;Cokolwiek&#8221; who commented on one of my latest posts, &#8220;Not everything is black and white&#8221;.  Meaning there is no standard to define how technical should a tester be on every project and product.</p>
<p>Like in many other situations, the best answer to how technical do you need to be is: &#8220;It Depends&#8230;&#8221;</p>
<p>You should be at least technical enough to do your job effectively and to talk the same language with the rest of your programming and testing peers.</p>
<p>What do I mean by that?<br />
If you work on a software development firm then you should understand enough of the languages used by your developers to be able to read the code and understand their changes.  If you work on a heavily DB-related project then you need to understand enough of SQL and database management.  If you work on a Website development firm then you should know enough CSS, HTML and JS, and so it goes&#8230;</p>
<h3>So if I am not Technical enough, should I quit testing???</h3>
<p><strong>Definitely not!</strong><br />
If you like testing and you are good at it, why should you quit?  On the other hand, this is a great opportunity to improve your work and (as @diamontip wrote on his blog) increase your market value as a tester <img src='http://qablog.practitest.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://qablog.practitest.com/wp-content/uploads/2011/12/47636dlfe04ts37.jpg"><img src="http://qablog.practitest.com/wp-content/uploads/2011/12/47636dlfe04ts37-182x300.jpg" alt="" title="Raise your hand" width="182" height="300" class="alignleft size-medium wp-image-2227" /></a> And the best part of it is&#8230; it&#8217;s not very hard to become a more technical tester!  Just start by asking questions, searching the web, reading books, etc.  </p>
<p>I&#8217;m also confident that if you show the potential to increase the value of your current work to your manager, he won&#8217;t mind you investing sometime during your day to learn these new trades (as long as you manage to explain why this is also good for him!).</p>
<p>So, stop making excuses for not been technical enough.  Just make a decision (or a New Year&#8217;s resolution&#8230;) to start working on improving your technical skills!</p>
<p>Go ahead and <strong>get rid of the NON-Technical Tester in you!</strong>  </p>
<p>It will be worth your time and make your job more interesting and satisfying.</p>
<h3>What do you think?</h3>
<p>- Are there any negative sides to being a more technical tester?<br />
- Maybe there are advantages for testers who used to be developers in the past?</p>
<p>Come and share your opinion or experience on this subject!</p>
<div style="font-size:8pt;text-align:right;">
(*Images by Twitter, Pixomar, digitalart and Teerapun)
</div>
]]></content:encoded>
			<wfw:commentRss>http://qablog.practitest.com/2011/12/stop-being-a-non-technical-tester/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Short post &#8211; plan your tests, even when you don&#8217;t have time to plan them</title>
		<link>http://qablog.practitest.com/2011/10/short-post-plan-your-tests-even-when-you-dont-have-time-to-plan-them/</link>
		<comments>http://qablog.practitest.com/2011/10/short-post-plan-your-tests-even-when-you-dont-have-time-to-plan-them/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 18:49:48 +0000</pubDate>
		<dc:creator>Joel Montvelisky</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[On-Going Improvement]]></category>
		<category><![CDATA[Test Process]]></category>
		<category><![CDATA[rules of thumb]]></category>
		<category><![CDATA[Short-Post]]></category>
		<category><![CDATA[Testing Tips]]></category>

		<guid isPermaLink="false">http://qablog.practitest.com/?p=1917</guid>
		<description><![CDATA[How many times have you told yourself you don&#8217;t have enough time to plan your tests, so you might as well just get testing&#8230; If you are anything like me, then this happens to you 2 or 3 times a week. Classic examples are: - When you run a short test on a piece of [...]]]></description>
			<content:encoded><![CDATA[<p>How many times have you told yourself you don&#8217;t have enough time to plan your tests, so you might as well just get testing&#8230;<br />
If you are anything like me, then this happens to you 2 or 3 times a week.</p>
<p><strong>Classic examples are:</strong><br />
- When you run a short test on a piece of code that is &#8220;under development&#8221;, and the programmer just asked you for feedback.<br />
- When you are running the sanity suite for the 900th time on the same system before or after it has been deployed to production.<br />
- When you are checking your own code, just to make sure it didn&#8217;t break anything you didn&#8217;t intend to break in the first place.<br />
And there are thousands of other occasions when we just say &#8220;the heck with it, I can just run a quick test without planning it&#8221;.</p>
<p>Well, if you are also like me, as soon as you catch yourself saying this nonsense you take out a piece of paper and write down the 5 or 6 things you want to test&#8230;</p>
<p><a href="http://qablog.practitest.com/wp-content/uploads/2011/10/checklist.gif"><img class="size-full wp-image-1920 alignright" title="checklist" src="http://qablog.practitest.com/wp-content/uploads/2011/10/checklist.gif" alt="" width="166" height="161" /></a></p>
<p><strong>Why?</strong><br />
- Because when you are testing something you have never tested before you want to make sure you talk to the programmer and understand what the feature should do (and what it shouldn&#8217;t)!<br />
- Because specially when you are running the same test over and over again in auto-pilot, you will get distracted and miss something that may be important in your sanity before or after release<br />
- Because when you are checking yourself you are blinded by your own mistakes, and writing down your testing charter is a good technique to get some perspective and catch some of your own bugs.</p>
<p>But maybe most importantly, because you are a <strong>professional tester</strong>, and even if you are running a short testing session it is important to define your testing scope, and to be able to assess whether your are really done with your tests or if there are other things you should be testing.</p>
<p><strong><br />
<blockquote>If you want to be treated like a professional tester,<br />
the first step is to treat your testing professionally.</p></blockquote>
<p></strong><br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://qablog.practitest.com/2011/10/short-post-plan-your-tests-even-when-you-dont-have-time-to-plan-them/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>What do you do when a ShowStopper escapes into production?</title>
		<link>http://qablog.practitest.com/2011/08/what-do-you-do-when-a-showstopper-escapes-into-production/</link>
		<comments>http://qablog.practitest.com/2011/08/what-do-you-do-when-a-showstopper-escapes-into-production/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 09:34:35 +0000</pubDate>
		<dc:creator>Joel Montvelisky</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[On-Going Improvement]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Development Kaizen]]></category>
		<category><![CDATA[Test Methodologies]]></category>

		<guid isPermaLink="false">http://qablog.practitest.com/?p=1670</guid>
		<description><![CDATA[When you are a true professional, you see failure as an opportunity to become a better professional. Here&#8217;s a real life scenario, let&#8217;s see how many of you can relate to it: It is the middle of the day on a regular Tuesday afternoon.  You are the QA Manager of a company developing an Enterprise [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/08/Success-Failure.jpg"><img class="aligncenter size-medium wp-image-1693" title="Success-Failure" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/08/Success-Failure-300x225.jpg" alt="" width="300" height="225" /></a></p>
<blockquote>
<p style="text-align: left;">When you are a true professional, you see failure<br />
as an opportunity to become a better professional.</p>
</blockquote>
<p><strong>Here&#8217;s a real life scenario, let&#8217;s see how many of you can relate to it:</strong></p>
<p><em>It is the middle of the day on a regular Tuesday afternoon.  You are the QA Manager of a company developing an Enterprise Application, and last week your team released a minor version that included the fixes from all the patches of the last two months plus four minor features that were requested by product marketing in order to &#8220;close some pretty important deals&#8221;.  </em></p>
<p><em>All of a sudden the phone rings and it is your R&amp;D director &#8220;inviting&#8221; you to an urgent meeting in his room.</em></p>
<p><em>You arrive to find there the R&amp;D director, together with his development team managers, the product marketing manager, and the support team leader in charge of your product who is standing next to the whiteboard&#8230;  </em></p>
<p><em>As you sit down the support team leader tells all of you about an urgent showstopper that was released in last week&#8217;s version and that is expected to affect about a third of the companies who install this upgrade.</em></p>
<p>I want to stop this scenario (that happened to me about 7 years ago) to ask you a simple question:</p>
<p style="text-align: center;"><strong>What would you and your team do in this situation?</strong></p>
<p style="text-align: left;">I believe that no two teams would react in the same way, and I don&#8217;t want to come up with best &amp; worst case scenarios; but here are two contradictory approaches to serve as points in the possible behavioral continuum.</p>
<h4 style="text-align: left;">Scenario No. 1 &#8211; Blame &amp; Panic</h4>
<p><span style="text-decoration: underline;">Step 1</span><br />
The meeting turns into a witch-hunt where development blames testing for not finding the bug, then testing blames development for not documenting all the changes made in the system, then development and testing blame product marketing for pushing the teams to release even though not all the tests had been completed, etc&#8230;</p>
<p><span style="text-decoration: underline;">Step2</span><br />
After the meeting dissolves without any clear action items, support starts telling customers not to install the new release, the programmers start working on a solution without fully understanding the problem, and you are left on the side wondering how did you miss this bug and trying to find the person who should be responsible for it.</p>
<p><span style="text-decoration: underline;">Step 3</span><br />
Since the developers think this is absolutely urgent they decide to send the fix directly to support, and only in parallel they send it to your team for validation and verification.<br />
They do this at 8:30 PM when no one is left in the office and you can only start testing it at 8:30 AM the next day.  About 30 minutes in to your testing cycle you start finding bugs in their new version.<br />
The problem is that your support team already started delivering this solution to the initial set of customer who already complained about the bug.</p>
<p><span style="text-decoration: underline;">Step 4<br />
</span>By mid day your team finished the tests on the system, they found that the initial fix only works on about half the supported configurations, and more important it also causes a regression bug on an area not directly related with the fix.<br />
Within 30 minutes you get a new version that is verified and released to the support team by 4:00 PM.</p>
<p><span style="text-decoration: underline;">Step 5<br />
</span>Customer support wants to kill both your testing team as well as the developers because now they need to find every company that downloaded the first fix and call to ask them not to install it, or even worst to install yet another fix on top of it.<br />
Product Marketing is also mad at you since they already started getting calls from customers, account managers, and even some of your company&#8217;s top executives, all complaining about the mess and bad publicity this fiasco is already creating in the field.  They let you know that as a result of it your company will need to offer large discounts to all customers that complaint, and they think this issue may cause a number of important deals to be delayed or lost&#8230;</p>
<p><span style="text-decoration: underline;">Step 6</span></p>
<p>(Step into your time-machine and fast-forward 3-4 months ahead)</p>
<p>Everything is still the same, no one was fired by the fiasco but the atmosphere was tense for about one week afterwards; after that it became water under the bridge.</p>
<p>Your team is about to release another minor version including all the patches of the last months, plus another three features needed for important deals.<br />
As always product marketing is pushing for the release to go out on schedule even though your team got the final built a week late and you learned only yesterday that they included another feature that you were not even aware off&#8230;</p>
<p style="text-align: left; padding-left: 120px;"><strong>As they say&#8230;</strong></p>
<p style="text-align: center;"><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/08/nothing-changes.jpg"><img class="aligncenter size-medium wp-image-1698" title="nothing changes" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/08/nothing-changes-300x300.jpg" alt="" width="180" height="180" /></a></p>
<p>&nbsp;</p>
<h4>Scenario No. 2 &#8211; Solve, Learn &amp; Improve</h4>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;"> <a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/08/dont-panic.jpg"><img class="size-medium wp-image-1702 alignright" title="don't panic" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/08/dont-panic-292x300.jpg" alt="" width="175" height="180" /></a></span><span style="text-decoration: underline;">Step 0</span> - Don&#8217;t Panic!</p>
<p>The last thing you want to do is start looking for someone to blame.  Chances are that more than one person is &#8220;to blame&#8221; for making mistakes that lead to the issue been released, It is almost certain no one did this on purpose, and most importantly it will not help you to solve the issue!</p>
<p>So try stoping your<strong> basic instinct</strong> to blame someone else for the issue.</p>
<p>If another member of the team starts the blaming game, immediately ask him how is this contributing to solving the issue any faster?  You can also state that there will be enough time, after the issue is solved, to understand what went wrong and why.</p>
<p><span style="text-decoration: underline;">Step 1</span> &#8211; Fix &amp; Test<br />
OK, so there is a bug out there and you better fix it quickly!<br />
Put together the best team you can that will (1) analyze the issue, (2) define the quickest, safest and most effective fix, (3) create this fix, and finally (4) recommend how to test it.<br />
What testing approach to take is not a simple decision either, depending on the bug and the product you are working you may choose to deliver the fix directly without doing any tests and verify only after the issue has been solved (for example if your application is web-based and the servers are down, it is better to get them back up and test once they are up).  On other occasions you may choose to run some or all possible tests in-house before releasing the fix, this is usually the case if the bug is not really critical and the fix may cause bigger bugs such as data-loss or business disruption.</p>
<p>In short, the first step is to create the best solution and find the most appropriate approach to get it to your customers.</p>
<p><span style="text-decoration: underline;">Step 2</span> &#8211; Analyze<br />
Once the critical part is over and the issue has been solved, but before people &#8220;move on&#8221; with their lives and tasks, its better to make sure you understand what went wrong.<br />
The analysis process should never be a witch-hunt, it should be an opportunity where everybody feels safe to collaborate and bring forward all the factors that contributed to the problem happening in the first place (both internal as well as external factors).<br />
This activity is fairly common and it is called a <a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//2008/07/good-project-retrospectives/" target="_blank">retrospective or post-mortem</a>.</p>
<p><span style="text-decoration: underline;">Step 3</span> &#8211; Corrective actions<br />
Once the factors and issues have been identified as part of the post-mortem, the next step is to define corrective actions to prevent this from happening again.<br />
Make sure these actions are clearly defined and actionable (duh!).<br />
Many times we see stuff like &#8220;make sure communication is better&#8221; but this is not actionable at all, and it will not help anybody to change the way they have communicated up to now.<br />
So as dumb as it may sound, make sure your corrective actions are actionable and they will lead to a change in the way things were been done in your company up to now.</p>
<h4>Strong team share their failures while weak teams sweep them under the rug</h4>
<p>I remember coming up with a phrase a couple of years ago as part of an presentation I did for a group of testers: &#8220;<em><strong>When you are a true professional, you see failure as an oportunity to become a better professiona</strong>l</em>&#8220;.</p>
<p>I have seen many development teams where they perform retrospectives but then they are affraid or ashamed to share their results with the rest of the Company.  Would you blame the team for been self-centered and egoists?  I would actually blame their companies for not making sure their work atmosphere encourages teams to take risks and learn from their failures&#8230;</p>
<p>You need to make sure your team, and preferably your Company, encourages the sharing of retrospectives and corrective actions.  It is one of the best sources of free advice available.</p>
<p><img class="size-full wp-image-1711 alignleft" title="COOL_Smiley" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/08/COOL_Smiley.jpg" alt="" width="62" height="58" /></p>
<p style="text-align: left;">Also, if you look closely, teams with the confidence and maturity required to openly share their risks and failures are also the most fun and challenging teams to work in.</p>
<p style="text-align: left;">And if all this was not enough to convince you, just go a head and read the <a href="http://dilbert.com/strips/comic/2011-08-08/" target="_blank">Dilbert Comic Strip</a> published earlier this week on the subject.  Thinks that make you hmmmm.</p>
<h4 style="text-align: left;">How would your team react?</h4>
<p style="text-align: left;">Any war stories or insights into good or bad reactions?</p>
]]></content:encoded>
			<wfw:commentRss>http://qablog.practitest.com/2011/08/what-do-you-do-when-a-showstopper-escapes-into-production/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>When your job is NOT TO TEST</title>
		<link>http://qablog.practitest.com/2011/07/when-your-job-is-not-to-test/</link>
		<comments>http://qablog.practitest.com/2011/07/when-your-job-is-not-to-test/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 08:08:59 +0000</pubDate>
		<dc:creator>Joel Montvelisky</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[On-Going Improvement]]></category>
		<category><![CDATA[Test Process]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Risk Management]]></category>
		<category><![CDATA[SaaS Testing]]></category>

		<guid isPermaLink="false">http://qablog.practitest.com/?p=1596</guid>
		<description><![CDATA[Ever wondered if you can actually test less and perform other operations that will help your product achieve higher levels of quality in production?

Maybe this is what we should aim for when we define our job as QA (Quality Assurance) Engineers and not as Testers...]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/07/confused-guy.jpg"><img class="aligncenter size-medium wp-image-1610" title="confused-guy" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/07/confused-guy-179x300.jpg" alt="" width="128" height="216" /></a></p>
<p><em><strong>The following is based on a true story <img src='http://qablog.practitest.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></em></p>
<p>Imagine you are hired to work as a software tester (or test lead) for a company that develops a web-based product .</p>
<p>When you get to the place you notice that these guys are really sharp and work with the latest technology and methodologies available; but very quickly you also notice a very strange behavior in the company: <span style="text-decoration: underline;">they run only a small number of tests before rolling new features out into production!</span></p>
<p>So you think to yourself: &#8220;<em>EUREKA! I found the first thing to change in the company: release better products by <span style="text-decoration: underline;">running more tests</span> before rolling stuff out!</em>&#8221;</p>
<p>But when you take a closer look at the process and its numbers you realize two things:</p>
<p>1.  Even though some bugs are been released into production, <strong>their numbers are not a lot higher than in other places you&#8217;ve worked</strong>.  And what&#8217;s even more interesting is that whenever these bugs are released they are handled very quickly (in a matter of minutes) and with next-to-none effect on the users.</p>
<p>and</p>
<p>2.  If you were to introduce more testing into the system (even automation!) it would<strong> dramatically increase the cost and extend the development cycle</strong> delaying time to market to levels far from what the company is willing to accept.</p>
<p>So what can you do?</p>
<p>Well&#8230; apparently you should not go out and automatically dictate that more tests should be run!  Maybe you should start by understanding what they are doing and why?!</p>
<h4>Sometimes exhaustive testing is not the best solution</h4>
<p>It is pretty cool when you are working in ways that may seem unconventional and all-of-a-sudden someone shows you that other people are doing just about the same and writing about it in their blogs <img src='http://qablog.practitest.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I wanted to thank <a href="http://twitter.com/wonitta" target="_blank">wonitta</a> who last week pointed me to a post by <a href="http://gojko.net/2011/03/03/simulating-your-way-out-of-regression-testing/" target="blank">Gojko Adzic</a> where he wrote about companies that manage to reduce their exhaustive regression testing by using alternative approaches.  I won&#8217;t repeat what Gojko wrote, but I definitely recommend you read the article.</p>
<p>What I can do is explain how the company that I wrote about above successfully (IMHO) handles its development and testing process. They work with a number of principles that help them achieve their goal of very-fast-time-to-market while maintaining high levels of product quality.</p>
<h4>No magic spells, only common sense and discipline</h4>
<p><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/07/casting_magic_love_spells.jpg"><img class="aligncenter size-medium wp-image-1622" title="casting_magic_love_spells" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/07/casting_magic_love_spells-300x204.jpg" alt="" width="300" height="204" /></a></p>
<p>I don&#8217;t think these guys are singular, nor do they use any technique or technology that is out of reach to most development teams today.  They simply have evolved their process while trying to adapt to their highly competitive business environment, while looking for non-trivial ways of achieving their goals.</p>
<p>The process is not hard, but it does require discipline and the cooperation of all the team (developers, testers, product, etc).</p>
<p>Here are the principles I was able to identify from their process:</p>
<p><strong>1.</strong><strong></strong><span style="text-decoration: underline;"><strong> Short iterations &amp; small incremental changes</strong></span> - by working on small agile cycles and making sure they break down large features into smaller iterations they are able to lower the complexity and the underlying risk of each release.</p>
<p><strong>2. <span style="text-decoration: underline;">Good designs &amp; risk analysis from the start</span></strong> - it is incredible how people always say that it is better to catch bugs in the design phase, but we still never do anything about it!  Right <img src='http://qablog.practitest.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Well, when you don&#8217;t have time to make mistakes it is better you work right from the start, and the best way to do this is by reviewing your assumptions and the design of your feature before you write your code.<br />
By doing this these guys are able to make a good product (features, GUI, UX, integrations, etc) from the start; and by identifying and analyzing the high risk areas up-front they are able to design and write the feature in ways that lower these risks significantly.<br />
The math is really simple:  <em><strong>LOWER RISK = LESS BUGS.</strong></em></p>
<p><strong>3. <span style="text-decoration: underline;">A</span><span style="text-decoration: underline;">ll the team tests</span></strong> - one thing about good developers is that they are not snobs!<br />
In order to achieve high quality products this company has a whole-team-tests policy and this means that even though it is assumed that testers can perform tests better than programmers this doesn&#8217;t mean that the later should not run their own tests.<br />
Testers help programmers define their tests and in the most risky features they also perform a large number of the test themselves, but there are also features where testers will not run a single test and all these tasks will fall upon the shoulders of the programmers themselves.<img class="size-full wp-image-1626 alignright" title="tightrope-walker-300x183" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/07/tightrope-walker-300x183.jpg" alt="" width="270" height="165" /></p>
<p>I think that this policy serves 2 main purposes, (1) it relieves  testers from being the bottlenecks in the process, and (2) it gives developers a higher sense of responsibility towards their programming standards (<em>you take more careful steps on the tight-rope when you are your own safety net!</em>).</p>
<p><strong>4. <span style="text-decoration: underline;">Continuous integration</span></strong> - if you don&#8217;t know what this means then go and read more about it <a href="http://en.wikipedia.org/wiki/Continuous_integration" target="_blank">here</a>.<br />
The best thing about CI is that it allows the team to work on a continuously stable product, to find trivial regression bugs fast and to fix them even faster.</p>
<p><strong>5. <span style="text-decoration: underline;">Organized pushes to production</span></strong> - releases and changes to production need to be controlled, performed gradually, and scheduled in advanced to make sure there are no conflicting pushes been done simultaneously.<br />
Multiple changes to the same components, specially when done by different internal teams, automatically increase the risk of having bugs in production.</p>
<p><strong>6. <span style="text-decoration: underline;">Gradual deployments</span></strong> &#8211; that allow you to deploy your code while keeping under control the effect they may have in your system.<br />
By using techniques like <a href="http://en.wikipedia.org/wiki/A/B_testing" target="_blank">A/B testing</a> with limited percentages, or allowing only a subset of your users to access a specific change you are able to contain the effect of the changes to a small number of your users and thus limit the risk to your business.<br />
These &#8220;production tests&#8221; are similar to Beta programs and provide the same type of information but a lot quicker!</p>
<p><strong>7. <span style="text-decoration: underline;">Extensive monitoring</span></strong> - because when you have a bug in production you want to be the first to know about it and to get all the information up-front.<br />
There are a number of different monitoring tools available, but putting them in place is only half the work.  You also need to develop your product in a way that it will integrate with the monitoring tools you use, and provide them with the information that will allow the team to understand the issue and fix for it right away.<br />
In a sense is like having good-old <a href="http://en.wikipedia.org/wiki/Dr._Watson_(debugger)" target="_blank">Dr. Watson</a>, but been able to solve the issues reported by your users RIGHT AWAY (instead of in the next version of Windows).</p>
<p><strong>8. <span style="text-decoration: underline;">Pred</span><span style="text-decoration: underline;">efined rollback and patching process</span><span class="Apple-style-span" style="font-weight: normal;"> &#8211; when you want to do something quickly and correctly under pressure you better define in advance what you want to do.  There is a saying in Hebrew that goes: &#8220;Work hard in practice, so that it comes easily during battle&#8221;.</span><span class="Apple-style-span" style="font-weight: normal;"><br />
</span><span class="Apple-style-span" style="font-weight: normal;"> The team should have a step-by-step rollback procedure with the scripts to run, the files to modify and all the rest of the operations required in order to quickly return the system to its last known good state (how it was before the release).  Since this operations may change from release to release it is necessary to create this procedure for each push (or at least to review the generic process and make the needed changes).<br />
Remember also that rollbacks should not be the only option,  there should also be a defined procedure that defines what bugs can be &#8220;fixed in production&#8221; and how this should be done and tested.</span></strong></p>
<p><strong>9. <span style="text-decoration: underline;">Continuous learning and retrospective culture</span><span class="Apple-style-span" style="font-weight: normal;"> &#8211; because mistakes will be made, but you should learn from them in order not to commit them again.<br />
The team has in place a process where each problem detected in production (bug, configuration issue, etc) is reviewed in a (semi) formal retrospective session, with lessons learned and action items to ensure the same issue won&#8217;t happen again.</span></strong></p>
<h4><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/07/warning.png"><img class="alignleft size-thumbnail wp-image-1632" title="warning" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/07/warning-150x150.png" alt="" width="90" height="90" /></a>WARNING:<br />
Not all companies are created equally!</h4>
<p>An important fact to understand is that no two companies are the same; and this is sometime true also for two groups or products within the same company.  Technology, company culture, and most importantly your users and the way they interact with your product, will define the way you develop and deploy your apps and the degrees of freedom you have as part of this process.</p>
<p>There are some industries where the price to pay for a mistake is really high, for example if you work on a life-sciences project where any bug can mean life-or-dead for a patient, or on the banking industry where a mistake can mean thousands or millions of dollars been mis-handled, or in aviation where bugs can mean a plane going down, then you should do exhaustive testing.</p>
<p>Still, the vast majority of companies working with web-based products don&#8217;t fall within the group above, and they have an intrinsic advantage that gives them a higher degree of freedom not available to firms that sell software that is installed in-house.</p>
<p>It is very easy to come up with many reasons why you cannot implement the process these guys use in your company, and you are probably right on most of them.  But you also need to take into account the business reality you work in, and realize that 95% of the companies world-wide can allow to have a bug or two in production once in a while, and balance this with the advantages of been able to release higher quality products and with shorter release cycles.</p>
<h4>A final thought:</h4>
<p><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/07/thought-bubble.png"><img class="size-medium wp-image-1654 alignleft" title="thought-bubble" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/07/thought-bubble-300x252.png" alt="" width="103" height="88" /></a>Maybe this is what we should aim for when we define our jobs as QA (Quality Assurance) Engineers and not as Testers?</p>
<p>After all there is no such thing as perfect &amp; bug-free software, and most of us really want to make the best we can for the companies we work for&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://qablog.practitest.com/2011/07/when-your-job-is-not-to-test/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Testers!! know your Business (and don&#8217;t do that of others!)</title>
		<link>http://qablog.practitest.com/2011/05/testers-know-your-business-and-dont-do-that-of-others/</link>
		<comments>http://qablog.practitest.com/2011/05/testers-know-your-business-and-dont-do-that-of-others/#comments</comments>
		<pubDate>Mon, 23 May 2011 07:45:28 +0000</pubDate>
		<dc:creator>Joel Montvelisky</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Bug Reporting]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Self-criticism]]></category>
		<category><![CDATA[Testing Skills]]></category>

		<guid isPermaLink="false">http://qablog.practitest.com/?p=1447</guid>
		<description><![CDATA[Some time ago I wrote a blog post called "Principles of good bug reporting" that talked about the basic things that make a good bug and helps testers not make the typical mistakes that then to make other members of our teams criticize our bug reports.  

Jerry Weinberg commented on this blog saying among other things  "I don't think testers should be prioritizing bugs", and looking back at what I wrote I now agree with him, I was only half right on asking tester to set their severity and priority grades correctly.]]></description>
			<content:encoded><![CDATA[<p>I want to start this post by thanking the two people who &#8220;drove me&#8221; to write it.  First of all, <a href="http://www.geraldmweinberg.com/">Jerry Weinberg</a>, who wrote a comment to an old blog post of mine that helped me realize something I wrote back then was not correct and needed amending.  And also <a href="http://twitter.com/#!/Lalitbhamare">Lalit Kumar</a>, and old friend and colleague, who&#8217;s also the editor of <a href="http://www.teatimewithtesters.com/">Tea Time with Testers</a>, where the blog I mentioned above was published and were Jerry caught sight of the error and wrote his comment.</p>
<p style="text-align: left;"><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/05/teatimewithtesters.png"><img class="aligncenter size-full wp-image-1451" title="teatimewithtesters" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/05/teatimewithtesters.png" alt="" width="102" height="76" /></a></p>
<p><strong>Life taught me not to keep quiet and always say what I think is right out loud.  Life also taught me to surround myself with intelligent people who will not always agree with me, and who&#8217;s (constructive) criticism and (positive) arguments will challenge me to keep growing.  Most importantly life taught me that it&#8217;s OK to make mistakes, and it is even better to acknowledge and correct them as soon as I realize about them.</strong></p>
<p>I believe it was Roosevelt who said: &#8220;The only man who makes no mistakes is the man who never does anything.&#8221;</p>
<p>Jerry &amp; Lalit, many thanks !!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Some time ago I wrote a blog post called &#8220;<a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//2008/12/principles-of-good-bug-reporting/">Principles of good bug reporting</a>&#8220;.  It talked about the basic things that make a good bug report and helps testers not to make the typical mistakes that will be criticized by other members in their team.   One of the points I mentioned is to always make sure you are giving bugs the correct Severity &amp; Priority grades, since it is typical of inexperienced testers to give their bugs higher severity with the (sometimes unconscious) aim of having them corrected by the development team.</p>
<p>Jerry Weinberg commented about this blog saying among other things  &#8220;<em>I don&#8217;t think testers should be prioritizing bugs</em>&#8220;; and when I look back at what I wrote I agree with him, I was only half right on asking tester to set their severity and priority grades correctly.</p>
<h4>A tester should know his business</h4>
<p>The half that I was right was that a tester should be able to set the Severity of his bug correctly.</p>
<p>Severity should be (as much as possible) an objective measure of the damage caused by the specific bug to the Application Under Test (AUT).  And it is something a tester should be able to determine correctly.</p>
<p>The best way for a testers to set the severity of a bug correctly is by understanding enough of his product.<br />
- What does the product do (and not only what is written in our site or in the marketing brochures)?<br />
- Who uses the product and under what circumstances?<br />
- What are the different flows a user can work with the product?<br />
- How knowledgeable are the users in order to find workarounds to specific bugs?<br />
And all the rest of the non-trivial information about the product and its users that will allow him to determine correctly how severe is a specific bug in the system.</p>
<p>I expect every tester, within a logical amount of time and with the correct guidance and information from his team, to reach this level of knowledge.  And the reason she needs to know the product this way is not only in order to set the severity right, this is the only way by which this person will be able to define, design and execute his tests correctly.</p>
<h4>A tester should also know NOT to do the work of others in his team</h4>
<p>On the other hand, and here is where the criticism from Jerry came, we should not require of a tester to determine the priority of a bug, remembering that priority is related to the time when a bug should be fixed, and it is only partially determined by its severity.</p>
<p>Let&#8217;s understand first of all that priority unlike severity is a subjective measure, subjective because it will be determined based on many personal (or team-related) factors and so it cannot be giving outside the context of the whole team.</p>
<p>What factors may affect the priority of a bug:</p>
<p>- Obviously one of the most important factors is the <strong>severity</strong>.  We will want to fix critical bugs before we solve the less critical bugs.</p>
<p>But there are many other factors such as:</p>
<p>- <strong>Complexity of the fix</strong>, we will want to solve complex fixes before we solve the trivial ones.  We do this in order to assure that a complex fix will be tested more and more thoroughly.  On the other hand sometimes we will choose not to solve a bug because there is not enough time to test it enough and so we prefer to release the bug as is than to solve it and introduce more severe bugs or delay the release of the version.</p>
<p>- <strong>Available resources</strong>.  Sometimes we choose to solve bugs based on the developers who are available, for example solve a simple GUI bug now and leave the complex DB bug for later due to the fact that the GUI developer is leaving on vacation next week, or because we need to send the screens now to the customer for validation.</p>
<p>- <strong>Bug fix clustering</strong>.  It is logical that if we are going to be working on a specific area of the code we try and fix as many bugs in it as possible, and so sometimes we will give bugs priority based on where we are already fixing other bugs.</p>
<p>- <strong>Earlier promises</strong>.  This is one of the most problematic, but also very easy to understand&#8230;  We will want to fix first the bugs we already promised to customers, since they are already aware of them and they are expecting them to be fixed.  So if we have 2 bugs with the same severity or even a bug that has a lower severity but was already promised to be fixed to a paying customer, we will most probably be taking care of it before we handle other bugs.</p>
<p>As you see, there are many reasons (all of them good and sensible) why we cannot set the priority of a bug, and why we should leave this to either the person who has all the information or at least make sure the decision is taken by the whole team in order to reflect as many of these points (and also the ones I left out) into consideration.</p>
]]></content:encoded>
			<wfw:commentRss>http://qablog.practitest.com/2011/05/testers-know-your-business-and-dont-do-that-of-others/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Manual and automated tests together are challenging</title>
		<link>http://qablog.practitest.com/2011/05/manual-and-automated-tests/</link>
		<comments>http://qablog.practitest.com/2011/05/manual-and-automated-tests/#comments</comments>
		<pubDate>Mon, 16 May 2011 11:15:45 +0000</pubDate>
		<dc:creator>Joel Montvelisky</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Test Process]]></category>
		<category><![CDATA[Test Management]]></category>

		<guid isPermaLink="false">http://qablog.practitest.com/?p=1414</guid>
		<description><![CDATA[Many times we see testing teams that have automatic testing but still run part of their automation suites manually.  I went out to ask for the reason for this in order to learn more about the challenges in running Manual and Automatic Testing efforts together.

Here we have the top answers, but I am also looking for more reasons in case you have something you want to share...]]></description>
			<content:encoded><![CDATA[<p>I have a simple question to ask those of you who have any kind of test automation in your teams:<br />
<em> </em></p>
<p style="text-align: center;"><em> </em><strong><em>&#8220;Do you have tests that you still run manually, even though<br />
<span style="text-decoration: underline;">they are also running as part of your automation test sets</span>?</em></strong></p>
<p>I am talking about the fact that even though you invested the time to automate something you still choose to run it manually.</p>
<p>Notice that I am asking for <span style="text-decoration: underline;">any tests</span>, including the ones you run manually only once in a while or those you give to your junior testers to be 100% sure all is OK; in fact any tests you are still running both automatically and manually at the same time.</p>
<p><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/05/mule-pulling-hummer.jpg"><img class="aligncenter size-medium wp-image-1424" title="mule-pulling-hummer" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/05/mule-pulling-hummer-300x201.jpg" alt="" width="300" height="201" /></a></p>
<p>Surprisingly enough, even organizations with a relatively mature automation processes still run a significant number of their automatic scenarios as part of their manual tests on a regular basis, even when this doesn&#8217;t make any sense (at least on the theoretical level).</p>
<p>After realizing this was the case I sat down with a number of QA Managers (many of them PractiTest users) and asked them about the reason for this seemingly illogical behavior.</p>
<p>They provided a number of interesting reasons and I will go over some of them now:</p>
<h4>We only run manually the tests that are <span style="text-decoration: underline;">really important</span></h4>
<p>The answer that I got the most was that some teams choose tests to be run automatic and manually only when they are &#8220;really important or critical&#8221;.</p>
<p>This may sound logical at first, but on the other hand when you ask what is their criteria for selecting the tests that should be automated most companies say they select cases based on the number of times they will need to run them and also based on the criticality or importance of the business scenario.  In plain English, they automated the important test cases.</p>
<p style="text-align: left;"><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/05/confused_face-200x200.jpg"><img class="size-full wp-image-1427 alignright" title="confused_face-200x200" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/05/confused_face-200x200.jpg" alt="" width="82" height="82" /></a><br />
So if you choose to automate the test cases that are important then why do you still run them manually under the same excuse of them been <span style="text-decoration: underline;">really important</span>&#8230;?  <em>Am I the only one confused in here?</em></p>
<p style="text-align: left;"><em><br />
</em></p>
<h4>We don&#8217;t trust our automation 100%</h4>
<p>The answer to the question I asked above, of why run the important tests even though they are already automated comes in the form of an even more interesting (and simple) answer: <strong>&#8220;We don&#8217;t really trust our test automation&#8221;</strong></p>
<p>So this basically means they are investing 10 or even 50 man-moths of work and in most cases thousands of dollars on software and hardware in order to automate something and then they don&#8217;t really trust the results?  Where is the logic in this?</p>
<p>OK, so I&#8217;ve worked enough with tools such as QTP and Selenium in order to know that it is not trivial to write good and robust automation, but on the other hand if you are going to invest in automation you might as well do it seriously and write scripts that you can trust.  In the end it is a matter of deciding to invest on the platform and be serious in the work you are doing in order to get results you can trust (and I don&#8217;t mean buy expensive tools, selenium will work fine if you have a good infrastructure and write your scripts professionally).</p>
<p>The alternative is really simple, if you have automatic tests you can&#8217;t trust because they constantly give you wrong results (either false negative or even worst false positives!) you will eventually stop using them and finally throw all the work and money out the window&#8230;</p>
<p>&nbsp;</p>
<h4>We don&#8217;t know what is covered and what is not covered by the automated tests</h4>
<p>This is also another big reason for why people waste time running manual tests that are already automated, they are simply not aware of which scenarios are included on their automation suite and which aren&#8217;t. In this situation they decide, based on their best judgement, to assume that &#8220;nothing is automated&#8221; and so run their manual test cases as if there was no automation.</p>
<p>If this is the case, then why do these companies have automation teams in the first place?</p>
<p>&nbsp;</p>
<h4>The automated tests are the responsibility of another team</h4>
<p>Now for the interesting question, how come a test team &#8220;doesn&#8217;t know&#8221; which scenarios are automated and which aren&#8217;t?  The most common answer is that the tests are been written by a completely different team, a team of automation engineers, that is completely separate from the one running the manual tests.</p>
<p>Having 2 test teams, one manual and one automatic, is not something bad and in many cases it will be the best approach to achieve effective and trustworthy automation.  The bad thing is that these teams can sometimes be completely disconnected and so work on the same project without communicating and cooperating as it should be.</p>
<p><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/05/failure-to-communicate-300x225.gif"><img class="aligncenter size-full wp-image-1440" title="failure-to-communicate-300x225" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/05/failure-to-communicate-300x225.gif" alt="" width="300" height="225" /></a></p>
<p>I will talk about how to communicate and cooperate in a future post, but the point here is that when you have 2 teams (one automated and one manual) you need to make an extra effort to make sure both teams are coordinated and as a minimum each of them know what the other is doing in order to plan accordingly.</p>
<p>&nbsp;</p>
<h4>We want to have all the results in a single place to give good reports</h4>
<p>Finally, I wanted to mention a reason that was brought up by a number of test managers, even though they brought it as a difficulty and not a show stopper but it was brought up many times and so it sounded interesting enough to mention it.  The fact that they needed to provide a unified testing report for their project, and for this they either run part of their tests manually, or created manual tests to reflect the results of their automation.</p>
<p>Again, this looks like a simple and &#8220;relatively cheap&#8221; way of coordinating the process and even producing a unified report, but it suffers from the problem of being a repetitive manual job that needs to be done even after you already have an automation infrastructure and it will eventually but surely (specially as more and more automation is added) run into issues of coordination and maintenance that will make more expensive and in some cases will render it misleading or even obsolete.</p>
<p>&nbsp;</p>
<h4>What&#8217;s your take?</h4>
<p><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/05/dog_listening.jpg"><img class="alignright size-medium wp-image-1475" title="dog_listening" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/05/dog_listening-300x300.jpg" alt="" width="180" height="180" /></a>I am actively looking for more issues, experiences or comments like the ones above that revolve around the challenges in manual and automated testing.  Do you have stuff you want to share?  Please add it as comments or mail me directly to joel-at-practitest-com.</p>
<p>We&#8217;ve been working on a solution for these types of issues and so we are looking for all the inputs we can get in order to make sure it will provide an answer to as many of the existing challenges as possible.  I will be grateful for any help you can provide!</p>
]]></content:encoded>
			<wfw:commentRss>http://qablog.practitest.com/2011/05/manual-and-automated-tests/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Agile Thinking instead of Agile Testing</title>
		<link>http://qablog.practitest.com/2011/03/agile-thinking-instead-of-agile-testing/</link>
		<comments>http://qablog.practitest.com/2011/03/agile-thinking-instead-of-agile-testing/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 07:22:51 +0000</pubDate>
		<dc:creator>Joel Montvelisky</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[On-Going Improvement]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Testing Skills]]></category>

		<guid isPermaLink="false">http://qablog.practitest.com/?p=1321</guid>
		<description><![CDATA[Is there such a thing as Agile Testing? I'm not sure there is...
You don't need to work on an agile team to work and test based on an Agile Thinking mindset.]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been working on the 3rd edition of the Hebrew Testing Magazine &#8220;<a href="http://www.thinktesting.co.il/" target="_blank">ThinkTesting</a>&#8220;, going down to printing in the next day or two.  This edition&#8217;s theme is Agile Testing and so I&#8217;ve been reviewing and even writing some articles about the subject.</p>
<p>One of the articles I read includes a phrase that got stuck in my head, translating it freely to English it reads something like &#8220;<em>If we look closely into the Agile Principles we can see that they are improvements made to some of the existing development methods with the use of experience and common sense&#8230;</em>&#8221;</p>
<p>At the beginning I was not sure if I can agree with the statement, and then I decided to narrow my focus and look only into the testing aspects of the Agile organizations I know; can Agile testing be (basically) improvements made to the regular testing methodologies by applying the use of experience and common sense?</p>
<p style="text-align: center;"><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/03/commonsense.jpg"><img class="aligncenter size-full wp-image-1330" title="commonsense" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/03/commonsense.jpg" alt="" width="201" height="130" /></a></p>
<h4>Is there such a thing as Agile Testing?</h4>
<p>I&#8217;m not sure&#8230; <strong>is there?</strong><br />
Lately I think there really isn&#8217;t.</p>
<p>Is there really something you do as an Agile Tester that you couldn&#8217;t do as a &#8220;Regular or Traditional&#8221; Tester?  The answer, at least for me, is a definite <strong>NO.</strong></p>
<p>Why wouldn&#8217;t I, as any kind of tester, be involved in the planning and scheduling stages for the project that is going to be developed by my programming and testing team?  Do I need to call it Planning Poker in order to take part of the process? <strong>NO.</strong></p>
<p>Why can&#8217;t I as a tester on a V-Model team (if there is such a thing) work with the developers and help them test their features before they  are delivered to me for functional or integration testing?  Do I need to call it pair-programming or Agile Testing in order to make this collaboration happen? <strong>N</strong><strong>O.</strong></p>
<p>Should you as a tester (in any type of development team!) not work towards having in place the automation infrastructure that will allow your developers to test their changes constantly (CI) or institute a working methodology where Quality is the Responsibility of the Whole Team and not only of the testers at the end of process?  <strong>OF COURSE YOU SHOULD!</strong></p>
<p>So in short <strong><span style="text-decoration: underline;">there is nothing directly related to testing that should apply only to Agile Teams</span></strong>.</p>
<h4>Agile Thinking instead of Agile Testing</h4>
<p><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/03/Mindset.jpg"><img class="size-medium wp-image-1323 aligncenter" title="Mindset" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2011/03/Mindset-300x200.jpg" alt="" width="300" height="200" /></a>Still, it would be naive to say that testers in Agile Teams don&#8217;t work differently than testers in non-agile teams. But I am starting to realize that this is mostly due to a change in mindset and not due to a change in the job description.</p>
<p style="text-align: center;"><strong>Agile teams simply think differently than non-agile teams.</strong></p>
<p>For a start, my experience is that agile teams are more testing-conscious.  This means that programmers understand the <strong>real value of testing</strong> and so are more willing to do it than their non-agile colleagues.  Granted, most agile programmers will only go as far as extending their unit-testing coverage or maybe creating some additional functional tests using Cucumber or Selenium, but even this is great step forward.</p>
<p>Agile teams are also less hierarchical, and so developers are able to see testers as their peers, as colleagues who can give them feedback and with whom they can consult on professional issues (and not only as great palls to go out to lunch or for a beer once in a while, which is also good BTW!).</p>
<p>This last point is not trivial, the (hierarchical) differentiation between programmers and testers in traditional development teams is one of the biggest obstacles for a tester who wants to take a more active role in the development process.  This means that a tester in a traditional team will have a harder time been heard, but it doesn&#8217;t mean she shouldn&#8217;t raise her voice in order to voice her thoughts!  It&#8217;s a matter of initially trying harder to get noticed and making sure that whenever you do this the feedback you provide is intelligent and productive.</p>
<p>Lastly, a tester in a traditional team should not &#8220;be afraid&#8221; to take a more central role in the design of his application and the planning of his project.  Not only are we a part of the team who will be doing the job, but as testers we hold the central role of been the <a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//?s=customer+advocate" target="_blank">customer advocates</a> within our teams.  The problem is that usually, due to the nature of traditional projects the most intensive part of the testing for project X happens almost in parallel to the most intensive part of the planning for project X+1.  The solution to this is only a matter of making it a priority to be part of the design and planning processes, and committing the time when it is useful.</p>
<p>So in the end, the way we want to work is basically up to us, <strong>you don&#8217;t need to be on an agile team to use an Agile Thinking mindset.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://qablog.practitest.com/2011/03/agile-thinking-instead-of-agile-testing/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Teaching programmers to test</title>
		<link>http://qablog.practitest.com/2010/12/teaching-programmers-to-test/</link>
		<comments>http://qablog.practitest.com/2010/12/teaching-programmers-to-test/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 12:28:42 +0000</pubDate>
		<dc:creator>Joel Montvelisky</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Developer Testing]]></category>
		<category><![CDATA[Testing Skills]]></category>

		<guid isPermaLink="false">http://qablog.practitest.com/?p=1222</guid>
		<description><![CDATA[Yesterday I started providing short training sessions for agile programmers who need to learn how to test better.  
Would you trust a programmer to test your application?  It's like asking a Fox to guard the chicken-house, right?  Well, sometimes you don't have a choice, or you do but that choice is to release the application untested...]]></description>
			<content:encoded><![CDATA[<p>Would you trust a programmer to test your application?  It&#8217;s like asking a Fox to guard the chicken-house, right?</p>
<p><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2010/12/Fox.png"><img class="aligncenter size-medium wp-image-1223" title="Fox" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2010/12/Fox-300x236.png" alt="" width="300" height="236" /></a></p>
<p>Well, sometimes you don&#8217;t have a choice, or you do but that choice is to release the application untested&#8230;</p>
<p>As part of a consulting engagement I am doing at a friend&#8217;s company, yesterday I started providing short training sessions for programmers who need to learn how to test better.  It&#8217;s not that this company doesn&#8217;t have testers, they have good testers!  But as many other agile teams they have much more testing tasks than available testers, and they want programmers to take part in at least some of their testing tasks.</p>
<h3>Programmers are not good at testing!</h3>
<p>A couple of months ago I wrote a post explaining why I think <a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//2010/05/why-cant-developers-be-good-testers/" target="_blank">programmers make poor testers</a>, and I still think that in a sense it is like asking a dog to fly (take a look at the cool picture in the post <img src='http://qablog.practitest.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ). On the other hand I also believe that with some good intentions, hard work, and perseverance you can teach a dog to skip far enough and that way to jump over large obstacles.</p>
<p>In the same way, you will not be able to magically transform programmers into a good testers overnight, but you can start by working with them on their weaknesses and then teaching them some simple and effective testing techniques.  With good intentions, a little practice, some hand-holding, and constant feedback you will be able to get some good testing help in your project.</p>
<h3>Step 1 &#8211; understand the limitation and weaknesses of a programmer</h3>
<p>I started my session yesterday by going over the points I listed in my earlier blog that make programmers &#8220;less-than-perfect-testers&#8221;:</p>
<p style="padding-left: 30px;">- Parental feeling towards their own code.<br />
- Placing the focus mainly on positive scenarios, instead of actively looking for the bugs.<br />
- Tendency to look at a &#8220;complex problem&#8221; as a collection of &#8220;smaller, simpler, and isolated cases&#8221;.<br />
- Less End-to-End or User-Perspective oriented.<br />
- Less experience and knowledge of the common bugs and application pitfalls.</p>
<p>It made a big difference during the session to not only list the weaknesses but talk about why each of them is naturally present in programmers due to the nature of their work, their knowledge and training.</p>
<h3>Step 2 &#8211; how to plan tests</h3>
<p>I&#8217;ve seen that many (most?) programmers have the perception that testing requires little or no planning.</p>
<p>Maybe we testers are guilty of this misconception since we don&#8217;t get them involved in our test planning process as much as we should, but the truth of the matter is that when we ask them to test they they automatically grab a mouse and start pressing on the buttons without much consideration or thought.</p>
<p>Test Planning is a cardinal aspect of good tested, so I gave them a couple of ideas and principles planing:</p>
<p><strong>1.  DON&#8217;T TEST YOUR OWN CODE!</strong><br />
When as a team they are asked to test, they should make sure to divide the tasks so that each of them is testing the code developed by other programmers as much as possible.</p>
<p><strong>2.  Work with your testing team to create test sets.</strong><br />
This specific team is using PractiTest (the hosted QA and <a href="http://www.practitest.com/" target="_blank">Test Management platform</a> my company is developing), but it can be any other tool or format (even word and excel!).  They should sit with their testers and define what test cases need to be run, reusing the testing scripts already available in their repositories.</p>
<p><strong>3.  Expand your scenarios by making &#8220;Testing Lists&#8221;</strong></p>
<p style="padding-left: 30px;">- Features that were created or modified (directly or indirectly)<br />
- User profiles and scenarios to be verified.<br />
- Different environments / configurations / datasets to be tested</p>
<p>The use of these lists is two-fold.<br />
They help you get a better idea of what you want to test while you are running your manual test scripts, and they also serve as a verification list to consult towards the end of the tests when you are looking for additional ideas ow when you want to make sure you are not missing anything of importance.</p>
<p><strong>4.  Testing Heuristics &#8211; SFDEPOT (read San Francisco Depot)</strong><br />
The use of (good) heuristics greatly improve the quality of your testing.<br />
I provided the programmers with the heuristic I learned fist and still helps me up to this day.  I read about SFDEPO(T) from James Bach some years ago &#8211; you can check one of the sources for it from <a href="http://www.satisfice.com/articles/sfdpo.shtml" target="_blank">Jame&#8217;s Site</a>.</p>
<p><strong>SFDEPOT</strong> stands for:<br />
<strong>S</strong>tructure (what the product is)<br />
<strong>F</strong>unction (what the produce does)<br />
<strong>D</strong>ata (what it processes)<br />
<strong>P</strong>latform (what it depends upon)<br />
<strong>O</strong>perations (how will it be used)<br />
<strong>T</strong>ime (when will it be used)</p>
<p>There are other heuristics and Mnemonics you can take from the Internet&#8230;</p>
<h3>Step 3 &#8211; what to do when running tests</h3>
<p>We talked a lot about tips to help perform good testing sessions.</p>
<p><strong>1. Have a notebook handy.<br />
</strong>In it you can take notes such as testing ideas you will want to test later, bugs you ran into and want to report later in order to &#8220;not to cut your testing thoughts&#8221;, etc.</p>
<p><strong>2.  Work with extreme data</strong>.<br />
Big files vs. Small files<br />
Equivalent input classes [ -10 ; 0 ; 1 ; 10,000,000 ; 0.5 ; not-a-number ]<br />
Dates: Yesterday, now, 10 years from now<br />
etc</p>
<p><strong>3.  Think about negative scenarios.</strong><br />
- How would Mr. Bean use your software?<br />
- How would a hacker try to exploit the system?<br />
- What would happen if&#8230;? (blackout, run out of space, exceptions, etc)<br />
- What if your  2 year old would hijack the keyboard in the middle of an operation?<br />
- etc<a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2010/12/Mr-Bean.jpg"><img class="aligncenter size-medium wp-image-1231" title="Mr-Bean" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2010/12/Mr-Bean-300x164.jpg" alt="" width="300" height="164" /></a></p>
<p><strong>4.  Focus &amp; Defocus.</strong><br />
(Thanks Ayal for teaching me this principle this year!)<br />
I used this technique to explain to them that during their testing process they need to make a conscious effort to always look at the bigger picture (application, system, process) and not only focus on the specific function they were testing.</p>
<p><strong>5.  Fight Inattentional Blindness.</strong><br />
I used the following film of <a href="http://www.youtube.com/watch?v=vJG698U2Mvo" target="_blank">the kids passing the balls</a> to explain the concept of <a href="http://en.wikipedia.org/wiki/Inattentional_blindness" target="_blank">Inattentional Blindness</a> and it worked great!<br />
We were 8 people in the room, and only I had seen the video before.  Out of the 7 participants one is currently a tester, another one is a former tester turned programmer, the rest are &#8220;regular programmers&#8221;.<br />
The cool thing is that only the 2 testers saw the Gorilla the first time&#8230;  talk about making a point!</p>
<h3>Step 4 &#8211; what to do when (you think) you are done testing</h3>
<p>We talked about how even when you think you are done testing you should always make sure there is nothing else that should be tested, and what techniques they can use in order to find these additional places:</p>
<p><strong>1.  Walking the dog</strong><br />
Taking a break from your tests, doing another tasks for 30 &#8211; 60 minutes, and then returning to review the tests you did and what you found.  This break usually helps to refresh the mind and to come up with more ideas.</p>
<p><strong>2.  Doing a walk-through session to review the tests you did.</strong><br />
Most of the time you will be able to get more ideas as you explain to your peers about tests you just did.<br />
The funny part is that many of these ideas will come from yourself and the things you think about when you are explaining your tests to others out loud.</p>
<p><strong>3.  Ask for ideas from other developers or testers.</strong><br />
Simple as it sounds, come to others in your team and ask them to pitch you ideas of stuff they think you could test.  90% of the stuff you will already have tested, but the other 10% might prove useful too!</p>
<h3>In the end is a questions of mindset and motivation</h3>
<p>One of the things I like most of agile teams (and many non-agile but yes  smart development teams) is that they define Quality to be the  responsibility of the whole team and not only of the testing guys  running the tests tasks at the end of the process.</p>
<p>My final piece of advice to the group was that everything starts from them, and their understanding that testing is not a trivial task and definitely not a reprimand for doing a bad job or for finishing their tasks ahead of time.  What&#8217;s more, I am sure that once these guys start testing better and gaining a testing perspective of their application they will also start developing better software too.</p>
<p>Now I have another 3 development teams I need to train.<br />
Let&#8217;s see how it goes with them <img src='http://qablog.practitest.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://qablog.practitest.com/2010/12/teaching-programmers-to-test/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The Power of Empowerment</title>
		<link>http://qablog.practitest.com/2010/11/the-power-of-empowerment/</link>
		<comments>http://qablog.practitest.com/2010/11/the-power-of-empowerment/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 18:48:17 +0000</pubDate>
		<dc:creator>Joel Montvelisky</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Test Process]]></category>
		<category><![CDATA[Developer Testing]]></category>
		<category><![CDATA[Testing Tips]]></category>

		<guid isPermaLink="false">http://qablog.practitest.com/?p=1206</guid>
		<description><![CDATA[Have you ever been on a situation where you need to test 10 things but you have only the time for 6 of them, and on the other hand you look at your development team and 2 programmers are done with all their important tasks and started working on stuff that sits under the "nice-to-have" list (or even worst, they went to the game room to "test the Wii")?  What do you do?]]></description>
			<content:encoded><![CDATA[<p><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2010/11/paper-cutouts.jpg"><img class="aligncenter size-medium wp-image-1210" title="paper-cutouts" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2010/11/paper-cutouts-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Have you ever been on a situation where you need to test 10 things but you have only the time for 6 of them, and on the other hand you look at your development team and 2 programmers are done with all their important tasks and started working on stuff that sits under the &#8220;nice-to-have&#8221; list (or even worst, they went to the game room to &#8220;<em>test the Wii</em>&#8220;)?   What do you do?</p>
<p>The answer will depend on <strong>how you have prepared your team and your testing infrastructure to delegate part of the testing task</strong>, in other words on how have you <strong>EMPOWERED your developers</strong> to be testers when needed.<br />
<br/></p>
<h5>But developers can&#8217;t test!!!</h5>
<p>I know programmers are not ideal testers, I even <a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//2010/05/why-cant-developers-be-good-testers/" target="_blank">wrote about it in the past</a>.  But when the alternative is that the features will go out untested or that to run a sanity test on all the features you will risk not running critical tests on more important parts of the system <strong>you may be willing to compromise</strong>.</p>
<p>The important thing then becomes how well have you built your testing infrastructure and how have you prepared your programmers so that they can lend a helping hand when needed.<br />
<br/></p>
<h5>It&#8217;s like teaching a dog how to fly</h5>
<p><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2010/11/flying-dog.jpg"><img class="aligncenter size-medium wp-image-1209" title="flying dog" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2010/11/flying-dog-300x223.jpg" alt="" width="300" height="223" /></a><br />
<br/>You cannot teach a dog how to fly, but you can train him to jump far enough.  In the same way you cannot train a developer to become a star tester, but you can give him the ability to go over the system and find the &#8220;critical bugs&#8221;.</p>
<p>How do you do it?  It&#8217;s not rocket science, although if it was it might actually be easier for them to understand it! Start by <strong>describing what you do</strong> when you approach a testing task.</p>
<p>I usually do 2 main things with my developers when I prepare them to test:</p>
<p><strong><span style="text-decoration: underline;">1.  Explain about testing principles</span>.</strong> How to look at the application from a user&#8217;s perspective and disregard as much as possible the internal architecture.  I explain to them about building end-to-end workflows, about working with user profiles, thinking in terms of negative scenarios, and using extreme and wrong inputs in order to find for bugs.<br />
I find this can be easily done by gathering them in a conference room and doing a quick presentation that will show them the <strong>different techniques and examples of the type of bugs</strong> they can expect to find with them.</p>
<p><strong><span style="text-decoration: underline;">2. Run  Pair-Testing sessions</span>.</strong> When I want to help a programmer understand how I think when I test I invite him to do a <strong>30 to 90 minutes</strong> pair testing session.  During this time I grab the mouse and explain to him how I think and what am I looking for as I test a part of the system.  About half way through the session <strong>I switch places</strong> with him and ask him to &#8220;test out loud&#8221; so that I can help him and give him ideas and guidance.</p>
<p>These 2 activities help my programmers to embark on testing tasks with enough self confidence in order to take ownership on testing tasks.<br />
<br/></p>
<h5>Preparing the grounds</h5>
<p>Another facilitating factor to empower your programmers to test is <strong>how ready your infrastructure is to support and guide them</strong> as they test.  Is you test plan and your test-ware ready to be used by other people?</p>
<p>It is easier to go and tell a programmer to go and test Feature-X if you also provide him with <strong>some sanity tests and/or checklists</strong> that will guide him through the main parts of the process.   For this you need to write these tests or checklists ahead of time.</p>
<p>Personally I don&#8217;t think you need to create extremely documented steps, but it will certainly help if they have the main business scenarios available and they can go over the basic coverage of your application in a structured way.    Just make sure to <strong>explain to them that these scenarios are only a guiding path</strong> and the most important bugs will usually be found on the areas that are &#8220;on the sides&#8221; of the way and not necessarily along it (this is something that is easier explained as part of the pair testing walkthrough).</p>
<p>Another important aspect that is not always trivial is whether you have <strong>enough testing environments to accommodate all your new testers?</strong> Do you have enough licenses to test your external integrations?   Are your systems configured, up and running?</p>
<p>If you are not prepared to &#8220;host new testers&#8221; sometimes it may take even more time to set up these environments than what you can save by getting the extra help, so better be prepared ahead of time.</p>
<p>Lastly, how will your &#8220;new testers&#8221; <strong>document and report their tests so that you can review them</strong> after they are done?  It may sound trivial but you want to make sure you can go over what they tested, review their work and provide feedback on additional stuff they may want to test &#8220;based on your professional experience&#8221;.</p>
<p>If you have a test management system (like <a href="http://www.practitest.com" target="_blank">PractiTest</a> <img src='http://qablog.practitest.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) it may help, but if you don&#8217;t you can use text documents or even hand-writen notes.  The important thing is that you can go over what they&#8217;ve done, understand what was achieved, and provide feedback if necessary.</p>
<p>In short, make sure your infrastructure is in place to incorporate more testers on-the-fly.<br />
<br/></p>
<h5>Understanding what to delegate and to who?</h5>
<p>An additional point to review on this subject is related to understanding what parts of your testing tasks you can delegate and which ones are simply out of you &#8220;new testers&#8221; reach?  What is complex and what isn&#8217;t?  Where are the highest risk? etc.  As much as you want to relay on your programmers they simply don&#8217;t have the experience and in some cases the mind-set to test complex stuff and find all the issues in there, so better <strong>make your risk assessment correctly</strong>.</p>
<p>Also, you need to check who is going to be testing what feature or area of the system, for example <strong>you cannot give a feature to the same developer who wrote it</strong> (and you can check some of the reasons why on <a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//2010/05/why-cant-developers-be-good-testers/" target="_blank">this article</a> I mentioned before).<br />
<br/></p>
<h5>Learning to work with compromises</h5>
<p>In the end <strong>it is a game of trade-offs, preparations and compromises</strong>.</p>
<p>It&#8217;s always nice to know you can call on additional resources when you need them, but understand they will be able to help you only in limited ways.  Also understand that in order for this to work you need to prepare the infrastructure ahead of time and have &#8220;trained testers&#8221; who will be able to step to plate and help you out when you need them.</p>
]]></content:encoded>
			<wfw:commentRss>http://qablog.practitest.com/2010/11/the-power-of-empowerment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>There is value in changing hats</title>
		<link>http://qablog.practitest.com/2010/11/there-is-value-in-changing-hats/</link>
		<comments>http://qablog.practitest.com/2010/11/there-is-value-in-changing-hats/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 13:53:08 +0000</pubDate>
		<dc:creator>Joel Montvelisky</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Test Process]]></category>
		<category><![CDATA[Developer Testing]]></category>
		<category><![CDATA[Testing Tips]]></category>

		<guid isPermaLink="false">http://qablog.practitest.com/?p=1182</guid>
		<description><![CDATA[It is important for developers to take responsibility for end-to-end testing tasks once in a while.  It helps them to understand what matters to us when we do our job, and maybe even more importantly it teaches them to do their jobs better.]]></description>
			<content:encoded><![CDATA[<p><a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2010/11/hats.jpg"><img class="aligncenter size-full wp-image-1183" title="hats" src="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//wp-content/uploads/2010/11/hats.jpg" alt="" width="225" height="300" /></a></p>
<p>Today I took &#8220;half a day off&#8221; to work on developing a feature I&#8217;ve been wanting to add to <a href="http://www.practitest.com" target="_blank">PractiTest</a> for a long time.</p>
<p>It&#8217;s fun to do it once in a while; to take a break, get my hands dirty, develop something for a bit and then go back to my regular work as a test manager and solution architect.  It&#8217;s not that I don&#8217;t trust my development team, I guess I did it for the fun of it <img src='http://qablog.practitest.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I read somewhere that it is related to changing your focus and &#8220;going deep&#8221; on a task that is unrelated to what you do all day but still closely linked to your work and how this helps to refresh your mind by breaking out of your working routine.<br />
<br/></p>
<h4>Writing GOOD CODE is hard!</h4>
<p>For me as a tester it is also a reminder of how hard development work really is, a chance to experience first-hand how non-trivial it is to write something that looks good on all browsers and works correctly in all Operating Systems.</p>
<p>I am sure that even though I tested my &#8220;small feature&#8221; thoroughly, once it reaches someone from my team for testing he or she will find at least one or two annoying bugs on scenarios I had not thought about.  After all, isn&#8217;t this the art of testing?<br />
<br/></p>
<h4>Running GOOD TESTS is also hard!</h4>
<p>The same is true about testing, you need to give a developer an end-to-end testing task for him to understand how difficult it is to test.</p>
<p>I heard this from a testing colleague in another company the other day, he works on an agile team where developers sometimes get testing tasks assigned to them, but then come back to him asking &#8220;if he can re-run the tests on his spare time&#8221; since they don&#8217;t feel god enough with their testing coverage.</p>
<p>Is this a case of someone wanting some reassurance and validation on his work, or someone who doesn&#8217;t want to take responsibility for his task and wants someone else to do it for him?  The truth is that it is hard to tell&#8230;<br />
<br/></p>
<h4>Teach your developers to test!</h4>
<p>It is important for developers to take responsibility for end-to-end testing tasks once in a while; it helps them to understand what matters to us when we do our job, and maybe even more importantly it teaches them to do their jobs better!</p>
<p>If a programmer experiences first hand how his code behaves on a &#8220;realistic&#8221; testing environment then he can take this experience and code accordingly next time he sits to work on developing a feature.  It&#8217;s not about making him take responsibility for testing his own code, I think he simply <a href="http://qablog.practitest.com.php5-20.dfw1-1.websitetestlink.com//2010/05/why-cant-developers-be-good-testers/" target="_blank">can&#8217;t do this</a>, but about learning to develop while been aware about additional factors that may affect his code.</p>
<p>To achieve this you cannot give him a 2 hours of testing task at the end of the sprint, he needs to take responsibility for a complete testing project and let him feel and live the work of a tester, even for a little while.</p>
<p>Doing this will not only provide you with some additional testing resources that can be used in times when the bottle neck sits in the QA department and Developers can help out, but it will also give them tools to stop bugs from crawling into the code in the first place.</p>
<p>Overall a win-win for the whole team.</p>
]]></content:encoded>
			<wfw:commentRss>http://qablog.practitest.com/2010/11/there-is-value-in-changing-hats/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

Served from: qablog.practitest.com @ 2012-02-04 15:23:43 -->
