<?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>ReQtest</title>
	<atom:link href="http://www.reqtest.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.reqtest.com</link>
	<description>Software Testing in the Cloud</description>
	<lastBuildDate>Fri, 18 May 2012 09:00:41 +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>Test Documentation in Agile Projects</title>
		<link>http://www.reqtest.com/blog/test-documentation-in-agile-projects/</link>
		<comments>http://www.reqtest.com/blog/test-documentation-in-agile-projects/#comments</comments>
		<pubDate>Fri, 18 May 2012 09:00:41 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[test documentation in agile]]></category>
		<category><![CDATA[test strategy]]></category>
		<category><![CDATA[what to document in agile]]></category>

		<guid isPermaLink="false">http://www.reqtest.com/?p=1545</guid>
		<description><![CDATA[As we have previously stated, the agile approach has a number of effects on the tester&#8217;s role. If you’re used to working in a more traditional approach, you might feel uncertain about working in an Agile project because it will &#8230; <a href="http://www.reqtest.com/blog/test-documentation-in-agile-projects/">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As we have previously stated, <a title="Requirements Management in Agile Projects" href="http://www.reqtest.com/blog/requirements-management-in-agile-projects/">the agile approach</a> has a number of effects on the tester&#8217;s role. If you’re used to working in a more traditional approach, you might feel uncertain about working in an Agile project because it will operate in a different way than what you&#8217;re used to.<br />
&nbsp;<br />
It is true that there are differences, however, be aware that <strong>you can leverage your testing skills within an Agile project</strong> so that your testing skills are put to good use, just as all the skills in the team are useful. This philosophy applies extremely well to the matter of test documentation in Agile projects.<br />
&nbsp;<br />
Many people who work traditionally find that there is a lot of test documentation, much of which has to be maintained throughout the system&#8217;s lifetime.</p>
<p>In Agile work, it is common to<strong> work in short sprints or iterations</strong>, which consist of tasks where the system is designed, coded and tested. The team might carry out ten releases per year, compared with the 2-4 which is common when working traditionally. As <strong>each sprint is focused on only a few requirements</strong>, it is natural that<strong> the documentation may not be as extensive</strong>.<br />
&nbsp;<br />
In traditional work, documentation has to be more expansive, especially when developing larger portions of the system. In agile projects the test plan often consists of only a single page or two.</p>
<p>Since the test plan is a short paper, it is highly advisable to <strong>supplement it with a testing strategy</strong>. The test strategy describes how the system is usually tested. Think of the test plan for a moment. A test plan contains many headlines and much of the content is the same from release to release. Typical examples include a description of the test environment, what should be prioritized in the tests, what roles are needed and a comprehensive description of the system.</p>
<p>All of this can be described in the test strategy instead. This way you will get a good connection between a test plan that describes what should be tested at this time and a test strategy that describes what is always important but is not specific to this sprint. <strong>The test strategy is a living document and evolves over time</strong> and is relevant even when personnel come and go from time to time.<br />
&nbsp;<br />
It is important to strive to not over-document. <strong>Always document what is needed but document <em>just</em> what is needed for the work to be done.</strong></p>
<p>These are some commonly used documents in agile testing:</p>
<ul>
<li>A test strategy that describes how the system is usually tested.</li>
<li>A test plan for each sprint.</li>
<li>Test specifications which contain test cases.</li>
<li>Test Ideas for exploratory testing and test logs in which the outcome is noted.</li>
<li>Checklists for installation testing and regression testing.</li>
</ul>
<p>&nbsp;</p>
<h3>Test cases are often replaced by checklists and exploratory testing.</h3>
<p>In traditional work, there are often lots of test cases. They also occur in Agile work, sometimes largely, and sometimes to a lesser extent. The disadvantage of the traditional test case in an Agile project is that it takes quite a lot of time to plan and write them. In many cases, checklists or &#8220;test ideas&#8221; work better.</p>
<p><strong>Make a checklist per area to be tested</strong> and in each case describe in 1-2 lines what should be tested. In the end, your checklist will look like a bunch of one liners. It is also wise to create a supplementary checklist with general tests. There are several examples of such checklists in our blog. If the need arises in the future, checklists can be converted to traditional test cases.</p>
<p><a title="http://agilemanifesto.org/" href="http://agilemanifesto.org/" target="_blank"> The agile manifesto</a> contains a number of values or principles that are regarded as key success factors for agile work. One of these is &#8220;working software over comprehensive documentation&#8221;. Of course, this does not mean that all documentation is unnecessary.<br />
&nbsp;</p>
<h3>Documentation is a tool to achieve the goal, and the goal is working software.</h3>
<p><strong>In traditional development, you can sometimes feel that the documentation is a goal in itself</strong> and the documentation becomes a product that is not used.</p>
<p>In agile, work is different. Inevitably there is documentation needed for system maintenance and management. It may include the user documentation and system documentation, but <strong>the question you need to ask yourself is ‘what is needed during the current work?’</strong> Document only what is needed, but certainly what is needed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reqtest.com/blog/test-documentation-in-agile-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to identify stakeholders</title>
		<link>http://www.reqtest.com/newsletters/how-to-identify-stakeholders/</link>
		<comments>http://www.reqtest.com/newsletters/how-to-identify-stakeholders/#comments</comments>
		<pubDate>Wed, 16 May 2012 08:28:44 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Newsletters]]></category>
		<category><![CDATA[stakeholder analysis]]></category>
		<category><![CDATA[stakeholder workshop]]></category>

		<guid isPermaLink="false">http://www.reqtest.com/?p=1538</guid>
		<description><![CDATA[A common problem in requirements management for IT systems is that stakeholders are often overlooked. This causes complications, and occasionally, even interpersonal conflicts. No one likes being left out, especially if they have an important role to play. Unfortunately, development &#8230; <a href="http://www.reqtest.com/newsletters/how-to-identify-stakeholders/">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A common problem in requirements management for IT systems is that stakeholders are often overlooked. This causes complications, and occasionally, even interpersonal conflicts. No one likes being left out, especially if they have an important role to play.</p>
<p>Unfortunately, development teams often become aware of this problem late in the process. Correcting this issue often means costly rework and client dissatisfaction. In this post you will learn <strong>how to use a workshop to perform a stakeholder analysis and create your own list of stakeholders within a project</strong>.</p>
<p>A good place to start is by <strong>creating a typical list of stakeholders.</strong> This will vary according to the industry or scope of the project, but a typical stakeholder list would include:</p>
<ul>
<li>Customers</li>
<li>Customers’ customers</li>
<li>Users</li>
<li>Developers</li>
<li>Marketers</li>
<li>Product Managers</li>
<li>Testers</li>
<li>Authorities/regulators</li>
<li>Laws/company lawyers</li>
</ul>
<p>&nbsp;<br />
This list can help you to identify stakeholders, but because as said earlier, stakeholders are different for every system, you will need to conduct a stakeholder analysis. We like to carry this out in the form of a facilitated workshop.</p>
<p>Your participants in the workshop might include people who were involved in a feasibility study, or representatives from both the client and the system provider.</p>
<p>One way of starting the exercise is to simply write the name of the project or system in a circle in the middle of a whiteboard.<br />
&nbsp;<br />
<strong>Let the participants brainstorm all the possible stakeholders</strong>. They should write the name, role, or organization of each stakeholder on a post-it-note and place it on the whiteboard around the circle.</p>
<p>Next, draw an arrow between each stakeholder and the project.</p>
<p>Divide the participants into groups and distribute the stakeholders between the groups.</p>
<p>Give the groups around 30 minutes to <strong>discuss what each stakeholder gets or requires from the project</strong>, and <strong>what the project needs from or gets from the stakeholder</strong>.<br />
&nbsp;<br />
After 30 minutes the groups should present their findings. Write down what the stakeholder requires or receives from the project on one end of the arrow, closest to the stakeholder, and what the project requires or receives from the stakeholder at the other end, near the project.</p>
<p>After all the groups have presented their findings and your workshop is complete, you will have produced the material for a table similar to the one below.<br />
&nbsp;</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1539 colorbox-1538" title="How to identify stakeholders" src="http://www.reqtest.com/wp-content/uploads/2012/05/ReQtest-Newsletter-5-October-2011-remake-of-09.doc.001.png" alt="How to identify stakeholders" width="717" height="538" /></p>
<p>&nbsp;<br />
This method is not perfect and may require practical tweaking in situations with a large number of participants. However, it does provide<strong> a solid base from which to start</strong>.<br />
&nbsp;<br />
Keep in mind that certain requirements are to be discussed in more detail than described above, and with people who are specialized in that field. For example, any design work requirements should be relatively simple, especially if a senior designer attends the stakeholder meeting above, but other requirements, such as the law, are far more complex. Do set aside plenty of time to discuss in more detail where required.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reqtest.com/newsletters/how-to-identify-stakeholders/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A cloud on the horizon: How Cloud Computing will change requirements management and testing</title>
		<link>http://www.reqtest.com/blog/a-cloud-on-the-horizon-how-cloud-computing-will-change-requirements-management-and-testing/</link>
		<comments>http://www.reqtest.com/blog/a-cloud-on-the-horizon-how-cloud-computing-will-change-requirements-management-and-testing/#comments</comments>
		<pubDate>Mon, 14 May 2012 10:13:11 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[advantages of the cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[disadvantages of the cloud]]></category>
		<category><![CDATA[iaas]]></category>
		<category><![CDATA[paas]]></category>
		<category><![CDATA[saas]]></category>
		<category><![CDATA[software as a service]]></category>
		<category><![CDATA[storage on the cloud]]></category>

		<guid isPermaLink="false">http://www.reqtest.com/?p=1529</guid>
		<description><![CDATA[All around the world, the media is abuzz about the arrival of the &#8220;cloud&#8221; – the ‘place’ where the systems and services we use daily will be found in the future. However, not everyone is clear on exactly what cloud &#8230; <a href="http://www.reqtest.com/blog/a-cloud-on-the-horizon-how-cloud-computing-will-change-requirements-management-and-testing/">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>All around the world, the media is abuzz about the arrival of the &#8220;cloud&#8221; – the ‘place’ where the systems and services we use daily will be found in the future. However, not everyone is clear on exactly what cloud computing is, much less how it will affect those of us who work in the field of requirements management and testing. This article will explain<strong> how the cloud will change our everyday lives,</strong> so get prepared for its arrival.<br />
&nbsp; </p>
<h3>What is &#8220;Cloud Computing&#8221;?</h3>
<p>To understand how the cloud will transform our working lives, you need to understand what said &#8220;Cloud&#8221; is. Unfortunately, there’s no simple answer, because the concept encompasses many others, such as:</p>
<ul>
<li><strong>Software as a Service</strong>, or SaaS</li>
<li><strong>Platform as a Service</strong>, or PaaS (a development platform as a service for development of cloud services)</li>
<li><strong>Infrastructure as a Service</strong>, or IaaS</li>
</ul>
<p>&nbsp;<br />
The term &#8220;cloud&#8221; covers all the areas above, and even more that are used more rarely, at least presently<br />
&nbsp; </p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1530 colorbox-1529" title="How Cloud Computing will change requirements management and testing.001" src="http://www.reqtest.com/wp-content/uploads/2012/05/How-Cloud-Computing-will-change-requirements-management-and-testing.001.png" alt="How Cloud Computing will change requirements management and testing" width="717" height="538" /></p>
<p style="text-align: center;">
<h3>Development environments for cloud services</h3>
<p>The past few years have seen the introduction of cloud-based development tools for the development of new cloud services, an example of which is Salesforce’s Force.com, in which one can build cloud services which run within their operating environment. There are countless other cloud-based development tools, including Windows Azure, Google App Engine and Amazon Web Services, and which are all examples of PaaS.</p>
<p><strong>Developers who use PaaS tools don’t have to worry about the production environment’s hardware, networks or operating systems</strong>, so they can develop new features and apps in a lot less time. That also means that requirements gathering and testing teams can see prototypes much faster. <strong>Developers don’t need worry about scalability</strong>, since PaaS takes care of that, too. Whenever your app needs more processing power, the PaaS provider&#8217;s data center can provide it instantaneously.</p>
<p>This is not to say that PaaS is not without its downsides. Foremost is that you don’t have complete control over your information, since the company providing the platform has both the data and the service in its ‘possession’. The data may not be stored in the country where the customer has its operations, which may be a legal problem or create security issues (real or perceived). <strong>Shorter development times can give the customer the expectation that requirements and testing work will be sped up in a similar way</strong>, which is not necessarily the case as the total lead time might end up being the same, due to increased time for requirements and testing work.<br />
&nbsp; </p>
<h3>Requirements management for cloud services</h3>
<p>A customer who wants a new cloud service has three main approaches to choose from:</p>
<ul>
<li>Subscribing to an existing SaaS service in the cloud.</li>
<li>Developing the cloud service in-house using a PaaS development environment.</li>
<li>Outsourcing development of the cloud service using a PaaS development environment.</li>
</ul>
<p>Requirements work will be much the same with a SaaS subscription as it would be by purchasing a COTS (commercial off the shelf) system.</p>
<p>However, there are some clear differences. Just like when buying a COTS system, <strong>you need requirements that define the functions the system needs to have</strong>. The difference is that you don’t need to specify requirements for the environment, version control, or other similar features since the service won’t be running in your environment.</p>
<p>Although you’re a client, you have very little or no say in when a new version of the service gets installed, and the company providing the service will do what their own needs dictate, whether it suits you or not. Likewise, you have little or no control over where they host the service. If your business needs to have control over the physical location of your data or software, you should stipulate that in the requirements and base your choice of provider on it.</p>
<p>For services that you develop through PaaS, it’s slightly easier to define the requirements for where information is stored and maintained, since some PaaS providers let you choose whether to use your company&#8217;s own &#8220;cloud&#8221; or the global &#8220;cloud&#8221;.</p>
<p>When you develop services with PaaS, you have to write more detailed requirements about what needs to be developed than you would when using a subscription service. Since development proceeds faster in PaaS than in a traditional environment, you can take advantage of prototyping to a much greater degree. <strong>Prototypes are always good for gathering requirements, but in PaaS, they become one of your most important tools</strong> – both to gather requirements and to have the opportunity to test at an earlier stage.</p>
<p>If you’re buying cloud services, you need to <strong>give special consideration to which PaaS you want the developers to use</strong>. If you don’t make an explicit choice, you may end up with custom-made services that all reside in the various providers’ own clouds, so you have to specify in which &#8220;clouds&#8221; your services are allowed to live if you want them all in one place. This is usually a minor problem if you do your development in-house, assuming your company has settled on a standard PaaS option. When you choose a PaaS provider, you should also specify uptime/availability requirements, performance, and security – all of which are known for any given PaaS provider, and which should guide your supplier selection.</p>
<p>With an external provider, you also have to <strong>specify what will happen to your cloud data</strong> and service in the event that your PaaS provider is acquired or goes bankrupt. Look for a supplier with an escrow plan that ensures they can continue operations for a given time period after bankruptcy. &#8216;Escrow&#8217; is storing your source code with a legal representative or equivalent entity. If the supplier has an escrow agreement, customers retain access to their source code and can continue development on their own if the supplier goes bankrupt.</p>
<p>You should also <strong>ensure that you own your information, not the supplier or its creditors</strong>. Every major PaaS provider has an insurance policy in its contracts, but if you choose another supplier, you should take extra care to ensure that your assets are protected. Review the contract and ask tough questions!<br />
&nbsp; </p>
<h3>Testing in cloud-based development</h3>
<p>Just as in requirements management, <strong>the most obvious differences in cloud-based testing depend on whether you are testing existing services or custom-developed ones</strong>.</p>
<p>When testing custom-developed cloud services, you have all the opportunity in the world to test the service thoroughly. You can test prototypes to verify general solutions and specific functionality. Since development times are much shorter in cloud-based development, you may need to adjust your test plan.</p>
<p>To ensure you set aside enough time for testing, you should <strong>begin testing work as early as possible</strong>, and an easy way to get started is by testing using the prototypes generated in requirements gathering. One way of doing so is by putting users in front of the prototypes to ensure that they understand how they’re expected to perform a required task.</p>
<p>Agile methodologies will make your work easier throughout development, and in testing, Exploratory Testing techniques come in handy. Exploratory Testing helps you learn while you test, and is a natural consequence of using prototypes for testing your new service. Another alternative is to write your cloud-based services using test-driven development.</p>
<p>If you’re subscribing to a finished SaaS application, a trial subscription is the only way you can conduct a &#8220;proof of concept&#8221; test, which can be thought of as an acceptance test. The point of the trial is to <strong>ensure that cloud service meets your company’s operational needs</strong>.</p>
<p>If your prospective provider won’t allow you to trial the service free of charge, it will be impossible for you to know what you’re buying – which itself constitutes a form of acceptance test that the stubborn supplier has failed. If they won’t let you thoroughly test the service in advance, the supplier probably won’t be responsive to your customer needs in the future, either.<br />
&nbsp; </p>
<h3>Next steps</h3>
<p>Start thinking about how the &#8220;cloud&#8221; affects requirements and testing work for your organization.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reqtest.com/blog/a-cloud-on-the-horizon-how-cloud-computing-will-change-requirements-management-and-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8216;Lean&#8217; and requirements management and testing</title>
		<link>http://www.reqtest.com/newsletters/lean-and-requirements-management-and-testing/</link>
		<comments>http://www.reqtest.com/newsletters/lean-and-requirements-management-and-testing/#comments</comments>
		<pubDate>Fri, 11 May 2012 09:00:17 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Newsletters]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[development by short iteration]]></category>
		<category><![CDATA[feedback vs testing]]></category>
		<category><![CDATA[improvement vs correction]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[prototypes]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[usability tests]]></category>
		<category><![CDATA[usage tests]]></category>
		<category><![CDATA[validation vs verification]]></category>

		<guid isPermaLink="false">http://www.reqtest.com/?p=1519</guid>
		<description><![CDATA[Essentially, the goal of the lean approach is that every employee’s every activity is linked to customer value. Anything else is waste and should be eliminated. Lean first emerged in product development in the Japanese automotive industry and has been &#8230; <a href="http://www.reqtest.com/newsletters/lean-and-requirements-management-and-testing/">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Essentially, the goal of the lean approach is that <strong>every employee’s every activity is linked to customer value</strong>. Anything else is waste and should be eliminated. Lean first emerged in product development in the Japanese automotive industry and has been adapted in ever widening circles ever since.<br />
&nbsp;<br />
The Agile movement in system development borrowed its basic principles from the Lean philosophy. Some examples of agile principles from Lean include customer focus, timely delivery, and openness to late-stage changes.<br />
&nbsp;<br />
Customer value is at the core of the lean philosophy. All around the world, “Lean IT” is becoming common parlance. But what does it really mean? And what does it mean for us, developers and testers?<br />
&nbsp;<br />
Well, <strong>three basic principles of Lean production apply directly to system development</strong>:</p>
<ol>
<li>Eliminate waste</li>
<li>Deliver fast</li>
<li>Defer commitment</li>
</ol>
<p>&nbsp;<br />
Let&#8217;s see these three principles in a bit more detail:<br />
&nbsp;</p>
<h3> 1: Eliminate waste</h3>
<p>&nbsp;<br />
The <strong>worst form of waste in system development is almost certainly redundant, unnecessary features</strong>. Let me give you a personal example. I was once involved in implementing an order management system for a client in Sweden. The standard software contained a telesales module with a “call list” function that was originally built for a U.S. customer. The Swedish client had never worked with call lists, so we spent a huge amount of project time getting a grasp on how the function worked and determining requirements for our client-specific implementation. After several rounds of revising requirements, implementing, reviewing, and fixing, we finally completed the module.<br />
&nbsp;<br />
Much to our disbelief, however, the client’s processes had no pressing need for call lists, and had no intention to start using them soon anyway, so we never deployed the call list module in production. Our next project? Yanking out everything deemed unnecessary in the system, including the call lists.<br />
&nbsp;<br />
In this case, the call list function was a clear example of &#8220;waste&#8221;. It provided <strong>zero value to the client</strong>, but caused <strong>significant costs in terms of training, requirements definition, testing and correction</strong> &#8212; time that should have been spent on something the client actually wanted instead.<br />
&nbsp;<br />
If you agree that the two main objectives of testing are to 1) verify and find errors and 2) validate that the client benefits from the system, you can draw the following conclusion regarding Lean: <strong>Validation is far more important than verification</strong>.Obviously, you do still have to verify the software and find defects, but if the function you’re testing doesn’t provide direct value to the client, all the time you put into it is just waste. So your top priority in requirements and testing work has to be customer value!<br />
&nbsp;</p>
<h3> 2: Deliver fast</h3>
<p>&nbsp;<br />
The agile revolution has its roots in the Lean principle of &#8220;Deliver fast&#8221;. Thanks to methods like Scrum and XP, short iterations are common in software development today. This is not just about fancy words, it’s also<strong> a fundamental shift in mindset</strong>. Agile system development methods appeal primarily to developers, even if they do focus on clients and customers. You could actually forget clients and only think about developers when you think about Scrum, but Lean describes the same basic principles in a language that inherently includes clients and customers.<br />
&nbsp;<br />
Development iterations according to Lean concepts immediately demonstrate that it is less development-focused and more customer-focused than Agile alone. As an example, in Lean you use the concept of &#8220;feedback&#8221; rather than &#8220;testing&#8221;. <strong>Testing is merely a development activity aimed at getting feedback</strong>. More importantly, you use the term &#8220;improvement&#8221; instead of &#8220;correction&#8221;. If you work sequentially, under the assumption you got everything right from the beginning in the requirements, your testing will just be an error-finding-and–fixing exercise. However, if you work iteratively, <strong>your main goal will be to deliver added value to the customer</strong> via the lessons and insights gained through feedback.<br />
&nbsp;</p>
<h3> 3: Defer Commitment</h3>
<p>&nbsp;<br />
According to the Lean principle of &#8220;Defer commitment,&#8221; you make decisions that affect commitments as late as possible, which is why the approach is also called &#8220;Just In Time Commitment&#8221;. By delaying the &#8220;freezing&#8221; of requirements until you have tested and evaluated different options, you can make better decisions, decisions that are<strong> based on the facts and experience you gather</strong>, rather than on your imagination. Lean Thinking represents a paradigm shift in requirements work:<br />
&nbsp;<br />
You might have been taught that the later you implement a change, the greater the impact and expense. However, without feedback, your requirements work will be based not on facts but on speculation, which (unsurprisingly) often turns out to be wrong in the long run. In other words, early (wrong) decisions based on speculation are much more expensive than the late (good) decisions based on feedback. This is why it’s better to postpone certain decisions, even if it may involve some cost to introduce a change later. What you gain in increased customer value when you make the right, fact-based decision about requirements usually outweighs the cost of making that change later in the process.<br />
&nbsp;<br />
In 1987, Barry Boehm stated that it <a title="http://csse.usc.edu/csse/TECHRPTS/1987/usccse87-503/usccse87-503.pdf" href="http://csse.usc.edu/csse/TECHRPTS/1987/usccse87-503/usccse87-503.pdf" target="_blank">costs 100 times more</a> to make a change in production than to make the same change during the early requirements and design stage. Boehm himself noted in 2001 that his conclusion depended in part on of the fact that we usually work sequentially, based on locking in early-stage decisions. Boehm now believes that <strong>working according to Lean principles reduces the cost of changes in production to as little as five times the cost of the same change in requirements and design</strong>.<br />
&nbsp;<br />
How do I get to this stage? There are a number of approaches.<br />
&nbsp;<br />
<strong>Prototypes</strong> help you quickly produce<strong> tangible and visual solutions</strong> that work well as a basis for dialogue with clients and fellow team members. If you use prototypes along with proper guidance, the ensuing dialogue will provide you with valuable feedback, which in turn will help you discover the best solution. <a title="Why should I test the User Interface?" href="http://www.reqtest.com/blog/why-should-i-test-the-user-interface/"><strong>Usage tests</strong>, also known as &#8220;usability tests&#8221;</a>, are intended to give you<strong> end-users’ validation</strong> as early as possible, and almost always provide early, low-cost feedback the same way prototypes do (and combining usage testing with prototypes will give you even better input).<br />
&nbsp;<br />
<strong>So test early and often!  </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.reqtest.com/newsletters/lean-and-requirements-management-and-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You can’t work Agile without automated testing</title>
		<link>http://www.reqtest.com/blog/you-can%e2%80%99t-work-agile-without-automated-testing/</link>
		<comments>http://www.reqtest.com/blog/you-can%e2%80%99t-work-agile-without-automated-testing/#comments</comments>
		<pubDate>Wed, 09 May 2012 08:12:16 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[agile testing]]></category>
		<category><![CDATA[Automated testing]]></category>
		<category><![CDATA[configuration testing]]></category>
		<category><![CDATA[is automated testing profitable]]></category>
		<category><![CDATA[regression testing]]></category>
		<category><![CDATA[test coverage]]></category>
		<category><![CDATA[what tests to automate]]></category>

		<guid isPermaLink="false">http://www.reqtest.com/?p=1511</guid>
		<description><![CDATA[For many people who work with agile development, simply automating the component tests and/or unit tests is the full extent of automation. Meanwhile, at the levels of integration testing and system testing, automation is conspicuously absent, which results in many &#8230; <a href="http://www.reqtest.com/blog/you-can%e2%80%99t-work-agile-without-automated-testing/">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For many people who work with agile development, simply automating the component tests and/or unit tests is the full extent of automation. Meanwhile, at the levels of integration testing and system testing, automation is conspicuously absent, which results in many tests being performed manually. Of course this makes it <strong>very difficult to have time to do enough <a title="Automated testing in Agile Projects" href="http://www.reqtest.com/blog/automated-testing-in-agile-projects/" target="_blank">regression tests</a></strong><a title="Automated testing in Agile Projects" href="http://www.reqtest.com/blog/automated-testing-in-agile-projects/" target="_blank">.</a><br />
&nbsp;<br />
One reason why so little of the testing is automated is because the system is prone to change more often when the work is agile.<strong> If automated tests are created without careful thought and planning, they will break when the system changes</strong> and maintaining the test cases will be unnecessarily costly.<br />
&nbsp;</p>
<h3></h3>
<h3>How can I create a sustainable architecture for automation which works well in agile development?</h3>
<p>&nbsp;<br />
Most people who work with Agile know that automating system testing is essential, but they also realize that it is very easy to fail in doing so. What makes test automation so hard within the agile context is that the test object is constantly changing since it is gradually refined over sprints. If there is anything a test automation engineer is afraid of, it&#8217;s constant changes and the resulting high level of maintenance.<br />
&nbsp;<br />
Despite these difficulties, the hard truth is that <strong>without automated testing, it is not possible to work Agile in full</strong>, at least not with frequent high quality deployments.<br />
&nbsp;<br />
The reason <strong>it&#8217;s so important to automate tests is that the number of test cases at the system testing level will continue to grow on par with the new functionality added in each sprint</strong>. This increases the total amount of functionality and code to be tested in every sprint, as new code will be added while the old will still need to be regression tested. This is different from component testing, which focuses almost exclusively on the functionality of the current sprint.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1512 colorbox-1511" title="You can’t work Agile without automated testing" src="http://www.reqtest.com/wp-content/uploads/2012/05/Automated-testing-in-Agile-Projects.001.png" alt="You can’t work Agile without automated testing" width="717" height="538" /></p>
<p>Simply put, <strong>automated tests are the only way to achieve a sufficiently high test coverage in each sprint</strong> and thus provide the high quality and rapid feedback that we seek when we are working Agile.<br />
&nbsp;<br />
<strong>An agile project without test automation is essentially just a waterfall project in phases</strong>. It is simply impossible to satisfactorily regression test in every sprint if the tests are performed manually.<br />
&nbsp;<br />
The result is often a postponement of regression tests and deployment to a regression test period made after every three to six sprints. This causes important feedback and bug reports to reach the team very late, even up to six months after the functionality was developed and that is exactly the same way as in a phased waterfall project!<br />
&nbsp;</p>
<h3></h3>
<h3>What should be automated first?</h3>
<p>&nbsp;<br />
When a test automation strategy is developed, it is easy to think that you should automate all regression tests, and that it should be done immediately. Of course this is not economically justifiable; <strong>it is not advisable to automate everything right away because manual testing will continue to play a major role</strong>.<br />
&nbsp;<br />
It is important to determine both what is worthwhile to automate and what should be automated first to get as large gains possible by automation.<br />
&nbsp;<br />
There are many factors which determine what should be automated first. Some of the candidates which typically fall in line first for automation include:<br />
&nbsp;<br />
• Business-critical functionality<br />
• Functions that are used frequently by many users<br />
• Configuration testing where tests will be run with different configurations<br />
• Test cases which will be run several times with different test data or conditions<br />
• Test cases where it is easy to see the expected result.<br />
&nbsp;</p>
<h3></h3>
<h3>Is it profitable to automate?</h3>
<p>&nbsp;<br />
Convincing management to add resources and make an investment in test automation will require making <strong>an informed ROI calculation showing <em>whether</em> and <em>when</em> the investment can be financially profitable</strong>. In order to complete the calculation, we need to know the cost of automation.<br />
&nbsp;<br />
A good default value is that it takes 4-8 times as long to automate a test case compared to the time required for manual testing. Therefore, the automated test case needs to be executed for 4-8 iterations for the investment to break even. Tests that need to be run just a few times or very seldom are not profitable to automate.<br />
&nbsp;<br />
Even tests that are difficult to automate should be omitted. In addition to the cost of writing and maintaining automated test cases there are also several &#8220;hidden&#8221; costs such as licenses, infrastructure, support and training.<br />
&nbsp;</p>
<h3></h3>
<h3>What do I gain from test automation?</h3>
<p>&nbsp;<br />
The benefits of automation are various. The <strong>time saved when executing tests automatically instead of manually is an obvious advantage</strong>. Another advantage is that <strong>test automation can lead to more exhaustive testing</strong> because with automation, nothing stops you from executing the same test several times with more varied test data and perhaps even test different environments.<br />
&nbsp;<br />
However, the main benefit of test automation is that <strong>confidence in the system and its quality is increased when more comprehensive tests are performed</strong>. This trust makes it possible to improve and customize the system to the needs as required in an Agile project.<br />
&nbsp;<br />
Additionally, <strong>resources become available for other tasks</strong>. Instead of retesting existing functionality, testers can put their energy into testing areas of new functionality where a human feeling is really needed. Developers also become more confident with the help of automation. There will be fewer errors left as developers quickly see the consequences of a code change, thus saving the team’s (and your organization&#8217;s) time and money!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reqtest.com/blog/you-can%e2%80%99t-work-agile-without-automated-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security Testing explained</title>
		<link>http://www.reqtest.com/blog/security-testing-explained/</link>
		<comments>http://www.reqtest.com/blog/security-testing-explained/#comments</comments>
		<pubDate>Mon, 07 May 2012 09:58:23 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Risk analysis]]></category>
		<category><![CDATA[Software security]]></category>
		<category><![CDATA[software security testing]]></category>
		<category><![CDATA[software vulnerability]]></category>

		<guid isPermaLink="false">http://www.reqtest.com/?p=1501</guid>
		<description><![CDATA[There are a number of definitions and terminology in the world of security testing. Many make the choice to cut corners and include security constraints as functional requirements and test these in the same way other functional requirements are tested. &#8230; <a href="http://www.reqtest.com/blog/security-testing-explained/">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There are a number of definitions and terminology in the world of security testing. Many make the choice to cut corners and include security constraints as functional requirements and test these in the same way other functional requirements are tested. Others simply shift the entire security responsibility to an external provider. This may prove to be a cost cutter in the short run, but the actual costs of reducing your security consciousness may not be so favourable in the end.<br />
&nbsp;<br />
To implement and maintain a secure software application,<strong> dedicated security testing is essential</strong>.<br />
&nbsp;<br />
<strong>Software security is concerned with making software behave and operate in the presence of a malicious attack</strong>, even though realistically speaking, most software failures usually occur spontaneously and without any intentional wrongdoing.<br />
&nbsp;<br />
Perhaps unsurprisingly, for a time, many were only concerned with what happens when software fails, regardless of the intent. The difference between software safety and software security is therefore the presence of an intelligent adversary with a motivation to break the system.<br />
&nbsp;<br />
Security is deemed to be <strong>relative to the information and services being protected</strong>, the assumed skills and resources of malefactors as well as the costs of any potential assurance remedies. Owing to this, <strong>security can be thought of as an exercise in risk management</strong>. Risk analysis, most especially at the design stage, can help in identifying any potential security problems as well as their impact. Once these have been identiﬁed and ranked, these risks can help guide software security testing.<br />
&nbsp;<br />
When we speak of a vulnerability, what is meant is that an error which can be exploited by an attacker is present. Although many types of vulnerabilities exist they are typically placed into one of two categories — <strong>bugs at the implementation level</strong> and <strong>ﬂaws at the design level</strong>.<br />
&nbsp;<br />
Some of the more common design-level problems include error handling in object-oriented systems, object sharing and trust issues, unprotected data channels of both internal and external nature, incorrect or missing access control mechanisms, a lack of auditing/ and logging or incorrect logging, and ordering and timing errors. These kinds of ﬂaws almost always lead to a security risk.<br />
&nbsp;<br />
<img class="aligncenter size-large wp-image-1502 colorbox-1501" title="Security Testing explained" src="http://www.reqtest.com/wp-content/uploads/2012/05/Security-Testing-explained-929x1024.jpg" alt="Adopt a comprehensive, risk-based approach to software security testing to solve security problems while software is in production and avoid costly mishaps." width="384" height="423" /><br />
&nbsp;<br />
Before planning for Security Testing, you will need to think about the following parameters:</p>
<p><strong>Authentication</strong> &#8211; Understand how the authentication process works and attempt to use that information to circumvent the authentication mechanism.</p>
<p><strong>Authorization</strong> &#8211; Determine that a requester is allowed to receive a service or perform an operation.</p>
<p><strong>Confidentiality</strong> &#8211; Protects the disclosure of data or information to parties other than the intended.</p>
<p><strong>Integrity</strong> – Whether the intended receiver receives the information or data without it being in any way altered in transmission.</p>
<p><strong>Non-repudiation</strong> &#8211; Interchange of authentication information with some form of provable time stamp e.g. with a session id.<br />
&nbsp;<br />
It is only by <strong>identifying risks in the system</strong> and <strong>creating tests driven by those risks</strong> that your <strong>software security testing can be properly focused</strong> on areas of code in which an attack is more likely to succeed. Essentially, this approach provides a higher level of software security assurance than possible with classical black-box testing.<br />
&nbsp;<br />
Of course there is no such thing as a silver bullet for software security and even a reasonably ironclad security testing regimen is just a start.<br />
&nbsp;<br />
Regrettably, security continues to be sold as a product but<strong> many of the defensive mechanisms on the market do very little to address the core of the issue</strong>, which is bad software. Instead, these &#8216;solutions&#8217; operate in a reactive mode: by not allowing allow packets to this or that port, watching for ﬁles which include this pattern in them, and discarding partial packets and oversized packets away without looking at them. Network trafﬁc is not always the best way to approach this issue, because the software that processes the packets is the problem.<br />
&nbsp;<br />
By adopting a <strong>comprehensive and risk-based approach to software security testing</strong>, testing professionals can help in <strong>solving security problems while software is still in production avoiding costly and embarrassing mishaps</strong> later on in the software’s lifecycle.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reqtest.com/blog/security-testing-explained/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working as a test leader in distributed test teams</title>
		<link>http://www.reqtest.com/blog/working-as-a-test-leader-in-distributed-test-teams/</link>
		<comments>http://www.reqtest.com/blog/working-as-a-test-leader-in-distributed-test-teams/#comments</comments>
		<pubDate>Thu, 03 May 2012 09:00:25 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[agreement on team resources]]></category>
		<category><![CDATA[communication issues with distributed teams]]></category>
		<category><![CDATA[difficulty creating team spirit]]></category>
		<category><![CDATA[distributed testing]]></category>
		<category><![CDATA[problems of distributed projects]]></category>
		<category><![CDATA[role duplication problems]]></category>
		<category><![CDATA[work duplication problems]]></category>

		<guid isPermaLink="false">http://www.reqtest.com/?p=1476</guid>
		<description><![CDATA[The better and faster our communication technology gets, the more common it becomes to have geographically distant and disparate teams, each working on different aspects of a project. This arrangement is no novelty to software testing either, however be aware &#8230; <a href="http://www.reqtest.com/blog/working-as-a-test-leader-in-distributed-test-teams/">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The better and faster our communication technology gets, the more common it becomes to have geographically distant and disparate teams, each working on different aspects of a project. This arrangement is no novelty to software testing either, however <strong>be aware of the challenges of working as a test manager with geographically distributed teams</strong>. In this article you will learn about some of these common challenges and what you can do about them.</p>
<h3>Testing is often performed distributed</h3>
<p>Today, testing can take place anywhere, from different parts of the country or just across the street. The customer may exist in one place and the supplier elsewhere, perhaps even in another country. Even acceptance tests might be performed by testers who are in different locations. Convenient as it is, <strong>this reality is not without its problems</strong>.</p>
<p>Some of the problems of distributed projects may include:</p>
<ul>
<li>Communication</li>
<li>Roles</li>
<li>Risk of duplication</li>
<li>Difficulty in creating team spirit</li>
<li>Agreeing on team resources</li>
<li>Communications</li>
</ul>
<p>When testing is spread out in location, communication becomes difficult. <strong>It is important that communication is clear, honest, consistent</strong> and that everyone gets the same picture.</p>
<p>Using different tools does make the communication better. Tools can include Skype or MSN for general communication or a tool like <a title="http://www.reqtest.com/try-now/" href="http://www.reqtest.com/try-now/">ReQtest</a> which facilitates online collaboration specifically for the areas of <a title="Requirements Management in Agile Projects" href="http://www.reqtest.com/blog/requirements-management-in-agile-projects/">requirements management</a> and <a title="How to make your software testing more efficient" href="http://www.reqtest.com/blog/how-to-make-your-software-testing-more-efficient/">testing</a>.</p>
<h3>Roles</h3>
<p>In distributed teams, more people want to make decisions. It is very important to <strong>define what roles should exist in which locations</strong>. This increases the clarity and scope of the team overall, as it gives team members a sense of structure, regardless where they are located.</p>
<p>Typical roles that will need to be defined are the test manager, testers, test environment manager and test data manager, although of course these differ according to the size and scope of the project.</p>
<h3>Duplication of roles</h3>
<p>If the same task is to be performed in more than one location, there is a risk of duplication, which could delay the project.</p>
<p>Give one person in each location the role of test manager and ensure that they understand the risk of duplication and are prepared and able to avoid this pitfall. <strong>Provide clear responsibilities and think about the importance of good communication</strong>.</p>
<p style="text-align: center;"><em><img class="aligncenter size-full wp-image-1491 colorbox-1476" title="Working as a test leader in distributed test teams.003" src="http://www.reqtest.com/wp-content/uploads/2012/04/Working-as-a-test-leader-in-distributed-test-teams.003.png" alt="Working as a test leader in distributed test teams" width="717" height="538" /><br />
</em></p>
<p>&nbsp;</p>
<h3>Team spirit</h3>
<p>To create a stronger team spirit, it is important to <strong>get to know your team members</strong>, whether they&#8217;re in the same place or located elsewhere. Camaraderie doesn’t just happen, it needs to be fostered and grown with trust and by time.</p>
<p>It is important to get the team to work in the same direction. <strong>Trust is based on the participants having a common understanding of each other</strong> as well as the big picture of the project.</p>
<h3>Write a contract about team resources</h3>
<p><strong>If testers are borrowed from other activities, there will be a risk that they have conflicting priorities</strong>, maybe even inherited from their leaders or their usual activities.</p>
<p>An example of this is acceptance testers who in actual fact really belong to the line operations team. If they still need to perform their regular duties while they do tests, the tests are likely to suffer.</p>
<p>One practical idea is to sign a formal contract with the managers who lend resources to your team. In the contract you should describe the extent to which the person is needed for the tests. This will<strong> help set both the managers’ and the team members’ mind at rest</strong>, knowing that both you and their own manager have signed off approval on the ‘extra’ work they will be doing.</p>
<h4>Summary</h4>
<p>Having a geographically distributed team involves a number of challenges to be addressed for the work to function as effectively as possible. Some of the problems include communication, clarity of roles, duplication of roles, camaraderie and disagreements when it comes to team resources.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reqtest.com/blog/working-as-a-test-leader-in-distributed-test-teams/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automated testing in Agile Projects</title>
		<link>http://www.reqtest.com/blog/automated-testing-in-agile-projects/</link>
		<comments>http://www.reqtest.com/blog/automated-testing-in-agile-projects/#comments</comments>
		<pubDate>Tue, 01 May 2012 12:00:56 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Automated testing]]></category>
		<category><![CDATA[automated testing sprint]]></category>
		<category><![CDATA[improvement deterioration]]></category>
		<category><![CDATA[increase in regression testing]]></category>
		<category><![CDATA[increasing amount of regression tests]]></category>
		<category><![CDATA[regression testing]]></category>
		<category><![CDATA[testing in sprints]]></category>

		<guid isPermaLink="false">http://www.reqtest.com/?p=1465</guid>
		<description><![CDATA[We have previously discussed where the differences in the tester’s role lie between projects operating in a traditional model and those working in an agile manner. So far we’ve mentioned the general differences between the two as well as the &#8230; <a href="http://www.reqtest.com/blog/automated-testing-in-agile-projects/">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We have previously discussed where the differences in the tester’s role lie between projects operating in a traditional model and those working in an agile manner. So far we’ve mentioned the general differences between the two as well as the differences in test documentation and <a title="Requirements Management in Agile Projects" href="http://www.reqtest.com/blog/requirements-management-in-agile-projects/">requirements management</a>.</p>
<p>To a certain extent,<strong> the same differences exist when it comes to the subject of automated testing</strong>. In the agile way of doing this, the goal is that <strong>what the team agrees to do in a sprint is delivered with high quality when the sprint is completed</strong>. This means that the sprint contains activities for requirements design, development and testing. Everything should be completed before the team starts the next sprint.</p>
<p>Sprints are usually about a month long, but can also be shorter. The next sprint builds on what has been done before and therefore<strong> the amount of regression testing quickly becomes very extensive</strong>.</p>
<div id="attachment_1470" class="wp-caption aligncenter" style="width: 584px"><img class="size-full wp-image-1470   colorbox-1465" title="Automated testing in Agile Projects" src="http://www.reqtest.com/wp-content/uploads/2012/04/Automated-testing-in-Agile-Projects.001.001.png" alt="Automated testing in Agile Projects" width="574" height="430" /><p class="wp-caption-text">The intent of regression testing is to ensure that a change, such as a bugfix, did not introduce new faults.</p></div>
<p>The word regression means that the system can regress, meaning that it could be worse than it was before the change. Sometimes we therefore refer to this phenomenon as &#8220;improvement deterioration&#8221; or “worsification” or even “unprovement”, since<strong> while trying to improve the system we <span style="text-decoration: underline;">unintentionally</span> made it worse than before</strong>.</p>
<p>To be able to regression test all existing functionality, tests are often automated by the developers. Writing automated test cases is not technically complicated. What is complicated is the master test design, which testers have profound knowledge about. You therefore have an important role to play when transferring testing knowledge to developers. <strong>As a tester, you also need to understand more of the technology used to be able to help with automation</strong>.</p>
<p>In return, when you work as a tester in an agile project you often get help by the developers. The developers write the automated tests, generating testing data, setting up test environments and anything else that makes the team deliver on time. Suddenly you as a tester are an important and natural part of the team because <strong>you have knowledge and experience to perform these tasks</strong>. When the developers and you share the same definition of &#8216;done&#8217; no one will think that everything is done just because the coding is finished. Furthermore, you will probably even get a better understanding of the problems that developers face daily.</p>
<p>If you have test automation in place, you as a tester will be able to focus on the manual tests that are needed for the newly developed functionality through exploratory testing, all while <strong>learning more about different areas you wouldn’t know of in the traditional approach</strong>, and being part of a cohesive and efficient team.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reqtest.com/blog/automated-testing-in-agile-projects/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Building Decision Tables</title>
		<link>http://www.reqtest.com/blog/building-decision-tables/</link>
		<comments>http://www.reqtest.com/blog/building-decision-tables/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 10:49:44 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[decision tables]]></category>
		<category><![CDATA[decision tables for requirements]]></category>
		<category><![CDATA[extended entry table]]></category>
		<category><![CDATA[limited entry table]]></category>
		<category><![CDATA[requirements documentation]]></category>

		<guid isPermaLink="false">http://www.reqtest.com/?p=1437</guid>
		<description><![CDATA[Decision Tables are an excellent tool in for both testing and requirements. It is a structured way to formulate requirements and test cases when dealing with complex business rules. Using a decision table will make it easier to write requirements &#8230; <a href="http://www.reqtest.com/blog/building-decision-tables/">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Decision Tables are an excellent tool in for both testing and requirements. It is a structured way to formulate requirements and test cases when dealing with complex business rules. Using a decision table will make it easier to <strong>write requirements that cover all alternative conditions in business rules</strong>. When writing test cases the table will help you to<strong> test all combinations</strong>.</p>
<h4>Method</h4>
<p>A Decision Table is usually divided into four quadrants as in the table below.</p>
<p>&nbsp;</p>
<p><img class="aligncenter size-full wp-image-1462 colorbox-1437" title="Building Decision Tables - 1" src="http://www.reqtest.com/wp-content/uploads/2012/04/png.png" alt="" width="490" height="86" /></p>
<p>&nbsp;</p>
<p>The upper half of the table lists the conditions being tested while the lower half lists the possible actions to be taken.</p>
<p>Each column represents a certain type of condition or rule.</p>
<p>&nbsp;</p>
<h4>A few guidelines for constructing a decision table:</h4>
<p>To construct a Decision Table follow these steps:</p>
<p><strong>1) Draw boxes for the top and bottom left quadrants.</strong></p>
<p><strong>2) List the conditions in the top left quadrant.</strong></p>
<p>When possible, phrase the conditions as questions that can be answered with a Y for yes and an N for a no.</p>
<p>This type of Decision Table is known as a <strong>limited entry table</strong>. When a Decision Table requires more than two values for a condition, it is known as an <strong>extended entry table</strong>.</p>
<p><strong>3) List the possible actions in the bottom left quadrant.</strong></p>
<p><strong>4) Count the possible values for each condition</strong> and multiply these together to determine how many unique combinations of conditions are present.</p>
<p>Draw one column in the top and bottom right quadrants for each combination. For example, if there are two conditions and the first condition has two possible values while the second has three possible values, draw six (2 * 3) columns.</p>
<p><strong>5) Enter all possible combinations of values</strong> in the columns in the top right quadrant of the table.</p>
<p><strong>6) For each column, that is, each unique combination of conditions</strong>, mark an X in the bottom right quadrant in the appropriate action row. The X marks the intersection between the required action and each unique combination of condition values.</p>
<p>&nbsp;</p>
<h4>How to ensure that the Table is Complete</h4>
<p>To complete Step 5 above, ensuring that no combinations are missed, follow these steps:</p>
<p>1) Start with the last condition and alternate its possible values across the row. Note how often the pattern repeats itself. For a condition with two possible values, the pattern will repeat itself every two columns. If three values are possible, the pattern repeats itself every three columns.</p>
<p>For example, for a table with three conditions each with values Y or N, there are eight (2 * 2 * 2) columns. Complete the third (last) row by entering Y once across the row followed by one N. The pattern repeats itself every two columns. The third row would look like: Y N Y N Y N Y N</p>
<p>2) Move to the condition in the row above the last condition. Cover each pattern group with a value for this condition. Note how often the new pattern repeats itself.</p>
<p>For example, complete the second row by entering Y across the row two times followed by two entries of N. This pattern repeats itself every four columns. The second row would look like: Y Y N N Y Y N N</p>
<p>3) Repeat step 2 until all rows are complete. To complete the first row, enter Y across the row four times followed by four entries of N. The first row would look like: Y Y Y Y N N N N</p>
<h4></h4>
<h4>How to Flag Error Conditions</h4>
<p>If a specific combination of conditions is invalid, then define one action to flag the error or invalid condition.</p>
<h4></h4>
<p>&nbsp;</p>
<h4>How to Simplify the Decision Table</h4>
<p>If two or more combinations result in the same action, then the table can be simplified. Consider the following example:</p>
<p>Condition 1 Y Y<br />
Condition 2 Y Y<br />
Condition 3 Y N<br />
Action 1 X X</p>
<p>The same action occurs whether condition 3 is true or false. As a result, one column can be eliminated from the table as follows:</p>
<p>Condition 1 Y<br />
Condition 2 Y<br />
Condition 3 −<br />
Action 1 X</p>
<h4>A Practical Example of a Decision Table</h4>
<p>Company X sells merchandise to wholesale and retail outlets. Wholesale customers receive a two percent discount on all orders. The company also encourages both wholesale and retail customers to pay cash on delivery by offering a two percent discount for this method of payment. Another two percent discount is given on orders of 50 or more units. Each column represents a certain type of order.</p>
<p><img class="aligncenter size-full wp-image-1463 colorbox-1437" title="Building Decision tables - 2" src="http://www.reqtest.com/wp-content/uploads/2012/04/png-1.png" alt="" width="510" height="155" /></p>
<p>&nbsp;</p>
<p>The Decision Table records the conditions for discounts in the top left quadrant along with the ranges for the conditions in the top right quadrant. The bottom half of the table lists the actions taken, i.e., the discount rates that apply, based on the conditions. Each column represents a certain type of order. For example, column two represents cash on delivery orders of less than 50 units from retailers.</p>
<p>References:</p>
<p>Curtis, Graham <a href="http://www.amazon.co.uk/gp/product/0273713825/ref=as_li_ss_tl?ie=UTF8&amp;tag=markbiwwa-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0273713825">Business Information Systems: Analysis, Design and Practice</a><img class="colorbox-1437"  style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=markbiwwa-21&amp;l=as2&amp;o=2&amp;a=0273713825" alt="" width="1" height="1" border="0" />. Wokingham: Addison-Wesley.</p>
<p>Martin, James, and McClure, Carma <a href="http://www.amazon.co.uk/gp/product/0132087944/ref=as_li_ss_tl?ie=UTF8&amp;tag=markbiwwa-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0132087944">Diagramming Techniques for Analysts and Programmers</a><img class="colorbox-1437"  style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=markbiwwa-21&amp;l=as2&amp;o=2&amp;a=0132087944" alt="" width="1" height="1" border="0" />. Englewood Cliffs: Prentice Hall.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reqtest.com/blog/building-decision-tables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Requirements Management in Agile Projects</title>
		<link>http://www.reqtest.com/blog/requirements-management-in-agile-projects/</link>
		<comments>http://www.reqtest.com/blog/requirements-management-in-agile-projects/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 10:30:19 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[agile documentation]]></category>
		<category><![CDATA[agile projects]]></category>
		<category><![CDATA[just in time commitment]]></category>
		<category><![CDATA[product roadmap agile]]></category>
		<category><![CDATA[requirements]]></category>
		<category><![CDATA[requirements review]]></category>
		<category><![CDATA[tester's role in agile projects]]></category>
		<category><![CDATA[user stories for requirements]]></category>

		<guid isPermaLink="false">http://www.reqtest.com/?p=1429</guid>
		<description><![CDATA[The effects on the tester’s role which result from taking an agile approach are well established. We have previously talked of the general differences between the two as well as the differences in test documentation. Just because you’re used to &#8230; <a href="http://www.reqtest.com/blog/requirements-management-in-agile-projects/">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The effects on the tester’s role which result from taking an agile approach are well established. We have previously talked of the general differences between the two as well as the differences in test documentation.</p>
<p>Just because you’re used to working in a more traditional approach and Agile projects operate differently does not mean you’re irrelevant. This is especially so when we consider requirements management in Agile projects.<br />
&nbsp;<br />
&nbsp;<br />
When working traditionally it is common that <strong>many of the requirements are written at the beginning of the project</strong>. All too often, this approach works badly because you can not think of everything at once. <strong>As the product evolves, you learn more about what is needed</strong> and new requirements arise, while other requirements will disappear.</p>
<p>In agile work, requirements are developed throughout the project. Often a product roadmap that describes what is to be done during the year at a very general level is used.</p>
<p>A few weeks before a new sprint is started, the product owner selects the requirements to be implemented in the sprint and these requirements get documented in enough detail so that it becomes possible to implement them.</p>
<p>This approach is called ‘just in time commitment’ and essentially means that <strong>documentation should not be developed until it is really needed</strong>. The requirements are growing, hence the course of development.<br />
&nbsp;<br />
&nbsp;<br />
It is important that<strong> testers are involved in gathering and documenting of requirements</strong>. Testers often add a lot of value in these discussions and the result is that the requirements will be of better quality. Requirements elicitation can be made using discussions and workshops with customers.</p>
<p>Testers should also <strong>be involved in reviewing the requirements</strong> as part of test planning. Doing so provides an excellent opportunity to ensure that requirements are testable early on.</p>
<p>Since testers are involved in much more than just testing, they will easily be able to <strong>participate in design discussions</strong> and through their input the product will contain less errors. Additionally, the testers themselves get a much greater understanding of customer needs which will be useful in future projects.<br />
&nbsp;<br />
&nbsp;<br />
A popular way to document requirements is through user stories. User stories are short, so there will be much less documentation than usual. When there is little documentation, it is harder to determine by testing what is right or wrong behavior. The <strong>documentation must be replaced by more communication within the team and with the customer</strong>. This will become possible because the whole team is not segregated and is working together, bringing about more opportunity to learn and use your own specialized knowledge for the greater good of the team and the work you’re doing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reqtest.com/blog/requirements-management-in-agile-projects/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

