<?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>Pankaj Nakhat&#039;s blog :  All About Agile Testing</title>
	<atom:link href="http://www.pankajnakhat.com/blog1/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pankajnakhat.com/blog1</link>
	<description>All about Testing</description>
	<lastBuildDate>Wed, 30 Jan 2013 15:27:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Lesson learnt in Agile Testing &#8211; Series &#8211; Post 1</title>
		<link>http://www.pankajnakhat.com/blog1/agile-test-planning/01/lesson-learnt-in-agile-testing-series-post-1/</link>
		<comments>http://www.pankajnakhat.com/blog1/agile-test-planning/01/lesson-learnt-in-agile-testing-series-post-1/#comments</comments>
		<pubDate>Wed, 30 Jan 2013 15:26:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Agile Test Planning]]></category>

		<guid isPermaLink="false">http://www.pankajnakhat.com/blog1/?p=273</guid>
		<description><![CDATA[&#160; I have been working on Agile projects for years know and I have seen it evolving over the years. I have made mistakes in the past and always learnt the Hard way. I thought it will be worth sharing my experience and learning in Agile testing. Mistake 1: Not getting involved early enough in [...]]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<p>I have been working on Agile projects for years know and I have seen it evolving over the years. I have made mistakes in the past and always learnt the Hard way. I thought it will be worth sharing my experience and learning in Agile testing.</p>
<p><span style="text-decoration: underline;"><strong>Mistake 1: Not getting involved early enough in the Sprint</strong></span>. So often I have seen teams falling in this trap. And consequences are expensive &#8211; QAs not getting involved early fail to provide important feedback on the requirement.  Its that missing perspective which can add lot of value early on. Viz looking at the testability of the requirements, and collaborating with different stakeholders to gain valuable context in to the story. I can go on here and talk about so many obvious and non  obvious cost of not doing this right.</p>
<p>However, there is one aspect worth talking about &#8211; <em><span style="text-decoration: underline;"><strong>Why do teams fall in this trap , where QAs are not getting involved early enough?</strong></span></em> I am highlighting someone of them from my experience</p>
<ul>
<ul>
<li><strong>Catching up on testing from previous iteration</strong> &#8211; Its a common symptom where teams leave QAs to deal with the stories delivered at the fag end of the iteration.  And I personally think that leaving testing problems to just QAs in the team is a sign of broken process. Team should look to rectify this and come together to try to get all stories to done (Properly <img src='http://www.pankajnakhat.com/blog1/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) before the end of the sprint. That may require people from cross discipline need to roll their sleeves up.  Doing this will enables team to have a greater disciplines and control over their iterations and most importantly avoid that &#8216;catch-up&#8217; mode problem.</li>
<li><strong>Testing as seen outside the scope of sprint</strong> &#8211; And again I have seen it often in projects, where progress is shown/claimed based on development complete stories. However in true sense it does not matter if story is dev complete, Half QA done or not started at all. In Scrum/Agile model stories are considered Done only when all required phase of work is done or in other terms definition of done is met (DOD I will referring it as DOD in rest of my post). Coming out of this mindset helps team to focus on real value of work rather then claiming false sense of progress.</li>
<li><span style="text-decoration: underline;"><strong>Loose definition of Done</strong></span> &#8211; I spoke about definition of done in previous point. Now how important is it to have definition of done and what consequences can it bring if not well defined? I am not going to talk about what DOD is and how is it defined.  DOD is a yard stick against which a requirement is said to be measured and upon successful meeting the criteria, it is said to be DONE in the process.  DOD usually have attributes like &#8211; Acceptance Tests Passed, Exploratory Testing done, No Red builds, NFR met etc etc.  So in first place not having a DOD does not help team in measuring themselves against some standard quality tools.  So, it does help teams to be consistent with their approach in terms of delivering different piece if functionality. Result is obvious &#8211; Inconsistency in Quality and Communication breakdown which then leads to poor  product.</li>
</ul>
<ul>
<li>Other scenario being not following DOD religiously for various reasons like delivery pressure, assumption of quality or may be anything else. which results in similar consequences as mentioned above.</li>
</ul>
</ul>
<p>I will continue with other reasons on my subsequent post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pankajnakhat.com/blog1/agile-test-planning/01/lesson-learnt-in-agile-testing-series-post-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 things I always look to do as an Agile Tester</title>
		<link>http://www.pankajnakhat.com/blog1/agile-testing/07/10-things-i-always-look-to-do-as-an-agile-tester/</link>
		<comments>http://www.pankajnakhat.com/blog1/agile-testing/07/10-things-i-always-look-to-do-as-an-agile-tester/#comments</comments>
		<pubDate>Tue, 10 Jul 2012 18:34:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Agile Testing]]></category>
		<category><![CDATA[Agile QA]]></category>

		<guid isPermaLink="false">http://www.pankajnakhat.com/blog1/?p=346</guid>
		<description><![CDATA[1)      As a QA I am involved early on user stories with product owners and business analysts. 2)      I give my feedback on user stories while they are being analysed. 3)      I work with business owners to define Acceptance tests for user stories before story is developed. 4)      I get involved in the story kick [...]]]></description>
				<content:encoded><![CDATA[<p>1)      As a QA I am <strong><span style="text-decoration: underline;">involved early</span></strong> on user stories with product owners and business analysts.</p>
<p>2)      I give my feedback on user stories <strong><span style="text-decoration: underline;">while they are being analysed</span></strong>.</p>
<p>3)      I work with business owners to <strong><span style="text-decoration: underline;">define Acceptance tests</span></strong> for user stories before story is developed.</p>
<p>4)      I get <strong><span style="text-decoration: underline;">involved in the story kick off with developer and business analysts</span></strong> to give QA input.</p>
<p>5)      I <strong><span style="text-decoration: underline;">work with developers</span></strong> while he is developing story to give early feedback and automating acceptance tests.</p>
<p>6)      As a QA I <strong><span style="text-decoration: underline;">encourage automation testing at all levels</span></strong> – Unit, Integration and UI. And I give feedback on all kinds of testing.</p>
<p>7)      I look at the software to give feedback<strong><span style="text-decoration: underline;">, even before developer check in the code</span></strong> in source control.</p>
<p>8)      I make sure I understand the implication of the newly added feature and I look to <strong><span style="text-decoration: underline;">improve automation tests</span></strong> by adding and refactoring existing tests.</p>
<p>9)      I use my QA skills to do <strong><span style="text-decoration: underline;">effective exploratory testing</span></strong> to test the software beyond what an automated test would do.</p>
<p>10)   I constantly look to <strong><span style="text-decoration: underline;">engage with different stakeholders</span></strong> on the project to improve my knowledge on the application which then I use to find gaps in the requirement.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pankajnakhat.com/blog1/agile-testing/07/10-things-i-always-look-to-do-as-an-agile-tester/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sample Jbehave +Selenium project with some page object based example</title>
		<link>http://www.pankajnakhat.com/blog1/selenium-testing/06/sample-jbehave-selenium-project-with-some-page-object-based-example/</link>
		<comments>http://www.pankajnakhat.com/blog1/selenium-testing/06/sample-jbehave-selenium-project-with-some-page-object-based-example/#comments</comments>
		<pubDate>Tue, 12 Jun 2012 06:57:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Jbehave]]></category>
		<category><![CDATA[Selenium Testing]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Testing tool]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[page objects]]></category>
		<category><![CDATA[selenium]]></category>

		<guid isPermaLink="false">http://www.pankajnakhat.com/blog1/?p=340</guid>
		<description><![CDATA[https://github.com/pnakhat/jbehave-selenium/tree/master/jbehave-selenium &#160; I have created this project  to give some starting point for people who want to use Jbehave , Selenium with Page objects. Please clone this github repository.]]></description>
				<content:encoded><![CDATA[<p><a href="https://github.com/pnakhat/jbehave-selenium/tree/master/jbehave-selenium">https://github.com/pnakhat/jbehave-selenium/tree/master/jbehave-selenium</a></p>
<p>&nbsp;</p>
<p>I have created this project  to give some starting point for people who want to use Jbehave , Selenium with Page objects. Please clone this github repository.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pankajnakhat.com/blog1/selenium-testing/06/sample-jbehave-selenium-project-with-some-page-object-based-example/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Automation Testing challenges in BDD based Acceptance Testing</title>
		<link>http://www.pankajnakhat.com/blog1/agile-testing/06/automation-testing-challenges-in-bdd-based-acceptance-testing/</link>
		<comments>http://www.pankajnakhat.com/blog1/agile-testing/06/automation-testing-challenges-in-bdd-based-acceptance-testing/#comments</comments>
		<pubDate>Sun, 10 Jun 2012 10:52:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Agile Testing]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Automation in agile projects]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[Jbehave]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Testing tool]]></category>

		<guid isPermaLink="false">http://www.pankajnakhat.com/blog1/?p=318</guid>
		<description><![CDATA[I have been practicing Acceptance Test Driven development for years and since last few years I have been using BDD . BDD is a collaborative process to engage with business at the same time offering other benefits in Automation testing. There is no doubt BDD has changed the way we collaborate in an Agile team but also enhanced communication [...]]]></description>
				<content:encoded><![CDATA[<p>I have been practicing Acceptance Test Driven development for years and since last few years I have been using BDD . BDD is a collaborative process to engage with business at the same time offering other benefits in Automation testing. There is no doubt BDD has changed the way we collaborate in an Agile team but also enhanced communication among stakeholders.</p>
<p>Some of the challenges I have seen while working on various projects, which I learnt from on my journey to do Behaviour Driven Development.</p>
<p><span style="text-decoration: underline;"><strong>Process challenges</strong></span></p>
<ol>
<ol>
<li><strong>How to get business engage with this Idea of doing Testing  ?</strong>- I am sure this is easier said then done. How do I get my business stakeholder to engage in this process ? This scenario is like a sales scenario where you want to sell a great new product, but the problem is features are not immediately obvious.  Yes its about selling,  before its benefits becomes obvious.   Good thing about is BDD is natural language of expression, so getting involved is easier. BDD Scenarios makes so much sense in terms of a requirement. You can drive a product by an example in your own language, which is great. Its a great comfort when the Gap between requirement to development is negligible. Technical and Non technical people are speaking same language and you can validate your product in the very same language .</li>
<li><strong>How to be consistent with the language  used in BDD ?  </strong>The whole idea of this process is about using a language which all stakeholders can understand and make sense from ? But one of the smells of BDD is using multiple style to define your behaviors. And result is simple, people are not consistent with their language of communication, so further consequence is mis communication and chaos.  Reason is simple &#8220;a&#8221; thing in my behaviors can mean few different thing. Other aspect of the same problem is different level of abstracted language people use, should I define my behaviors at 10000 ft or should it be more granular ? Well this depend  on the context, I don&#8217;t mind any approach where the language speaks the language of the problem we are trying to solve and its consistent.</li>
<li><strong>Who should write the BDD ?</strong> I think it doesn&#8217;t matter who writes the BDD Scenarios. As long as different stakeholder participate in the process, and it is used as paradigm of communication it does not matter who writes it eventually. I have heard people getting in to discussion whether QA/BA/SME should write the acceptance tests. I think idea of doing BDD is to share the responsibility and getting everyone engaged in this process.</li>
<li><strong>How to maintain my Acceptance tests going forward ?  </strong>I think the most important challenge in doing Acceptance Testing using BDD is, how does change in feature/code/data be managed. How the change should be managed in the acceptance tests? How not to fall in big trap of technical debt when big re factoring comes along and acceptance tests are well forgotten ? And I think most teams falls apart on these challenges more often then not. I have seen developers changing the acceptance tests without liaising with BAs and QAs when pressure of delivering eventually mounts. Similarly I have seen QA/BAs not managing to change the acceptance tests to reflect the change in feature. So basically challenge is to follow the same process when things are tight. Every change in feature should be managed as if its a new feature and should have a respective acceptance tests, agreed together with different SMEs.  Individual people on team should refrain making changes to acceptance tests, event though it may look trivial.Sometime it is difficult to trace acceptance tests against requirements, as in there is no obvious tooling in place to support trace the requirements against the tests. And if you are working on a large project it can be a nightmare to do so.  In this case having some means of tracing mechanism in place definitely helps. It can be as simple as a spreadsheet or usage of <a href="http://jbehave.org/reference/stable/story-mapping.html">story maps</a> if you are using tools like jbehave.</li>
</ol>
</ol>
<div></div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pankajnakhat.com/blog1/agile-testing/06/automation-testing-challenges-in-bdd-based-acceptance-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is BDD ?</title>
		<link>http://www.pankajnakhat.com/blog1/bdd/03/what-is-bdd/</link>
		<comments>http://www.pankajnakhat.com/blog1/bdd/03/what-is-bdd/#comments</comments>
		<pubDate>Sun, 11 Mar 2012 09:10:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[BDD]]></category>
		<category><![CDATA[Jbehave]]></category>

		<guid isPermaLink="false">http://www.pankajnakhat.com/blog1/?p=313</guid>
		<description><![CDATA[What is BDD View more PowerPoint from pnakhat]]></description>
				<content:encoded><![CDATA[<div style="width:425px" id="__ss_11957714"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/pnakhat/what-is-bdd" title="What is BDD" target="_blank">What is BDD</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/11957714" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/thecroaker/death-by-powerpoint" target="_blank">PowerPoint</a> from <a href="http://www.slideshare.net/pnakhat" target="_blank">pnakhat</a> </div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.pankajnakhat.com/blog1/bdd/03/what-is-bdd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jbehave Story Navigator &#8211; Dictionary of all the steps</title>
		<link>http://www.pankajnakhat.com/blog1/bdd/03/jbehave-story-navigator-dictionary-of-all-the-steps/</link>
		<comments>http://www.pankajnakhat.com/blog1/bdd/03/jbehave-story-navigator-dictionary-of-all-the-steps/#comments</comments>
		<pubDate>Sun, 04 Mar 2012 23:00:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[BDD]]></category>
		<category><![CDATA[Jbehave]]></category>

		<guid isPermaLink="false">http://www.pankajnakhat.com/blog1/?p=286</guid>
		<description><![CDATA[I have been wondering for a while, if there was a way to get all my BDD steps in one place to so that I can do a search on the existing steps. As the Library of steps grows gradually often finding existing steps becomes a lazy and tedious activity. And then we end up [...]]]></description>
				<content:encoded><![CDATA[<p>I have been wondering for a while, if there was a way to get all my BDD steps in one place to so that I can do a search on the existing steps. As the Library of steps grows gradually often finding existing steps becomes a lazy and tedious activity. And then we end up with multiple steps doing same things.</p>
<p>Jbehave reports can be ebabled to show something which is called Storynavigator. Its a client side javascript library which enabled browser to read meta data generated by <a href="http://jbehave.org/reference/stable/cross-reference.html" target="_blank">cross referencing</a> in Jbehave. Cross referencing can be enabled very easily from the configuration and it then generated the meta data which can be used by this story navigator.</p>
<p>How to enable cross referencing in Jbehave configuration?</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"> @Override
    <span style="color: #000000; font-weight: bold;">public</span> Configuration configuration<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    	CrossReference xref <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> CrossReference<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">Class</span> embeddableClass <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">getClass</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// Start from default ParameterConverters instance</span>
        ParameterConverters parameterConverters <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ParameterConverters<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// factory to allow parameter conversion and loading from external resources (used by StoryParser too)</span>
        ExamplesTableFactory examplesTableFactory <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ExamplesTableFactory<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> LocalizedKeywords<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, <span style="color: #000000; font-weight: bold;">new</span> LoadFromClasspath<span style="color: #009900;">&#40;</span>embeddableClass<span style="color: #009900;">&#41;</span>, parameterConverters<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// add custom coverters</span>
        parameterConverters.<span style="color: #006633;">addConverters</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> DateConverter<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">SimpleDateFormat</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;yyyy-MM-dd&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>,
                <span style="color: #000000; font-weight: bold;">new</span> ExamplesTableConverter<span style="color: #009900;">&#40;</span>examplesTableFactory<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        parameterConverters.<span style="color: #006633;">addConverters</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> MyConverter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        parameterConverters.<span style="color: #006633;">addConverters</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> StudentConverter<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ExamplesTableFactory<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">new</span> MostUsefulConfiguration<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
            .<span style="color: #006633;">useStoryLoader</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> LoadFromClasspath<span style="color: #009900;">&#40;</span>embeddableClass<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
            .<span style="color: #006633;">useStoryParser</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> RegexStoryParser<span style="color: #009900;">&#40;</span>examplesTableFactory<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> 
            .<span style="color: #006633;">useStoryReporterBuilder</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> StoryReporterBuilder<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
                .<span style="color: #006633;">withCodeLocation</span><span style="color: #009900;">&#40;</span>CodeLocations.<span style="color: #006633;">codeLocationFromClass</span><span style="color: #009900;">&#40;</span>embeddableClass<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
                .<span style="color: #006633;">withDefaultFormats</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
                .<span style="color: #006633;">withFormats</span><span style="color: #009900;">&#40;</span>CONSOLE, TXT, <span style="color: #003399;">HTML</span>, XML<span style="color: #009900;">&#41;</span>
                .<span style="color: #006633;">withCrossReference</span><span style="color: #009900;">&#40;</span>xref<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
            .<span style="color: #006633;">useParameterConverters</span><span style="color: #009900;">&#40;</span>parameterConverters<span style="color: #009900;">&#41;</span>    
            .<span style="color: #006633;">useStepMonitor</span><span style="color: #009900;">&#40;</span>xref.<span style="color: #006633;">getStepMonitor</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p>Now the next step is to copy the JS libraries in your project and make sure they are copied in the view directory. Download the all the files and folder from here <a href="https://github.com/jbehave/jbehave-core/tree/master/jbehave-navigator/src/main/resources">https://github.com/jbehave/jbehave-core/tree/master/jbehave-navigator/src/main/resources</a>. Copy them under src/main/storynavigator folder in your source.</p>
<p>Add this confif in your POM files, so that these files are copied in the Jbehave view directory</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">        ${basedir}/src/main/storynavigator
        ${project.build.directory}/jbehave/view
        false</pre></div></div>

<p>Now every run will generate a file called navigator.html inside /target/jbehave/view.</p>
<p>First tab is Stories, it will allow searching on story description, narrative and meta tag. Second tab is the Steps Tab, this will allow searching all the steps in your step classes.</p>
<p>Bit of learning &#8211; You will not see data in Stories tab for you story if no meta tags are used in the report.</p>
<p>&nbsp;</p>
<p><img class="alignleft" src="http://pankajnakhat.com/blog1/wp-content/uploads/2011/06/storyNav.png" alt="" width="800" height="600" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pankajnakhat.com/blog1/bdd/03/jbehave-story-navigator-dictionary-of-all-the-steps/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Agile Testing challenges and overcoming effectively</title>
		<link>http://www.pankajnakhat.com/blog1/agile-testing/08/agile-testing-challenges-and-overcoming-effectively/</link>
		<comments>http://www.pankajnakhat.com/blog1/agile-testing/08/agile-testing-challenges-and-overcoming-effectively/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 10:26:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Agile Test Planning]]></category>
		<category><![CDATA[Agile Testing]]></category>

		<guid isPermaLink="false">http://www.pankajnakhat.com/blog1/?p=275</guid>
		<description><![CDATA[Software testing has changed dramatically since the inception of Agile and Scrum. These methodologies are now widely accepted and without any doubt offers better way of delivering software. However Agile and Scrum also highlighted some of the challenges in the testing processes which possessed greater risk of failure , if not thought about in the [...]]]></description>
				<content:encoded><![CDATA[<p>Software testing has changed dramatically  since the inception of Agile and Scrum. These  methodologies are now widely accepted and without any doubt offers better way of delivering software. However Agile and Scrum also highlighted some of the challenges in the testing processes which possessed greater risk of failure , if not thought about in the over all process. </p>
<p>Some of these challenges becomes inevitable , if  some of the critical processes in scrum like story writing, estimation and TDD falls apart. </p>
<p>Some of the high level Testing challenges in Agile and Scrum</p>
<li>- Lack of detailed requirement (Story)
<li>- Constantly changing requirement (Change is accepted in principal)</li>
<li>- Not enough time to prepare tests</li>
<li>- Re factoring of the code as an accepted practice (Possess  greater risk without Test automation at all levels)</li>
</li>
<p>And I think these are some of the core points if taken care can make huge impact on the overall testing process and for that matter in delivery.</p>
<p><strong>Having the right Requirement</strong></p>
<p>I see this as a biggest pain points and root of other problems. Having a good story can change how the requirement is delivered and tested.  I refer this from the book &#8220;User stories Applied&#8221;, that a story should inhibit following features INVEST</p>
<p>I &#8211; INVEST<br />
N &#8211; NEGOTIABLE<br />
V &#8211; VALUABLE<br />
E &#8211; ESITMATABLE<br />
S &#8211; SMALL<br />
T &#8211; TESTABLE</p>
<p>Each of these characteristics are self explainable and however trivial they may sound, they have huge impact on the quality of the requirement delivered in the end. </p>
<p>For instance a large story which can pretty much eat good few sprints is more likely to introduce bugs, as it will not be ready (DONE) by end of the sprint for review.  And also large stories create confusion for developer as they get out of context very soon, similarly its nightmare for testing as well since focusing on a big chunk of feature creates opportunity for bug and overlooking.</p>
<p>Also, a badly written story can lead a wrong estimation which can cause capacity issues for testing as chances are some stuff will have to rolled over to next sprint or rushed through. Not only that a badly estimated story can lead to greater risks in further sprints, as it will be eat up some of the valuable time needed to prepare for next sprint&#8217;s requirement.</p>
<p>I strongly believe that testers in Agile project can add lot of value by looking at requirements nice early and reviewing it from a tester&#8217;s point of view. Some of the questions a tester need to asks are</p>
<p>- Does this acceptance criteria makes sense?<br />
- How can I test it? (What, where and When )<br />
- Is it not a duplication of work we did earlier ?<br />
- Is this story too small or big ?</p>
<p><strong>
<ul>
Automate Automate Automate </ul>
<p></strong></p>
<p>Automation will help maintaining a tight grip on the changes. Automation should be done at all levels and with involvement of QAs). Why do I say that? As Agile accepts changes quiet frequently and focuses on delivering features every sprint. it is obviously you would not get much time to plan, write and manage those tests, hence it is imperative that test automation is thought about while writing the code. And QAs should play important role in discussing, planning and thinking about those tests upfront, and discuss them with BAs and Developers. Build as much input as possible and then take right decisions as in which tests to be automate as unit, integration or UI tests. </p>
<p>Automation are assets and needs to be maintained, re factored and looked after like production code.  I have seen automation tests becoming big bottleneck to maintain and trace and these problems can be solved by doing some simple things regularly .</p>
<p>- Make sure your automated tests are traceable against requirements (There are tools available to do that , if not use spreadsheet ). This will make sure you can track the tests against a requirement and if needed re factor, extend or retire it.<br />
- Automated at all levels &#8211; UI tests are expensive and not conducive to tests each and everything. Good unit and integration test helps in building better coverage and helps in giving faster feedback. End to End tests are important and should be exclusive and focus on workflow and driving application end to end.<br />
- Get testers involved in writing unit and integration tests, they will provide valuable feedback.</p>
<p><strong>Defining the DONE Criteria </strong></p>
<p>I think this is the first and foremost process to be in place from Day1. </p>
<p>What is DONE Criteria ?</p>
<p>DONE criteria are high level check list items which needs to be satisfied in order to claim a story is DONE. DONE Criteria should have technical, process, functional, non-functional, configuration aspects of the software. DONE criteria forces teams to take holistic view on the stories rather then code completing the feature.</p>
<p>Some of the common aspects of done criteria</p>
<p>- All acceptance criteria met.   (Functional)<br />
- Performance not degraded.     (Non Functional)<br />
- Code coverage achieved and all acceptance tests automation. (Technical )<br />
- All build passed and application deployed on UAT/Staging environment. (Environment/Configuration)<br />
- Exploratory testing performed and QA signed off.<br />
- Demoed to stake holders on proper environment. (Process)<br />
- All known bugs closed and tested (Process)</p>
<p>By doing this teams will make sure that software produced is of great quality and all aspects of the applications are taken care. Doing this repeatedly will make sure testers are not doing catchup but they are part of the story and sign off process. Software produced in the end can be released and should be production ready. </p>
<p><strong>Exploratory Testing<br />
</strong></p>
<p>This is the most misunderstood and ignored aspect of Agile Testing. Exploratory Testing advocated testes/BAs to test a feature by exploring it beyond the test scripts. At the same time it is not about clicking around  the application without proper context.</p>
<p>Exploratory testing should be done every sprint on set of features on a proper environment. Testers should use all their skills to think out of the box and try to fearlessly test the system within the context of the features, however not limited to that feature.</p>
<p>Success of Agile Testing depends on working collaboratively between different stakeholders of the project and learning and rectifying quickly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pankajnakhat.com/blog1/agile-testing/08/agile-testing-challenges-and-overcoming-effectively/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jbehave &#8211; Parametrization of Scenarios &#8211; Data driving the scenario</title>
		<link>http://www.pankajnakhat.com/blog1/uncategorized/06/jbehave-parametrization-of-scenarios-data-driving-the-bdd-scenario/</link>
		<comments>http://www.pankajnakhat.com/blog1/uncategorized/06/jbehave-parametrization-of-scenarios-data-driving-the-bdd-scenario/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 14:13:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Agile Testing]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[Jbehave]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.pankajnakhat.com/blog1/?p=226</guid>
		<description><![CDATA[If you are using Jbehave and wonder how to execute your scenarios with different set of data without repeating the steps, so that your scenarios don&#8217;t blow up repeating same steps with different set of data. You can also refer to this scenario as data driven testing, as each of the row in your data [...]]]></description>
				<content:encoded><![CDATA[<p>If you are using Jbehave and wonder how to execute your scenarios with different set of data without repeating the steps, so that your scenarios don&#8217;t blow up repeating same steps with different set of data.</p>
<p>You can also refer to this scenario as data driven testing, as each of the row in your data table becomes one test case.</p>
<p>In the example below lets say I am testing a calculator sum function, and for that I need to have several test cases to test with different data. So basically steps looks like this, however we need to give different input and assert output.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">&nbsp;
&nbsp;
Scenario<span style="color: #339933;">:</span> As as user I want to test calculator sum function 
Meta<span style="color: #339933;">:</span>
@author pankaj
&nbsp;
Given calculator takes <span style="color: #339933;">&lt;</span>input1<span style="color: #339933;">&gt;</span> and <span style="color: #339933;">&lt;</span>input2<span style="color: #339933;">&gt;</span>
Then the sum is <span style="color: #339933;">&lt;</span>sum<span style="color: #339933;">&gt;</span>
&nbsp;
Examples<span style="color: #339933;">:</span>
<span style="color: #339933;">|</span>input1<span style="color: #339933;">|</span>input2<span style="color: #339933;">|</span>sum<span style="color: #339933;">|</span>
<span style="color: #339933;">|</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">|</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">|</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">|</span>
<span style="color: #339933;">|</span><span style="color: #cc66cc;">4</span><span style="color: #339933;">|</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">|</span><span style="color: #cc66cc;">9</span><span style="color: #339933;">|</span>
<span style="color: #339933;">|</span><span style="color: #cc66cc;">10</span><span style="color: #339933;">|</span><span style="color: #cc66cc;">12</span><span style="color: #339933;">|</span><span style="color: #cc66cc;">22</span><span style="color: #339933;">|</span></pre></td></tr></table></div>

<p>And steps implementation  for the above written steps will  need to use Named parameter. So basically Named parameter (Which is usually in <>), will be replaced by the data in the table below the steps in the story. In the above example there are three named parameter in my story. </p>
<p><input1><br />
<input2><br />
<sum></p>
<p>In the steps implementation, you step needs to explicitly use the named parameter in the method. Using named parameter in the steps tells jbehave that it needs to replace this with the data in the table specified below/or in another file.</p>
<p>Steps class would look like</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">org.qainfolabs.jbehave.steps</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.math.BigDecimal</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">junit.framework.Assert</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.jbehave.core.annotations.Given</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.jbehave.core.annotations.Named</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.jbehave.core.annotations.Then</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.qainfolabs.app.Calculator</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CalulatorSteps <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">BigDecimal</span> input1<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">BigDecimal</span> input2<span style="color: #339933;">;</span>
&nbsp;
	@Given<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;calculator takes &lt;input1&gt; and &lt;input2&gt;&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> readFruits<span style="color: #009900;">&#40;</span>@Named<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;input1&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #003399;">BigDecimal</span> input1,
			@Named<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;input2&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #003399;">BigDecimal</span> input2<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">input1</span> <span style="color: #339933;">=</span> input1<span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">input2</span> <span style="color: #339933;">=</span> input2<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	@Then<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;the sum is &lt;sum&gt;&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> doSum<span style="color: #009900;">&#40;</span>@Named<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;sum&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #003399;">BigDecimal</span> sum<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		Calculator calc <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Calculator<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">Assert</span>.<span style="color: #006633;">assertEquals</span><span style="color: #009900;">&#40;</span>sum, calc.<span style="color: #006633;">sum</span><span style="color: #009900;">&#40;</span>input1, input2<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>After the scenario is executed Jbehave will produce a detailed report of the scenario, showing the steps repeating with replaced parameter with each data set.</p>
<p><a href="http://www.pankajnakhat.com/blog1/wp-content/uploads/2011/06/jbehave2.png"><img src="http://www.pankajnakhat.com/blog1/wp-content/uploads/2011/06/jbehave2.png" alt="" title="jbehave" width="596" height="537" class="alignleft size-full wp-image-258" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pankajnakhat.com/blog1/uncategorized/06/jbehave-parametrization-of-scenarios-data-driving-the-bdd-scenario/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to manage my day to day tasks if I am an Agile Tester</title>
		<link>http://www.pankajnakhat.com/blog1/uncategorized/11/how-to-manage-my-tasks-if-i-am-an-agile-tester/</link>
		<comments>http://www.pankajnakhat.com/blog1/uncategorized/11/how-to-manage-my-tasks-if-i-am-an-agile-tester/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 23:20:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Agile Test Planning]]></category>
		<category><![CDATA[Agile Testing]]></category>
		<category><![CDATA[planning]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://pnakhat.wordpress.com/?p=65</guid>
		<description><![CDATA[Testers on agile projects have to often deal with multiple tasks in an iteraton. They have to support the stories in developement. (Talking to devs and BAS) They ideal prepare acceptance tests for the next iterations. Also, they need to do exploratory testing around the stories which comes through development Deal with defects as part [...]]]></description>
				<content:encoded><![CDATA[<p>Testers on agile projects have to often deal with multiple tasks in an iteraton.</p>
<div>
<ul>
<li>They have to support the stories in developement. (Talking to devs and BAS)</li>
<li>They ideal prepare acceptance tests for the next iterations.</li>
<li>Also, they need to do exploratory testing around the stories which comes through development</li>
<li>Deal with defects as part of the exploratory testing.</li>
<li>Automation testing.</li>
</ul>
<div>At times it becomes challenging to priotise day to day activities.  How do I decide, what sould I work on?</div>
<div>Few things which can make decision taking more practical and easy</div>
<div>
<ol>
<li>Always think what you want to achieve end of the day, that often helps in prortising work.</li>
<li>Given you have few tasks at one time, which task is going to add more value for your customer? Viz If a really important story for business needs to start next sprint, you better have to prepare for that instead doing exploratory testing at that point in time.</li>
<li>Make sure your tasks are small and estimable even if you dont estimate testing tasks in the sprint planning, This would help you plan your day better.</li>
<li>Have a small planning board your sake (even if its in your note book)</li>
<li>Write down the things you want to do, often people forget small tasks.</li>
<li>If you have to leave a task undone (You may have to move between tasks based on need), make sure you make a note of it and come back to it soonish, as you may have to start all over again if you resume the task after a gap.</li>
<li>Make sure your story wall shows real progress of QA work (New stories, sign off, Defects on stories) , as this would help you planing the activities.</li>
</ol>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.pankajnakhat.com/blog1/uncategorized/11/how-to-manage-my-tasks-if-i-am-an-agile-tester/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Testers check list</title>
		<link>http://www.pankajnakhat.com/blog1/uncategorized/11/agile-testers-check-list/</link>
		<comments>http://www.pankajnakhat.com/blog1/uncategorized/11/agile-testers-check-list/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 20:26:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.pankajnakhat.com/blog1/?p=214</guid>
		<description><![CDATA[Before Sprint -          Working closely with BA on upcoming stories -          Where ever possible produce acceptance criteria / test of the stories to be done in coming sprint -          Understanding review of the stories -          Challenging the ambiguous requirements -          Challenging big stories In the sprint -          Work with development team on implantation of the [...]]]></description>
				<content:encoded><![CDATA[<p><strong><span style="text-decoration: underline;">Before Sprint</span></strong></p>
<p>-          Working closely with BA on upcoming stories</p>
<p>-          Where ever possible produce acceptance criteria / test of the stories to be done in coming sprint</p>
<p>-          Understanding review of the stories</p>
<p>-          Challenging the ambiguous requirements</p>
<p>-          Challenging big stories</p>
<p><strong><span style="text-decoration: underline;">In the sprint</span></strong></p>
<p>-          Work with development team on implantation of the acceptance tests of the stories.</p>
<p>-          Pair with developers if it helps the team to get stories moving quickly and reducing the feedback time</p>
<p>-          Discuss different levels of testing to be done for the stories . Don’t think you don’t have any responsibilities towards unit and integration tests.</p>
<p>-          Have an understating of implementation of the tests being written and challenge a implementation wherever you think the code will not be exercised in the right way.</p>
<p>-          Make sure the feedback is fast and delivered stories are tested on proper environments and meets the Done criteria.</p>
<p>-          Make sure you builds are green and tests are passing all the time</p>
<p>-          Work with business / BA on the delivered stories to sign off it.</p>
<p>-          Document and communicate the bugs according to your team process.</p>
<p>-          Implement more comprehensive automated tests if needed.</p>
<p>-          Make sure Non functional requirements are met</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;">Post sprint</span></strong></p>
<p>-          Work with business/ BAs on the demo of the story, as I think QAs develop deep understanding of the requirements.</p>
<p>-          More exploratory testing.</p>
<p>-          Look at performance/load/stress criteria of your application every now and then.</p>
<p>-          Close the fixed bugs and make sure proper regression tests are added.</p>
<p>This list is not a comprehensive tasks lists and it is meant only for guideline purposes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pankajnakhat.com/blog1/uncategorized/11/agile-testers-check-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
