<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bredex Blog</title><description></description><link>http://www.bredex.de/</link><language>en</language><pubDate>Tue, 24 Apr 2012 16:54:00 +0200</pubDate><generator>Contao Open Source CMS</generator><atom:link href="http://www.bredex.de/web/blog.xml" rel="self" type="application/rss+xml" /><item><title>Eclipse 4 Training Day following the Eclipse Demo Camp Braunschweig</title><description><![CDATA[<p>Anyone thinking of coming to the Braunschweig <a href="http://wiki.eclipse.org/Braunschweig_Demo_Camp_June2012" target="_blank">Eclipse Demo Camp</a> on 28th June should think about extending their stay in Braunschweig for the following day as well. We're pleased to welcome Kai Tödter from Siemens AG to BREDEX to hold a <a href="http://www.bredex.de/web/index.php/e4.html" target="_blank">one-day training course</a> on Eclipse 4.2 applications.</p> <h2>Two days of Eclipse</h2> <h3>Day one, Demo Camp</h3> <p>At 5pm on the 28th June, BREDEX is organizing a demo camp in Braunschweig. Confirmed presenters include Kai Tödter, Ed Merks and Marcel Bruch - and we're working on a couple more&nbsp;<img title="Wink" src="http://www.bredex.de/plugins/tinyMCE/plugins/emotions/img/smiley-wink.gif" alt="Wink" border="0"> BREDEX will also be doing a demonstration of Jubula. Registration is now open via the <a href="http://braunschweig_democamp_june2012.eventbrite.com/" target="_blank">Eventbrite </a>site - so sign up for a great evening!</p> <h3>Day two, Eclipse 4.2 Training</h3> <p>The following day (29th June), Kai Tödter is holding a one-day training course on <a href="http://www.bredex.de/web/index.php/e4.html" target="_blank">Rich Client Development with Eclipse 4.2</a>. This is an excellent opportunity to get up to speed on the latest developments in Eclipse without having to travel to far-off conferences or workshops. A full <a href="http://www.bredex.de/web/index.php/e4.html" target="_blank">description</a> of the training day is on the BREDEX website, including a link to the registration. Places are limited, so register early.</p><ul class="tagged"> 	<li>training</li> 	<li>events</li> 	<li>Eclipse Demo Camp</li> 	<li>Eclipse</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/eclipse-4-training-day-following-the-eclipse-demo-camp-braunschweig.html</link><pubDate>Tue, 24 Apr 2012 16:54:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/eclipse-4-training-day-following-the-eclipse-demo-camp-braunschweig.html</guid></item><item><title>Upcoming Eclipse Events - Demo Camp and Testing Day</title><description><![CDATA[<p>It only seems like yesterday that EclipseCon was beginning, and now Demo Camp season is almost upon us! And shortly after Demo Camp season it will be time for the Eclipse Testing Day 2012! So get your diaries out and start marking some dates...</p> <h2>Eclipse Demo Camp Braunschweig</h2> <p>On 28th June, there will be a Demo Camp in Braunschweig starting at 5pm. The <a href="http://wiki.eclipse.org/Braunschweig_Demo_Camp_June2012" target="_blank">Eclipse Wiki </a>page gives more information on the event, including a link to the registration page and the opportunity to sign up as a presenter. There are still some spaces left, so come and show us what you're doing with Eclipse!</p> <h2>Eclipse Testing Day</h2> <p>The third <a href="http://wiki.eclipse.org/Eclipse_Testing_Day_2012" target="_blank">Eclipse Testing Day</a> will be held on the 5th September 2012 in Darmstadt. The call for papers has started; please send your submissions by the 31st May 2012.</p> <p>We're also pleased to announce our current sponsors: <a href="http://www.gfb-softwareentwicklung.de/" target="_blank">GFB Softwareentwicklungsgesellschaft mbH</a>, <a href="http://www.diazhilterscheid.de/en/index.php/" target="_blank">Diaz &amp; Hilterscheid</a> GmbH, and <a href="http://www.verit.de/" target="_blank">Verit Informationssysteme GmbH</a>. We are also collaborating with <a href="http://www.professionaltester.com/" target="_blank">Professional Tester Magazine</a> and <a href="http://www.testingexperience.com/" target="_blank">Testing Experience Magazine</a>. There are still sponsoring positions available, and of course we're looking forward to hearing about the Eclipse community's experiences and adventures in testing as well as meeting testers, developers and project managers on the day.</p><ul class="tagged"> 	<li>events</li> 	<li>Eclipse Testing Day</li> 	<li>Eclipse Demo Camp</li> 	<li>Eclipse</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/upcoming-eclipse-events-demo-camp-and-testing-day.html</link><pubDate>Wed, 18 Apr 2012 14:28:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/upcoming-eclipse-events-demo-camp-and-testing-day.html</guid></item><item><title>Call for Papers for the Eclipse Testing Day is open!</title><description><![CDATA[<p>Do you have an Eclipse-related testing story to tell the community? Then enter a submission for the <a href="http://wiki.eclipse.org/Eclipse_Testing_Day_2012" target="_blank">Eclipse Testing Day</a> 2012 (5th September, Darmstadt)! You can enter your abstracts until 31st May and the program committee will announce their decisions in June.</p> <h3>What we're looking for</h3> <p>The topic for this year's testing day is "Testing and Beyond". The program committee are putting together a format that will consist of traditional talks on the topics below, as well as a set of lightning talks from areas "beyond" testing and a panel discussion with experts from the Eclipse and testing communities.&nbsp;</p> <p>The topics for talks could be:</p> <ol> <li>Testing Eclipse applications</li> <li>Testing within the Eclipse Ecosystem</li> <li>Testing on Eclipse Projects</li> <li>Design for testability in Eclipse</li> <li>Case studies of testing projects</li> <li>Eclipse tooling and technology for the test process</li> <li>Continuous integration and testing for Eclipse applications</li> </ol> <p>As in the past years, demonstrations and case studies are very much welcome but product demonstrations will not be accepted. Submit your abstract (in English, 100-200 words) and your biography to testingday at bredex dot de by <strong>31st May 2012</strong>. More information on talk submissions and length is on the <a href="http://wiki.eclipse.org/Eclipse_Testing_Day_2012" target="_blank">wiki</a>.</p> <h3>Be a sponsor!</h3> <p>The Eclipse Testing Day is a not-for-profit event. Costs are primarily covered by the organisors and our sponsors. We have a range of <a href="http://wiki.eclipse.org/Eclipse_Testing_Day_2012_Sponsors" target="_blank">sponsoring opportunities</a> available - sign up to support this great event and meet Eclipse users and testers on the day.</p> <h3>Come to the event</h3> <p>The registration will open shortly after announcing the program. If you would like to be notified when registraion opens, then send an email to testingday at bredex dot de.</p> <p>We look forward to an exciting event!</p><ul class="tagged"> 	<li>events</li> 	<li>Eclipse Testing Day</li> 	<li>Eclipse</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/call-for-papers-for-the-eclipse-testing-day-is-open.html</link><pubDate>Fri, 13 Apr 2012 09:21:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/call-for-papers-for-the-eclipse-testing-day-is-open.html</guid></item><item><title>What's new in Jubula 1.2 and GUIdancer 6.0</title><description><![CDATA[<p>Just in time for EclipseCon 2012, the Jubula/GUI<em>dancer</em> Team has released the new standalone versions of both tools. The spectrum of new possibilities is particularly nice for this release, I think, so I'm going to take you on a tour of the new features.</p> <h2>Test result reporting</h2> <p>We've had the Reporting Perspective for some time now, and it's one of my favourite additions over the last few years. In almost every team I've been a part of, it takes time to learn how to deal with test results and to define how to react to them as a part of the process. That's one of the reasons why we keep adding new features to this area - that and the fact that we also use the reporting capabilities on a daily basis. So what's new this time?</p> <h3>Web dashboard</h3> <p>An added feature in GUI<em>dancer</em> from 6.0 is that we've made the reporting perspective available in the browser thanks to the magic of RAP. Now you can do your test result analysis from the browser - which is excellent if you're not at your desktop, or if you 'just' want to perform analysis and don't need an installed GUI<em>dancer</em>.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_dashboard.png" title="GUIdancer Dashboard" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/blog_dashboard-664b8cb3.png" width="500" height="260" alt="GUIdancer Dashboard"></a></p> <h3>More test result details</h3> <p>One of the new features available in both Jubula and GUI<em>dancer</em> is more information in the test result reports. We've added the cumulative duration to each node in the result report as well as the data used for the node. Instead of having to expand the test result to see these details, they are instantly visible at each level, so now you can easily see how long each part of a test is taking as well as which data sets were used.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_durationAndData.png" title="Additional test result details" data-lightbox="[multi]"><img src="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_durationAndData.png" width="351" height="158" alt="Additional test result details"></a></p> <h3>Create Mylyn task</h3> <p>As an extension to the Mylyn integration in GUI<em>dancer</em>, we now also have the opportunity to create a task in external systems (like Trac or Bugzilla for example) directly from a Test Result Report. So if you open up your test result and find that the Test Suite failed due to an error in the software, then you can create a ticket for it directly from GUI<em>dancer</em>.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_createMylynTask.png" title="Create Mylyn task from report" data-lightbox="[multi]"><img src="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_createMylynTask.png" width="418" height="200" alt="Create Mylyn task from report"></a></p> <h2>Working with test data</h2> <p>Alongside the extras in test reporting, we've also made some improvements to actually writing tests. One of the directions we've gone in is test data.</p> <h3>Functions</h3> <p>One of the aspects of test data that has been missing for a while is being able to use functions. Well, those days are over. Jubula 1.2 and GUI<em>dancer</em> 6.0 both support the use of functions as test data. There are a few basic math functions (add, subtract, multiply, delete, round and truncate) and some date functions (now, formatDate, modifyDate and parseDate) that we've already written, but new functions can be added via an extension point as well.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_functions.png" title="Using functions as data" data-lightbox="[multi]"><img src="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_functions.png" width="435" height="279" alt="Using functions as data"></a></p> <h3>In-editor decoration for missing data</h3> <p>Often its the small things that really make a difference. We've added decoration within editors to show you if you've forgotten to enter data. No more saving and then realising that you've forgotten something - now you can see instantly whether the data in the editor you're working on is complete or not.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_missingData.png" title="In-editor decoration for missing data" data-lightbox="[multi]"><img src="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_missingData.png" width="329" height="134" alt="In-editor decoration for missing data"></a></p> <h2>Other really cool stuff</h2> <p>So we've got some exciting things that fit into the areas of result reporting and data. We didn't stop there though, there's more cool stuff in other areas as well:</p> <h3>Metrics framework</h3> <p>In both Jubula and GUI<em>dancer</em>, there's now a new framework for Metrics within the project. We've added three example metrics to it at the moment, and we'll be expanding the possibilities in later versions. At the moment though, you can already</p> <ul> <li>count various things (Test Cases, Event Handlers, Test Steps etc) in the project,</li> <li>calculate the ratio of specific actions and general actions used throughout the test,&nbsp;</li> <li>and show any redundant-looking hierarchies that you have created</li> </ul> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_metrics.png" title="Results of the counting metric" data-lightbox="[multi]"><img src="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_metrics.png" width="572" height="232" alt="Results of the counting metric"></a></p> <h3>Categories in the Test Suite Browser and Central Data Sets Editor</h3> <p>The Test Suite Browser and Central Data Sets editor just got prettier: now you can categorise your Test Suites and Test Jobs as well as any central data you have in your project.</p> <p><img src="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_categories.png" width="272" height="245" alt=""></p> <h3>New action: store property value</h3> <p>Sometimes you don't know how many rows you have in a table, but you do know that after searching it should be less than before. A new action to store the property value lets you do this. Combine it with the "check string values" or "check numerical values" actions to perform the checks you need.</p> <h3>Save As New Test Case</h3> <p>I've deliberately left this until last because it's both exciting and terrifying. Since its conception, GUI<em>dancer</em> (and now Jubula) have been staunch opposers of copying and pasting. We've always said - if you need something twice you should make a module and reuse it. And we still say that. But based on some talks with customers, and some enhancement requests and <a href="http://www.eclipse.org/forums/index.php/t/240093/" target="_blank">forum entries</a>, we've relented just a little bit for a specific use case.</p> <p>Imagine you have a wonderfully structured, modular test. It's perfect as it is, nobody could accuse you of being lazy with your modularisation. Nevertheless, you need other use cases that consist of variations of the modules you have in this test. For one use case, you need them all with an extra one in-between. For another you need most of them but not the last one, and so on. In this case, you'll be thankful for the new option "Save As New Test Case". You can use it to create a new Test Case that already contains the modules you select from an existing one and so save time looking for the same modules again.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/blog_saveAs.png" title="Save as new Test Case" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/blog_saveAs-b2801d02.png" width="450" height="290" alt="Save as new Test Case"></a></p> <h2>Sounds great, where can I get it?</h2> <p>GUI<em>dancer</em> 6.0 is available from the <a href="https://cgi.bredex.de/GUIdancerShop/home.do?lang=en" target="_blank">BREDEX GUI<em>dancer</em> page</a>. Jubula 1.2 is available from the <a href="http://www.eclipse.org/jubula/download.php" target="_blank">Eclipse Project Page</a>. Bear in mind that the new version of Jubula is just the standalone at the moment. The features described here won't be in the Eclipse Feature until the Juno release, so look at the standalone as a preview of what's to come.</p><ul class="tagged"> 	<li>Test Suite Browser</li> 	<li>Test results</li> 	<li>Mylyn</li> 	<li>Metrics</li> 	<li>Jubula</li> 	<li>GUIdancer</li> 	<li>Eclipse</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/whats-new-in-jubula-12-and-guidancer-60.html</link><pubDate>Mon, 19 Mar 2012 11:23:00 +0100</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/whats-new-in-jubula-12-and-guidancer-60.html</guid></item><item><title>Automated version number management for About Dialog in Eclipse Products</title><description><![CDATA[<p>A while back, I was working on release engineering for GUIdancer, our Eclipse-based automated testing tool. As I was testing my changes, I noticed that the version number listed in the About Dialog was somewhat odd…</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/gd_version_number_0_4_0.png" title="GUIdancer 0.4.0?!" data-lightbox="[multi]"><img src="http://www.bredex.de/tl_files/BredexBlog/screenshots/gd_version_number_0_4_0.png" width="414" height="254" alt="GUIdancer 0.4.0?!"></a></p> <p>Note that the actual version number for GUIdancer is definitely not 0.4.0 (it's actually 5.2, going on 6.0)! And yet, the plugin.properties file wouldn’t lie:</p> <pre class="brush: plain;gutter: false; light: true; fontsize: 100; first-line: 1; ">aboutText=GUIdancernVersion: 0.4.0nn(c) Copyright Bredex GmbH 2004 - 2011</pre> <p>It turned out that I had inadvertently broken the script that automatically replaces the build number in all manifest files as well as the plugin.properties file based on a timestamp. Since a part of the release engineering changes separated the version numbers of GUIdancer’s bundles (such that they don’t have to all have the same version number), I had removed the reference to the script in the build process and neglected to replace it with some other form of automation. Our build tool (Tycho) takes care of updating the manifest files, replacing the ending “qualifier” string with an appropriate timestamp, but what about the as-yet-overlooked plugin.properties file? I was appalled at the idea of manually changing the version number in the plugin.properties file before every release. Above all, what if we forgot to perform the change before releasing?! We’d have multiple versions of GUIdancer out in the wild, all with the same version number displayed in their respective About Dialogs! The end result? Massive confusion for users and support teams:</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/pictures/walk_dontwalk.jpg" title="Walk! Don't Walk!" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/walk_dontwalk-86fca396.jpg" width="500" height="375" alt="Walk! Don't Walk!"></a></p> <p><span style="font-size: 10px;">Image ©<a href="http://www.flickr.com/photos/29707865@N05/">caesararum</a>,</span></p> <p><span style="font-size: 10px;"><a href="http://www.flickr.com/photos/29707865@N05/2780508266/sizes/z/in/photostream/">http://www.flickr.com/photos/29707865@N05/2780508266/sizes/z/in/photostream/</a> licensed under Attribution 2.0 Generic (CC BY 2.0)</span></p> <p>Not wanting to have that on my conscience, I started thinking about a way to automatically update the version number presented in the About Dialog. I settled on a solution combining plugin.properties, about.mappings, an Activator, and a Java Property. The relevant lines of the relevant files follow:</p> <p><strong>plugin.properties:</strong></p> <pre class="brush: bash;gutter: false; light: true; fontsize: 100; first-line: 1; ">aboutText= My Foo Bar ApplicationnVersion: {0}</pre> <p>&nbsp;</p> <p><strong>about.mappings:</strong></p> <pre class="brush: plain;gutter: false; light: true; fontsize: 100; first-line: 1; ">0=$foo.bar.application.version$</pre> <p>&nbsp;</p> <p><strong>activator:</strong></p> <pre class="brush: java;gutter: false; light: true; fontsize: 100; first-line: 1; ">public void start(BundleContext context) throws Exception { &nbsp;&nbsp;&nbsp; super.start(context); &nbsp;&nbsp;&nbsp; System.setProperty("foo.bar.application.version", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; context.getBundle().getVersion().toString()); }</pre> <p>&nbsp;</p> <p><strong>plugin.xml:</strong></p> <pre class="brush: xml;gutter: false; light: true; fontsize: 100; first-line: 1; ">&lt;extension id="product" point="org.eclipse.core.runtime.products"&gt; &nbsp;&nbsp;&nbsp; &lt;product application="foo.bar.application" name="My Foo Bar Application"&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="aboutText" value="%aboutText"&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt; &nbsp;&nbsp;&nbsp; &lt;/product&gt; &lt;/extension&gt;</pre> <p>All of these file belong to what I would call the “Product” bundle (the bundle that defines the org.eclipse.core.runtime.products extension point), which is then also the bundle that defines the version number displayed in the About Dialog. Using this tactic, I can once again believe what my Product says in its About Dialog.</p><ul class="tagged"> 	<li>Eclipse</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/automated-version-number-management-for-about-dialog-in-eclipse-products.html</link><pubDate>Tue, 06 Mar 2012 14:22:00 +0100</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/automated-version-number-management-for-about-dialog-in-eclipse-products.html</guid></item><item><title>Learn about Jubula in Italy!</title><description><![CDATA[<p>We're really pleased to be able to announce a Jubula Training Day on 3rd May in Florence, Italy, in collaboration with <a href="http://www.rcp-vision.com/?lang=en" target="_blank">RCP Vision</a> and their <a href="http://www.eclipsedayflorence.com" target="_blank">Eclipse Day Florence</a> (4th May 2012). As is so often the case in the Eclipse Foundation, members are encouraged to get together to provide content and benefits to other members and users in the community. BREDEX have been wanting to offer (potential) Jubula users an easier way of getting training closer to home, and the Eclipse Day Florence seemed the perfect event to latch onto.</p> <p><img style="float: right; margin: 5px;" title="Jubula Training Day" src="http://www.bredex.de/tl_files/BredexDateien/pictures/events/jubula_trainingday.png" alt="Jubula Training Day" width="200" height="204"></p> <p>Thanks to the folks at RCP Vision, we're happy to be able to offer the Jubula Training Day the day before the Eclipse Day Florence, so if you're planning on going to one of the events, we'd definitely recommend participating in the other one as well!</p> <p>More information and registration is available on the <a href="http://www.rcp-vision.com/?page_id=2939&amp;lang=en" target="_blank">Eclipse Day Florence</a> pages. If you're reading this and thinking you'd like to work with BREDEX to make a Jubula Training Day happen near you, then please get in touch!</p><ul class="tagged"> 	<li>Test design</li> 	<li>Test automation</li> 	<li>Jubula</li> 	<li>events</li> 	<li>Eclipse</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/learn-about-jubula-in-italy.html</link><pubDate>Mon, 13 Feb 2012 11:55:00 +0100</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/learn-about-jubula-in-italy.html</guid></item><item><title>Eclipse get-together in Braunschweig - UML Lab</title><description><![CDATA[<p>Last night was our first Eclipse Stammtisch of 2012. Our guest speaker this time was Manuel Bork from Yatta Solutions GmbH in Kassel, who gave an impressive introduction (and a really cool demonstration) of the <a href="http://www.uml-lab.com" target="_blank">UML Lab</a> modeling tool.<br>Now you may think "yet another modeling tool" - but Manuel showed once again, what a model-based approach in combination with a clever UI design is capable doing to help a developer to manage his code base. The positive feedback from attending students and professors, who actually use UML Lab for education purposes in their daily work, showed that the advantages of template-based reverse-engineering are more than just theoretical. And I for myself learned that not all modeling editors must be "challenging" to use - especially if they are tested with Jubula <img title="Smile" src="http://www.bredex.de/plugins/tinyMCE/plugins/emotions/img/smiley-smile.gif" alt="Smile" border="0"></p> <table border="0"> <tbody> <tr> <td><a href="http://www.bredex.de/tl_files/BredexBlog/pictures/ES_2_2012_003_Talk2.jpg" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/ES_2_2012_003_Talk2-125acf45.jpg" width="300" height="146" alt=""></a></td> <td><a href="http://www.bredex.de/tl_files/BredexBlog/pictures/ES_2_2012_007_After1.jpg" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/ES_2_2012_007_After1-9eaad9ff.jpg" width="300" height="200" alt=""></a></td> </tr> </tbody> </table> <p>The visit to Knochenhauer after the talk let us carry on with our questions to Manuel and our dicussions of our work with Eclipse. There seemed to be a lot of great conversations going on, so thanks again to Manuel for coming!<br>The next Eclipse Event with BREDEX will be a Demo Camp in June. If anyone is interested in showcasing their work feel free to contact us.</p><ul class="tagged"> 	<li>Modelling</li> 	<li>events</li> 	<li>Eclipse Stammtisch</li> 	<li>Eclipse</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/349.html</link><pubDate>Fri, 10 Feb 2012 14:32:00 +0100</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/349.html</guid></item><item><title>Automated testing topics : Code Coverage monitoring for automated tests</title><description><![CDATA[<p align="left">Recently, I wrote a first blog entry in a new series of “automated testing topics” on using <a href="http://bredex.de/web/index.php/blog_article_de/items/automataed-testing-topics-birt-reporting-for-quality-information-over-time.html" target="_blank">BIRT reports in GUIdancer</a>. In this entry I’m going to continue, as promised, with the sometimes rather tricky aspect of code coverage.</p> <h2 class="BXHeader" align="left">Identifying coverage and risk</h2> <p class="BXHeader" align="left">I’m sure that we’re not the only team who, once having established a good base of automated regression tests, wanted to know something about their effectiveness. How much do they cover? Where are our risks? Do new tests actually test new areas of the software? How does our safety net look when more code / more tests are added?</p> <p class="BXHeader" align="left">It seemed like a fair assumption that the simplest way of getting this kind of information automatically would be to add code coverage monitoring to our tests. As it seemed like something that could interest other Jubula / GUIdancer users, we also added it to the tool, and about a year ago, it became a standard feature of GUIdancer.</p> <h2 class="BXHeader" align="left">Using the JaCoCo integration in GUIdancer</h2> <p class="BXHeader" align="left">The code coverage feature in GUIdancer uses <a href="http://www.eclemma.org/jacoco/" target="_blank">JaCoCo </a>(a Java Code Coverage library available under the Eclipse Public License). Code coverage monitoring can be added to an Application Under Test (AUT) in the AUT Configuration dialog for Swing and RCP AUTs.</p> <p class="BXHeader" align="left"><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/CCBlog_AUTConfig.png" title="AUT Configuration for code coverage" data-lightbox="[multi]"><img src="http://www.bredex.de/tl_files/BredexBlog/screenshots/CCBlog_AUTConfig.png" width="502" height="205" alt="AUT Configuration for code coverage"></a></p> <p class="BXHeader" align="left">Once code coverage has been activated, a few extra settings should be defined to declare:</p> <ol> <li>the installation directory for the AUT,</li> <li>the place where the source code for the AUT is (so that the code coverage report can be viewed line-for-line)</li> <li>a package pattern so that only your own code (and not every single library you use) is monitored</li> </ol> <p class="BXHeader" align="left">Once that’s done, you can run your test and get a nice shiny code coverage value and report that can be viewed in the Reporting Perspective:</p> <p class="BXHeader" align="left"><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/CCBlog_CoverageReport.png" title="Code coverage report for a test run" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/CCBlog_CoverageReport-e3c42642.png" width="600" height="289" alt="Code coverage report for a test run"></a></p> <h2 class="BXHeader" align="left">The philosophical part…</h2> <p class="BXHeader" align="left">So now you’ve got your report. It’s got some green lines, some red lines and some numbers. And if you’re in a similar situation to our team, you quickly have someone asking about these numbers and wanting to know what they mean. (I’m going to try not to joke about managers in *every* blog entry, but I think we all know who will be asking these kinds of questions <img title="Wink" src="http://www.bredex.de/plugins/tinyMCE/plugins/emotions/img/smiley-wink.gif" alt="Wink" border="0">).</p> <p>One of the first things I read about code coverage was <a href="http://googletesting.blogspot.com/2010/07/code-coverage-goal-80-and-no-less.html" target="_blank">this blog entry</a>. Having now had some experience in various projects, it has become my favorite way of explaining to customers that the <em>numbers</em> gathered by code coverage are not the aim of the exercise. The absolute values delivered by a monitoring report can’t be used as a guide to quality, nor should they be formulated as an aim for the team.</p> <h2 class="BXHeader" align="left">It’s not about the absolute numbers</h2> <p class="BXHeader" align="left">What code coverage numbers or percentages tell us is only what lines, methods, classes or decisions have been executed. It tells us nothing about whether they were executed correctly, or whether the test that caused these things to be executed was a good one. It can be far too easy to attach too much importance to a simple number removed from its context – and this can drive the wrong kind of behavior in our processes.</p> <h2 class="BXHeader" align="left">So what is it good for?</h2> <p class="BXHeader" align="left">It’s nice to have nice shiny percentages for code coverage, but it’s not the absolute values of the individual percentages that we should be looking at. Instead, there are two other things we should be looking at.</p> <h3 class="BXHeader" align="left">The trend of the lines</h3> <p>The first thing of interest is to move away from individual numbers and look at the <em>trend</em>, most especially the development over time of <em>amount of tests : code coverage : amount of code.</em> The graph generated by GUIdancer shows the first two numbers as lines over time. The report below shows how code coverage can increase with the addition of tests. </p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/CCBlog_BIRTReport.png" title="Progression of code coverage and expected test steps" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/CCBlog_BIRTReport-305574f3.png" width="600" height="412" alt="Progression of code coverage and expected test steps"></a></p> <p>Using graphs such as this, we can see whether a new test added increases the coverage or not. If so, then if we assume no large additions or subtractions from the amount of code, we can reason that the test has executed other lines than executed by previous tests. If the code coverage value does not increase, it could mean that new code has been added, thus reducing the overall percent of the code coverage. Looking at the detailed report would tell us whether new code was executed or not (more on this in the next section). Even if the amount of code had remained the same, and therefore new lines of code weren't actually executed, that doesn't necessarily mean that the new test isn’t performing an important use case or workflow through the application, just that the lines executed have remained the same.</p> <h3>What is being missed</h3> <p class="BXHeader" align="left">Another use of code coverage over and above isolated values is the ability to look at what is <em>not</em> being tested. Don’t look at the green; look at the red. The red areas tell us what parts of the software we’re missing. We can look at e.g. class or method names and decide whether we can design tests that should cover these areas.</p> <p class="BXHeader" align="left"><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/CCBlog_CoverageReport_Detail.png" title="Detailed code coverage analysis" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/CCBlog_CoverageReport_Detail-78e21b38.png" width="600" height="289" alt="Detailed code coverage analysis"></a></p> <p class="BXHeader" align="left">When a new test is added we can check whether it covers the areas we thought it would. Instead of just looking at a simple number, we should look at the details.</p> <h2 class="BXHeader" align="left">New questions</h2> <p class="BXHeader" align="left">As it turns out, the questions about effectiveness and risk can’t really be answered by code coverage. What it can answer though, is "where are we not performing any testing?", "where are we performing too little testing?" and "what effects have my last changes (more/less code, more/less tests) had on the trend?". Based on the answers to these questions, we can design new tests. Code coverage can certainly help us to get better quality software, but perhaps not in the way that is often imagined.</p> <h2 class="BXHeader" align="left">Stay tuned…</h2> <p class="BXHeader" align="left">The next blog entry in this series will be on Mylyn Integration for task-based working to reduce the amount of context-switching we have to do when automating tests. Until then, happy testing!</p><ul class="tagged"> 	<li>Test automation</li> 	<li>Jubula</li> 	<li>GUIdancer</li> 	<li>Eclipse</li> 	<li>code coverage</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/automated-testing-topics-code-coverage-monitoring-for-automated-tests.html</link><pubDate>Mon, 06 Feb 2012 13:24:00 +0100</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/automated-testing-topics-code-coverage-monitoring-for-automated-tests.html</guid></item><item><title>Improving planning activities in agile teams - from board to screen</title><description><![CDATA[<p>One of the most exciting (and challenging) aspects of being agile is planning user stories. They should bring small packages of customer value, yet be well-described for developers and also have acceptance criteria for testing. Sometimes easier said than done!</p> <h2>Pain points</h2> <p>Over the years, our team has got quite good at defining user stories that are visible and value-bringing for the customer. We've even got good at making them nice and "thin" so that we can see progress quickly and aren't dependent on <em>everything</em> being ready to make it worthwhile. Nevertheless, like every team, we have our pain points. For us these are most often forgetting details (what needs to be tested, what aspects of the development can't be forgotten when implementing this story, etc.) We also sometimes found it difficult to see whether everything was going to plan in terms of time or not. This was often compounded by "sneaky stories" joining the sprint after it had started, essentially increasing what we had to do in the same amount of time. (An entry on why sneaky stories are dangerous anyway is <a href="http://www.bredex.de/web/index.php/blog_article_de/items/sneaky-stories.html" target="_blank">here</a>).</p> <h2>Throwing out the board</h2> <p>About three sprints ago, we decided to change some fundamentals of how we were doing things. Up until then, we'd been using a storyboard.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/pictures/storyboard.jpg" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/storyboard-5df4a602.jpg" width="300" height="225" alt=""></a></p> <p>On the one hand, this was nice and easy to use and it was very visual. However, there were some aspects of our process for which it wasn't supporting us, and some aspects in which it was helping us to be <em>bad</em>...</p> <h3>The board was a bad influence</h3> <p>First of all, cards are just so temptingly easy to add to the storyboard once the sprint has started. There was no automated collection of how many story points we had planned, no way of seeing that this had happened, and no way of seeing how often within a sprint. Also, if you know you can change things, maybe you don't plan so well in the first place.</p> <h3>Lack of details</h3> <p>The cards themselves were also problematic. They let us write nice user-stories, but never really had enough room to write individual development activities (update model, show new info in problems view, documentation etc), or acceptance criteria. Details sometimes got left out, sometimes forgotten. At the same time, we had no good way of managing a product backlog where we could always go back and see what we'd already planned, what we'd estimated and what other things are of interest.</p> <p>On a purely logistical level, our wall was also getting too small for a growing team.</p> <h2>Time for a tool?</h2> <p>So, three sprints ago, we decided to try out a tool we use at the company for other aspects of our work (booking hours, calendars, project planning, writing invoices etc) which proclaimed to have support for agile processes. We were naturally somewhat sceptical, because we thought that it would limit us in our work. Nevertheless, one of the great things about agile teams is their willingness and ability to try out new things, so we launched a pilot sprint for the tool.</p> <p>Three sprints on, and we're actually really enjoying it and gaining benefits from specific areas of additional structure it brings us.</p> <h3>Hierarchy: from story to technical details</h3> <p>First of all, epics, stories and activities are created and edited as hierarchical structures. We can keep the customer perspective we've got so good at thinking of while also specifying more technical activities for the developer, so our stories are more well-rounded and also well-estimated. Because everything we've done gets saved into the backlog, we don't have to do any work twice. If we've discussed a feature, written partial or complete stories for it, done mock-ups etc, then those data are still all there later. We can use old stories to help us plan new ones, and we can go back to not-yet-fully-planned stories and carry on where we left off - even if it was a while ago because something else got prioritized instead.</p> <h3>Prioritization</h3> <p>Speaking of prioritization, that's become easier too. Without a well-maintained central list of what the customers want (we have multiple sources for requirements), then it's easy to prioritize something more highly for an upcoming sprint and forget that other things are maybe just as (if not more) important. Now, we see exactly what we're leaving out to include something else and can make sure that that's a decision the customer(s) want(s) to make.</p> <h3>Keeps us on the straight and narrow</h3> <p>At the beginning of the sprint, we add product backlog items to the sprint backlog in the tool. Once the sprint has started, it's very much a "holy" object. An automatic burn-down chart gets created every day, and we have a representation of our old story board on our screens. It is "difficult" to add new items to the sprint, and impossible to do so without noticing that our planned story points have increased. So we don't do it. This has advantages for our transparency with our customers as well - we can tell them exactly when a sprint is beginning, and exactly what it will contain.</p> <h3>Tool must support the team</h3> <p>Now, working with the tool wasn't the only change we made - we also started doing more regular, but shorter, planning meetings and changing the way we work with known or new issues within a sprint. So our general planning has changed a bit too, but even here its nice to know that the results of our planning are safe in the backlog, with all the information it contains.</p> <p>I wouldn't want to say by any stretch of the imagination that the tool is perfect, or even that our way of working with it is always ideal. Nor would I want to challenge the idea that tools are secondary to interaction. But used in the right way, a tool can help a team to improve. We've now had three good consecutive sprints, and that's worth celebrating <img title="Smile" src="http://www.bredex.de/plugins/tinyMCE/plugins/emotions/img/smiley-smile.gif" alt="Smile" border="0">.</p><ul class="tagged"> 	<li>story board</li> 	<li>stories</li> 	<li>agile team</li> 	<li>agile process</li> 	<li>agile</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/improving-planning-activities.html</link><pubDate>Tue, 24 Jan 2012 13:47:00 +0100</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/improving-planning-activities.html</guid></item><item><title>Automated testing topics : BIRT reporting for quality information over time</title><description><![CDATA[<h2 class="BXHeader" align="left">Background</h2> <p class="BXHeader" align="left">Back in early 2011, when we were deciding where and how to split GUIdancer into two tools, we put a lot of consideration into what we wanted to achieve with our Open Source activities. We firmly decided that Jubula users should have all they need to write, execute and analyze tests. We wanted to have a good, well-rounded tool as our Open Source contribution, not something that is missing necessary features. Nevertheless, we did want to save some nice features for GUIdancer, the idea being that for a small amount of money, you can add some nice aspects to your testing project and process.</p> <p class="BXHeader" align="left">As it turns out, many of the features we kept closed source and as part of the commercial tool are things that are likely to become nice-to-haves once you’ve got more than just a few tests up and running. Once tests start getting bigger, then aspects like Test Style (like Checkstyle) and Mylyn integration really start getting interesting. And if you’re using Jubula in CI processes and your tests are gaining in importance, then it would be nice to have reporting capabilities (you know, for the managers ;) ) and to get some information on code coverage. If you’ve already used Jubula successfully in one project, then maybe you’ll think about starting testing even earlier next time with the Model-Based approach.</p> <p class="BXHeader" align="left">But these are things that come later, and we often get asked the question by newer users – what can I do with all of this? Well, in a short blog series, we’re going to describe how the various aspects of GUIdancer are designed to be used, and how they help us with our work in the Jubula project and in customer projects. This first entry will look at how we use BIRT reports in our daily, weekly and monthly work.</p> <h2 class="BXHeader" align="left">GUIdancer and BIRT – the basics</h2> <p class="BXHeader" align="left">Jubula contains various options to analyze single test runs – a test result report appears dynamically during test execution, and individual test reports can be reopened including information on error-types and screenshots. This is indispensable in a test tool – I need to be able to see what went wrong so it can be fixed. However, what this doesn’t allow me is any kind of view over time. Questions such as:</p> <ul> <li>How many tests ran successfully / failed / didn’t run this week / month?</li> </ul> <ul> <li>How many tests have been added over the last period of time?</li> </ul> <ul> <li>How has the code coverage developed since adding the new tests?</li> </ul> <p class="BXHeader" align="left">can’t be answered with single test runs; they need to be cumulated and displayed in an easily readable manner. This is the aim of the BIRT integration in GUIdancer.</p> <h2 class="BXHeader" align="left">The existing BIRT reports</h2> <p class="BXHeader" align="left">When we added the BIRT feature, we added some example reports that we imagined we would like to use and that may be useful for customers. New reports can be added by anyone who wants to, but it is nice to have a selection out-of-the box. Of the reports that we offer, there are three that we use very extensively. They have become such an integral part of our project that it’s worth describing how we use them and what they tell us.</p> <h3 class="BXHeader" align="left">Report 1: Comments</h3> <p class="BXHeader" align="left">The report we use the most frequently is the “Comments” report. The first activity our team has every morning is to analyze the test results. As we have in excess of 70 GUIdancer / Jubula Test Suites (functional tests, performance tests, tests for our actions, tests for starting AUTs – all multiplied by a total of 5 platforms!), we wanted something that would help us to report the test results at our stand-up meeting. For any Test Suite that failed overnight, we use the “Edit Comment” function in the Reporting Perspective to add a short description of the reason for the failure to the test run. This also gives us a comparison over time and lets us find patterns in even sporadically occurring errors.</p> <p class="BXHeader" align="left"><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/test_result_summary_view.png" title="Test Result Summary View" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/test_result_summary_view-6b01c06c.png" width="800" height="140" alt="Test Result Summary View"></a></p> <p class="BXHeader" align="left">Once the comments have been entered, the “Comments” report is generated. The report displays a table of all failed Test Suites in a specified period of time (we choose “yesterday”) that don’t have the word “BROKEN” in their name (we have specific “BROKEN” Test Suites containing tests that show known, uncritical bugs). For each Test Suite, the comment is shown in the table. The report is printed and brought to the stand-up meeting so that any necessary action can be discussed.</p> <p class="BXHeader" align="left"><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/comments_report.png" title="Comments report for a day with test environment problems" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/comments_report-2e697407.png" width="400" height="116" alt="Comments report for a day with test environment problems"></a></p> <h3 class="BXHeader" align="left">Report 2: History and Coverage</h3> <p class="BXHeader" align="left">The second report that we use on a regular basis shows the amount of expected Test Steps versus the amount of executed Test Steps as well as the Code Coverage value as three points for each test run. Again, by entering a time frame (we usually take 2 weeks for our weekly “Show&amp;Tell” meeting, but sometimes look over a whole year for a better comparison), we can see how the tests are progressing. The report below shows a period of two months during which new tests are frequently added (the red line), the code coverage improves (the green line), and after an initial period of stability, tests often failed (the blue line). This pattern improved on the day the report was printed however (the last point on the graph).</p> <p class="BXHeader" align="left"><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/progress_with_code_coverage.png" title="Report showing test automation and code coverage progress" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/progress_with_code_coverage-82bbad89.png" width="400" height="263" alt="Report showing test automation and code coverage progress"></a></p> <p class="BXHeader" align="left">This report is one of my favorite ones, because it can potentially show us so much. One the one hand, the amount of expected Test Steps can show how many tests have been added recently, and what sort of an effect it has had on the Code Coverage (I’m looking forward to writing the blog entry on Code Coverage, because it is fascinating to try and decide whether it actually tells us anything, but that’s another story…).</p> <p class="BXHeader" align="left">On the other hand, the amount of executed Test Steps can give us some hints about the type of errors we’ve been having:</p> <ul> <li>drops to almost 0 can either mean that something went terribly wrong at a central place (no database connection could be established for example), or that the error handling is bad (a small error resulted in the whole test stopping)</li> <li>a zig-zag graph is usually a good sign of test environment problems: sometimes the tests run, sometimes they don't. Test environment problems are particularly nasty - nobody really wants to feel responsible for them, yet they can be just as damaging as software errors or errors in the test specification.</li> </ul> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/test_env_problems.png" title="Graph showing test environment problems" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/test_env_problems-2d078792.png" width="400" height="252" alt="Graph showing test environment problems"></a></p> <ul> <li>A flat graph means that nothing has been changed. No new tests, possibly no new versions of the software, and no new fixes. It's important to analyze why - in this example, it was simply because the tester was on holiday and there was no cover for him!</li> </ul> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/tester_on_holiday.png" title="Report showing stagnation because the tester was on holiday" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/tester_on_holiday-eb680bdd.png" width="400" height="284" alt="Report showing stagnation because the tester was on holiday"></a></p> <ul> <li>Small dips in the executed test steps can either mean relatively uncritical errors, or a good error handling.</li> <li>Reports that never manage to get to 100% execution also tell us something about our reaction times. The status quo should always be that we are executing 100% of our expected tests – otherwise we have gaps in our knowledge. This means reacting quickly in the team, and it also means that our tests have to be able to keep up with the pace (I wrote this <a href="http://www.bredex.de/web/index.php/blog_article_de/items/having-the-discipline-to-do-it-right.html" target="_blank">entry </a>on test discipline a while ago). Errors will happen, so there should never be any questions about why 100% isn’t achieved constantly. But we can get a feeling for our general stability if we’re seeing too many drops that take too long to fix.</li> </ul> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/TestProgress_Commented.png" title="Gaps in knowledge due to tets not being executed" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/TestProgress_Commented-1d82da18.png" width="400" height="180" alt="Gaps in knowledge due to tets not being executed"></a></p> <h3 class="BXHeader" align="left">Report 3: Histogram</h3> <p class="BXHeader" align="left">This report gets used to publish our test results on the <a href="http://www.eclipse.org/jubula" target="_blank">Jubula website</a>. It currently has a couple of advantages over the History report – it can show days when tests didn’t run at all (broken build, environment problems), and it also splits the Test Steps into successful / failed / not-executed. Otherwise, it shows a pretty similar view of the world to that of the History except that the colors are nicer :).</p> <p class="BXHeader" align="left">This first diagram shows tests that are generally stable, but no new steps are being added.</p> <p class="BXHeader" align="left"><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/histogram_no_new_tests.png" title="Stable tests but with no new additions" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/histogram_no_new_tests-9e54bc24.png" width="400" height="158" alt="Stable tests but with no new additions"></a></p> <p class="BXHeader" align="left">This diagram, on the other hand, shows a test for a problematic area of the software that our team decided make a priority. We wanted to add more tests and fix any issues they found quickly. This shows the last year. We've steadily been adding more and more tests, making them work by fixing bugs, then adding more tests. As you can see, at the time of writing, we're entering a stage of fixing ;)</p> <p class="BXHeader" align="left"><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/histogram_year_progress.png" title="Progress on a problematic area over a year" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/histogram_year_progress-697cfca6.png" width="800" height="215" alt="Progress on a problematic area over a year"></a></p> <h3 class="BXHeader" align="left">Other reports</h3> <p class="BXHeader" align="left">We tend to add new reports as we realize we need them to support our process. The possibilities are endless – percentage of static waits in the tests and test duration are just two that come to mind. At the moment though, we feel quite at home with the three I’ve described. What we’d like to hear is how you use reports in GUIdancer, if you do already. Contact us with your examples and receive a goodie to say thank you!</p> <h2 class="BXHeader" align="left">Until next time</h2> <p class="BXHeader" align="left">The next entry in this series will be about <a href="http://www.bredex.de/web/index.php/blog_article_en/items/automated-testing-topics-code-coverage-monitoring-for-automated-tests.html" target="_blank">Code Coverage</a>, so stay tuned. In the meantime, happy testing!</p><ul class="tagged"> 	<li>Test automation</li> 	<li>Jubula</li> 	<li>GUIdancer</li> 	<li>Eclipse</li> 	<li>BIRT Report</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/automataed-testing-topics-birt-reporting-for-quality-information-over-time.html</link><pubDate>Thu, 19 Jan 2012 15:38:00 +0100</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/automataed-testing-topics-birt-reporting-for-quality-information-over-time.html</guid></item><item><title>Eclipse Stammtisch on 9th February in Braunschweig</title><description><![CDATA[<table style="width: 800px;" border="0"> <tbody> <tr> <td> <p>Even though it's getting a little late to wish people a Happy New Year, I'd like to do it anyway on behalf of all of us here at BREDEX! We're starting what will hopefully be an exciting year of development, testing and Eclipse events with a regional meet-up (Stammtisch) in our offices on the <strong>9th February</strong> at <strong><strong>7pm</strong></strong>.</p> </td> <td> <p><img title="Eclipse Stammtisch" src="http://www.bredex.de/tl_files/BredexDateien/pictures/events/stammtisch_logo250x130.png" alt="Eclipse Stammtisch" width="250" height="131"></p> </td> </tr> </tbody> </table> <p>We're pleased to welcome Dr. Christian Bartelt from the Technical University in Clausthal as the speaker for the first Stammtisch of the year. He'll be talking about the Cooperative Modelling project that he is involved in at the university. After the talk, we'll head on over to our local restaurant, the <em>Knochenhauer</em>, to chat over some food and a beer or two <img title="Wink" src="http://www.bredex.de/plugins/tinyMCE/plugins/emotions/img/smiley-wink.gif" alt="Wink" border="0"></p> <p>As always, registration and arrival details are on the <a href="http://www.bredex.de/index.php/get_together_en.html">BREDEX website</a>. If you can't make the Stammtisch, you can already start planning your participation in the spring series of Demo Camps - contact us if you'd like to give a demo!</p><ul class="tagged"> 	<li>Modelling</li> 	<li>Eclipse Stammtisch</li> 	<li>Eclipse</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/eclipse-stammtisch-on-9th-february.html</link><pubDate>Mon, 16 Jan 2012 15:28:00 +0100</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/eclipse-stammtisch-on-9th-february.html</guid></item><item><title>Agile Testing Days 2011 in Potsdam</title><description><![CDATA[<p>Last week I was pleased to be able to attend the Agile Testing Days 2011 in Potsdam. If you're working on an agile project or in a testing role, I can only recommend it. It really is the number one opportunity to get together with a great community, gather ideas, help others and relight your testing fire ;)</p> <p>My week started with Gojko Adzic's Specification By Example workshop on the Monday. Gojko has a great range of stories to exemplify the way different teams have adapted the approach to suit them, and I'm sure I wasn't the only one who went away with new ideas of how we can derive scope from goals and ensure that everyone has the same understanding of the system and the new features.</p> <p>The second day for me was very much about test automation. I attended one talk on specification by example through the GUI, and then presented a Jubula demonstration in the afternoon to give some insights into how we fit into agile processes. The feedback from the participants was very useful, and we're talking about incorporating some very high level description possibilities into the tool to make it even more accessible to business users. Watch this space!</p> <p>The second evening was the main social event of the week, giving everyone the chance to chat in a relaxed (and very entertaining!) atmosphere. It was great to see Gojko receive an award, and to chat with people about their processes, problems, solutions and experience. That kind of evening really sums up this kind of event for me - I've come back with a better understanding of people and processes, a list of books I should really get around to reading, and with a renewed enthusiasm for all things testing. I'll be demonstrating that enthusiasm later on this week at the Eurostar conference in Manchester - see you there!</p><ul class="tagged"> 	<li>Successful testing</li> 	<li>Software testing</li> 	<li>Jubula demonstration</li> 	<li>Jubula</li> 	<li>Agile Testing Day</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/agile-testing-days-2011-in-potsdam.html</link><pubDate>Mon, 21 Nov 2011 16:21:00 +0100</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/agile-testing-days-2011-in-potsdam.html</guid></item><item><title>Arbitrary check constraint in Oracle Database!</title><description><![CDATA[<p>Data integrity is a core feature of a database. The promise: It doesn’t only allow structured queries (&gt; SQL) but also represents a logically consistent data-state at any given point in time. Transactions help to bundle changes into atomic operations (though they might take hours to complete). On commit, a range of conditions can be checked to guarantee the integrity of the internal structure.</p> <p>A few relatively simple constraints are already built in:</p> <ul> <li>a column does not contain null values (Not-Null)</li> <li>a column does not contain a value twice (Unique)</li> <li>a set of columns uniquely identifies any row (Primary key)</li> <li>all values of a column point to another table (Foreign key)</li> <li>the values of a row are within a certain range (Check-constraint)</li> </ul> <p>It’s up to the developer to translate business rules into those checks. Most are quite obvious, once you’re familiar with relational modeling. But some rules are more complex, sometimes too complex to be expressed by the simple constraints.</p> <p><strong>Examples:</strong></p> <p>a) Foreign key cycles: Table PUPIL has a foreign key to table CLASS. CLASS has a foreign key back to PUPIL, to nominate one representative as spokesman. How do we guarantee that the spokesman is from that particular CLASS?</p> <p>b) Defaults per category: If there is no explicit CLASS table and the PUPILS only have a VARCHAR column for the class, the spokesman will likely be modeled as a NUMBER(1) column IS_SPOKESMAN. A combined unique constraint over both columns can guarantee that there are never two spokesmen within the same class. But how can we verify that each class has exactly one spokesman?</p> <p>c) 3 dependent tables: ANIMAL, CAT and DOG each with an ID-column. CAT.ID and DOG.ID point to the ANIMAL.ID to represent the inheritance that any DOG or CAT is an ANIMAL. How can we make sure that no ANIMAL is left after deleting a DOG?</p> <p>d) How can we check that CATs and DOGs don’t share the same ANIMAL?</p> <p>As you can see, there are quite a few cases where the built-in database constraints won’t suffice. On the other hand it’s not possible to check everything that comes to mind, as checks slow down any write operation. Most often an additional check is justified either by the potential loss or by the developer time to fix the data later on. Sometimes it’s too late anyway and you have to deal with the corrupted data. But if you're in the situation where you have to write some SQL to fix a problem, it’s a good idea to add a check to ensure that it won’t happen again.</p> <p>For the example problems this might look like:</p> <p>a)</p> <pre class="brush: sql;gutter: false; light: true; fontsize: 100; first-line: 1; ">select * from CLASS c inner join PUPIL s on c.fk_spokesman = s.id where s.fk_class != c.id;</pre> <p>b)</p> <pre class="brush: sql;gutter: false; light: true; fontsize: 100; first-line: 1; ">select * from   (select p.class, sum(p.is_spokesman) as numSpoke from PUPIL p group by p.class)  where numSpoke != 1;</pre> <p>c)</p> <pre class="brush: sql;gutter: false; light: true; fontsize: 100; first-line: 1; ">select * from ANIMAL where ID not in ((select ID from CAT) union all (select ID from DOG))</pre> <p>d)</p> <pre class="brush: sql;gutter: false; light: true; fontsize: 100; first-line: 1; ">(select ID from CAT) intersect (select ID from DOG);</pre> <p>If the necessary columns are covered by indices, the checks will be reasonably fast; fast enough that the end user won’t detect any difference. Just one question remains: Who’s going to run the checks? Answer: A trigger!</p> <pre class="brush: sql;fontsize: 100; first-line: 1; ">create or replace trigger &lt;TRIGGER_NAME&gt;  after insert or update or delete on &lt;TABLE_NAME&gt;  declare i integer; begin &nbsp;&nbsp;&nbsp; select count(*) into i from &lt;CHECK_CONDITIONS&gt;; &nbsp;&nbsp;&nbsp; if i &gt; 0 then &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; RAISE_APPLICATION_ERROR(-20123, i || ‘ rows invalid’); &nbsp;&nbsp;&nbsp; end if; end;</pre> <p>This straightforward approach has one small drawback. For example b) you cannot change the spokesman ever again. If you set the old spokesman to zero first, the check will immediately complain that there has to be at least one. If you set the new spokesman to one first, the check will immediately complain that there cannot be two spokesman for the same class. Both values must be updated in one single update statement. Good luck trying to convince any persistence layer like Hibernate to do this for you!</p> <p>What we need is the trigger to fire only once on commit and not once per update statement. Fortunately we can work around this limitation by introducing an intermediate table:</p> <pre class="brush: sql;gutter: false; light: true; fontsize: 100; first-line: 1; ">Create table RESULTS ( &nbsp;&nbsp;&nbsp; ID integer primary key, &nbsp;&nbsp;&nbsp; VIOLATION integer ); alter table RESULTS add constraint NN_VIOLATION check (violation = 0) deferrable initially deferred;</pre> <p>The trigger would end accordingly:</p> <pre class="brush: sql;gutter: false; light: true; fontsize: 100; first-line: 1; ">&nbsp;&nbsp;&nbsp; ... &nbsp;&nbsp;&nbsp; -- Maintain a single row per Check within the RESULTS table. &nbsp;&nbsp;&nbsp; delete from RESULTS where id = -20123; &nbsp;&nbsp;&nbsp; insert into RESULTS(id, violation) values(-20123, i); end;</pre> <p>A single transaction can update the violation count multiple times. Only the last update before the commit to write back a zero into column violation is crucial. Otherwise the deferred constraint NN_VIOLATION will stop the transaction altogether and thereby prohibit entry of invalid data. The trigger must always run on insert, update and delete. Inconsistency might have been introduced by previous statements that get deleted again before the commit.</p> <p>In addition, multiple triggers on several tables can reuse the same RESULTS table. Sadly almost the same trigger might have to be copied to multiple tables if they are all involved in the check. E.g. example a) must not only listen to changes of CLASS.fk_spokesman but also to changes of PUPIL.fk_class. But the actual check-code can be moved to a function in a package to facilitate its maintenance.</p><ul class="tagged"> 	<li>Data integrity</li> 	<li>SQL</li> 	<li>integrity of the internal structure</li> 	<li>database</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/arbitrary-check-constraint-in-oracle-database.html</link><pubDate>Wed, 16 Nov 2011 14:26:00 +0100</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/arbitrary-check-constraint-in-oracle-database.html</guid></item><item><title>Exciting developments for automated AJAX testing</title><description><![CDATA[<p>After a few weeks of discussing an exciting new collaboration, we're pleased to be able to officially announce that BREDEX and EclipseSource are working together to provide a testing solution for AJAX and RAP applications.</p> <p>We at BREDEX are obviously interested in improving the state of web testing - especially for modern applications that use complex UI components. And as the developers of RAP (Rich Ajax Platform), EclipseSource are the perfect partner for collaboration in this area. Together, we'll be working on a solution to implement the ARIA standard for screen reader component recognition into our products, RAP and GUIdancer, to enable and improve automated testing for RAP and AJAX applications.</p> <p>You can chat to us at Eclipse Con Europe this week in Ludwigsburg for more details, or wait till Eclipse Con in America early next year to see what we've been working on.</p><ul class="tagged"> 	<li>Eclipse</li> 	<li>testing solution</li> 	<li>AJAX</li> 	<li>RAP</li> 	<li>web testing</li> 	<li>GUIdancer</li> 	<li>Eclipse Con Europe</li> 	<li>Eclipse Con</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/exciting-developments-for-automated-ajax-testing.html</link><pubDate>Mon, 31 Oct 2011 11:54:00 +0100</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/exciting-developments-for-automated-ajax-testing.html</guid></item><item><title>Preparing for the Jubula Tutorial at Eclipse Con Europe</title><description><![CDATA[<p>Eclipse Con Europe starts next week, and we're excited to be giving a <a href="http://www.eclipsecon.org/sessions/automated-acceptance-testing-eclipse-applications-jubula" target="_blank">Jubula tutorial</a> on Wednesday morning. We want to use the time we have as effectively as possible, so here is your "homework" to prepare for the tutorial :)</p> <ol> <li>Install the latest version of Jubula (1.1). You can use either the standalone version or Jubula as a feature. Both are downloadable from the <a href="http://www.eclipse.org/jubula/download.php" target="_blank">Jubula Download Page</a>. Please make sure you have 1.1, not 1.0 or 0.9!</li> <li>Download the test projects. <em>EclipseConTest_1.0.xml</em> is the basis project, <em>EclipseConTest_Complete_1.0.xml</em> is how our projects are going to look after the tutorial. You can download the package for the tutorial from <a href="https://s3.amazonaws.com/jubula/JubulaTutorial.zip" target="_blank">here</a>.</li> <li>If you are using Jubula as a feature in your Eclipse Installation, then you will also need to get hold of the example AUT. At the moment, this is only available as a part of the standalone application, so you should also follow the instructions in step 1 .</li> </ol> <p>We will, of course, have some USB sticks available at the tutorial, but we know that you want to get down to the interesting stuff as quickly as possible - so come prepared!</p> <p><strong>Missing the tutorial?</strong></p> <p>If you're missing Eclipse Con Europe, or can't make it to the tutorial, then you might want to join in with the next training course at BREDEX at the end of November (28th-30th). Have a look at the BREDEX <a href="http://www.bredex.de/index.php/program_de.html">website</a> for more information. If you want a more personal approach (like learning how to use Jubula based on your own application instead of on example applications), then you might want to think about a <a href="http://www.bredex.de/index.php/testdesign_bestpractices_training_en.html">workshop</a>.</p> <p><strong>Other Jubula activities at ECE</strong></p> <p><strong></strong>There are a few other talks being held by members of the Jubula team, you can come and chat to us in the exhibition, and we're also holding a Jubula Programming Competition on the Thursday night. <a href="http://pimpyourjubula.eventbrite.com/" target="_blank">Sign up</a> to participate and win great prizes!</p> <p>Looking forward to seeing you all next week!</p><ul class="tagged"> 	<li>Eclipse</li> 	<li>Jubula Tutorial</li> 	<li>Jubula</li> 	<li>Eclipse Con Europe</li> 	<li>Jubula Programming Competition</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/preparing-for-the-jubula-tutorial-at-eclipse-con-europe.html</link><pubDate>Tue, 25 Oct 2011 15:57:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/preparing-for-the-jubula-tutorial-at-eclipse-con-europe.html</guid></item><item><title>Your Packaging Project needs YOU!</title><description><![CDATA[<p><img title="Eclipse for Testers" src="http://www.bredex.de/tl_files/BredexBlog/logos/Eclipse_for_Testers.png" alt="Eclipse for Testers"></p> <p>Since starting at BREDEX earlier this year, one of my roles has been setting up automated smoke tests for the Eclipse Packaging Project. To do this, I’ve been using the Eclipse for Testers package to write Jubula tests.</p> <p><strong>Testing the EPP</strong><br> The Eclipse Packaging Project is a reasonably complex bear in terms of testing. For each build, various dependencies have to be tested for completeness, and the correct integration of their component parts must be checked. In a typical release cycle, that means once per package for each release candidate, multiplied by six for the different platforms. Not a job anyone wants to have to do manually, really. Nevertheless, there is currently no common strategy to automate tests for this work.</p> <p>My job has been to find out whether such a common strategy is possible over the different Eclipse flavors in the EPP, and to implement it as a proof of concept with Jubula.</p> <p><strong>Come to the talk</strong><br> The results have been very promising so far. So promising, even, that I’ll be talking about <a href="http://eclipsecon.org/sessions/testing-eclipse-packaging-project-epp" target="_blank">Testing the EPP</a> at Eclipse Con Europe in November. Basically, there are features common to all packages that can reuse the same Test Cases, features whose testing is only minimally different (so they reuse the same Test Cases but just add a few details), and features that only exist in specific distributions. I’ll be explaining how this is set up with Eclipse for Testers, and be showing what sort of things are being tested.</p> <p><strong>Participate!</strong><br> This is all very well and good, but you’ll have noticed the title of this entry – we’re looking for community involvement in testing the EPP. BREDEX will obviously be continuing to write tests for the Eclipse for Testers package with Eclipse for Testers itself, but it would be a shame to miss out on the chance to get something collaborative going that benefits all the packages. To do this though, we need your help. We need people to define what tests should be performed for each package, to write those tests and to work with us on getting a continuous build and test process set up at Eclipse.</p> <p>So here is our call: come to the <a href="http://eclipsecon.org/sessions/testing-eclipse-packaging-project-epp" target="_blank">talk</a>, join in on the <a href="https://dev.eclipse.org/mailman/listinfo/epp-dev" target="_blank">mailing list</a>, speak to me or one of the members of the <a href="http://www.eclipse.org/jubula" target="_blank">Jubula</a> team at Eclipse Con Europe and let’s get some tests up and running!</p><ul class="tagged"> 	<li>Eclipse</li> 	<li>Software testing</li> 	<li>automated tests</li> 	<li>Eclipse for Testers</li> 	<li>Eclipse Packaging Project</li> 	<li>Jubula</li> 	<li>Release</li> 	<li>Eclipse Con Europe</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/your-packaging-project-needs-you.html</link><pubDate>Thu, 29 Sep 2011 15:36:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/your-packaging-project-needs-you.html</guid></item><item><title>Jubula 1.1 and GUIdancer 5.2 released</title><description><![CDATA[<p>We’re getting into quite a nice rhythm here at BREDEX with the Eclipse releases. On Friday, the Jubula Features were released with Indigo SR1, and today we’ve released the standalone version of Jubula alongside the latest version of GUI<em>dancer</em>.</p> <p><strong>What’s new?</strong><br> This time it’s really worth talking about what’s new for Jubula, because it’s our first release since the first release (…if you see what I mean). So last time, everything was new. This time we have a nice list of shiny new never-before-seen features to present. We’ve added support for testing applications started via Launch Configurations, a new embedded AUT Agent (which is also a part of the Jubula Feature / Eclipse for Testers distribution), and we’ve done some work on the object mapping editor.</p> <p>&nbsp;</p> <p><strong>The crystal ball of component recognition</strong><br> One of the things that’s interested us for a while is being able to see into the future. We’ve put a lot of work into our object recognition so that changes in an application’s GUI or internal hierarchies don’t necessarily lead to components not being found at runtime. However, after various small changes (which may, individually, not bother the object recognition), it could be the case that the next change is the straw that breaks the camel’s back. These are the tricky changes, because they’re the ones testers don’t get told about, or they are the ones that we don’t expect to have an effect. It’s a shame when a test encounters a “component not found” error that could have been avoided, so we’ve added some help to do just that.</p> <p>Now, when you collect a component in Jubula or GUI<em>dancer</em>, a handy colored dot shows you how well this component can be found in the current state of the application. GUI<em>dancer</em> users can also use a new BIRT report to see how easily components were found during each test run. The idea is that we can keep an eye on components whose recognition values are decreasing, and remap them before they actually need to be, and maybe preventing a test error.</p> <p>I wouldn’t go so far as to say that we can predict the future, but these new aspects certainly mean that we have some more information on what the future could look like. Armed with that kind of information, we may be able to prepare ourselves better <img title="Lachend" src="http://www.bredex.de/plugins/tinyMCE/plugins/emotions/img/smiley-laughing.gif" alt="Lachend" border="0"></p> <p><strong>Other new stuff</strong><br> There’s a variety of other nice new features, like a new Test Case replacement wizard, and a clean-up wizard for the object mapping editor. Check out the <a href="http://www.eclipse.org/jubula/new.php" target="_blank">New and Notweworthy</a> section on the Jubula page, or the release notes installed with GUI<em>dancer</em> and Jubula for a full overview.</p> <p>You can get your GUI<em>dancer</em> version 5.2 from the <a href="https://cgi.bredex.de/GUIdancerShop/home.do?lang=en" target="_blank">GUIdancer Shop</a> and Jubula from the <a href="http://www.eclipse.org/jubula/download.php" target="_blank">Eclipse Jubula</a> download page.</p><ul class="tagged"> 	<li>Eclipse</li> 	<li>Jubula</li> 	<li>GUIdancer</li> 	<li>Release</li> 	<li>component recognition</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/jubula-11-and-guidancer-52-released.html</link><pubDate>Mon, 26 Sep 2011 17:52:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/jubula-11-and-guidancer-52-released.html</guid></item><item><title>Knowing what you’re checking – dealing with occasional dialogs</title><description><![CDATA[<p>I was reminded this morning of how important it is to be aware of the assumptions a test makes. In our nightly regression tests, we have the following scenario:</p> <p>- An entry is selected from a menu that can cause a hint dialog to appear.<br> - If the dialog appears, we want to click “proceed”. If it doesn’t appear, we want to carry on regardless.<br> (This is achieved by performing a check – we check that the dialog isn’t there, and deal with it if it is. We use a <em>retry</em> Event Handler to let the test be successful regardless of which variation is required.)</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/usagehint.png" title="usagehint" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/usagehint-15f9e2c9.png" width="300" height="107" alt="usagehint"></a></p> <p>- The test continues</p> <p>Our test was failing on the steps following the action to deal with the dialog. On the screenshot, we could see that the hint dialog was either still there, or had appeared again. However, looking at the execution log for the test up until that point showed that our check for the existence of the dialog had reported that the dialog <em>wasn’t</em> there… This could have been due to a synchronization problem (the check was occurring <em>before</em> the dialog appeared), or it could have been something else.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/check1.png" title="check1" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/check1-02aaeae8.png" width="300" height="40" alt="check1"></a></p> <p>Watching this part of the test and checking manually quickly discounted the synchronization theory though. Feeling rather stumped, I had a look at the test specification – and found the problem.</p> <p>Our check for the non-existence of the dialog used the “proceed” button in the dialog as its clue:</p> <ul> <li>If the “proceed” button is found at runtime, then the dialog is present and the button should be clicked to close the dialog.</li> <li>If the “proceed” button is not there, then the dialog is not there and the button doesn’t need to be clicked.</li> </ul> <p>The problem with this approach is that if the GUI has changed, resulting in a new “proceed” button, then the test will deliver a false positive. Although the dialog was indeed on screen, neither of the buttons in it corresponded to the object we were looking for. Had we tried to click the button, we would have received a “component not found” error and all would have been instantly clear.</p> <p>The solution? I changed the check. Now the test checks whether the window is there based on the title of the window, so we’ll always know for definite if the window is actually there or not. The test execution log now shows that the window is indeed being discovered, that the button (which I also remapped) is clicked, and that the check to make sure that the window is then gone is also successful.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/check2.png" title="check2" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/check2-20b03a44.png" width="300" height="68" alt="check2"></a></p> <p>If the name changes, our test will fail – but I can read the name change from the screenshot, or even be warned in advance that the name change is coming.</p> <p>So this is my new best practice for dealing with occasional dialogs in GUIdancer and Jubula tests: react to the window title, not a component within it <img title="Lachend" src="http://www.bredex.de/plugins/tinyMCE/plugins/emotions/img/smiley-laughing.gif" alt="Lachend" border="0"></p><ul class="tagged"> 	<li>regression test</li> 	<li>automated tests</li> 	<li>Software testing</li> 	<li>Successful testing</li> 	<li>dealing with occasional dialogs</li> 	<li>component recognition</li> 	<li>Jubula</li> 	<li>GUIdancer</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/knowing-what-youre-checking-dealing-with-occasional-dialogs.html</link><pubDate>Tue, 13 Sep 2011 14:08:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/knowing-what-youre-checking-dealing-with-occasional-dialogs.html</guid></item><item><title>Eclipse Testing Day 2011 Round-Up</title><description><![CDATA[<p>Neuss may be a little further away than last year’s Eclipse Testing Day location of Darmstadt, but that didn’t stop our 60 registered participants turning up bright and early for the second Eclipse Testing Day on 7th September.</p> <p>This year we had a wide variety of topics over the course of the day, focusing on two main aspects: process and technology. The mix seemed to be a good one – the feedback forms show that different participants enjoyed different talks, so I feel like we managed to give everyone something to take away from the day, regardless of their interests and background.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/pictures/img_4724.jpg" title="Sponsors" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/img_4724-551927df.jpg" width="300" height="225" alt="Sponsors"></a></p> <p><strong>Talk 1: Requirements to Test Cases – A long and difficult road?</strong></p> <p>The day began with an introduction from the process perspective – Mirko Drobietz from FSS Consulting GmbH gave his talk on requirements, quality and testing. After looking at the types of requirements we should be gathering, he advocated the use of checklists to make sure that requirements are not being forgotten. He also spent some time exemplifying the intricacies of language and their effect on how requirements can be ambiguously interpreted. One very interesting aspect of his talk was his support for paper prototypes – they can be used to clarify requirements without giving the impression that the implementation is production-ready or set in stone (dangers that easily result from programming prototypes). His conclusion was that our tests and quality are only as difficult as our planning (or lack thereof) allow them to be – if we plan well, then the road is much easier.</p> <p><strong>Talk 2: Fokus!MBT and ModelBus – Heading Towards Test Automation</strong></p> <p>Armed with this introduction, we moved straight onto and into the depths of some of the technology available for testing. Max Bureck from the Fraunhofer Institute gave a presentation of Fokus!MBT and ModelBus for generating test cases, attaining traceability between Test Cases and requirements, and early specification testing using models. Fokus!MBT and ModelBus use and integrate with Eclipse technology, and can be used to make the start of testing much earlier, as well automating parts of the test process.</p> <p><strong>Talk 3: UX-Testing – Ergonomics and User Experience</strong></p> <p>After a coffee break, we continued with a very different view on testing, presented by Alexander Klein from BeOne Stuttgart GmbH. His focus was on User Experience and ergonomic aspects of testing – both facets that tend to be overlooked. As well as reiterating what Mirko Drobietz had said about the importance of paper prototyping, he made us aware of ways to perform UX tests. Although there is very little to no automation available for the discipline as yet, there are techniques such as user observation and user stress testing (a concept I find quite amusing and yet ethically questionable at the same time <img title="Zwinkernd" src="http://www.bredex.de/plugins/tinyMCE/plugins/emotions/img/smiley-wink.gif" alt="Zwinkernd" border="0"> ) that can be used to assess the usability of a product.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/pictures/img_4726.jpg" title="UX Talk" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/img_4726-35390d25.jpg" width="300" height="225" alt="UX Talk"></a></p> <p><strong>Test automation – more than just writing Test Cases</strong></p> <p>The final talk before lunch was presented by two students, Jonas Wolniczak and Markus Sagurna, from the Hochschule Bremerhaven, who spoke of their experiences in a project about test automation they had completed for their Bachelor studies. Despite the focus on test automation, the students involved were responsible for all aspects of the project lifecycle including requirement gathering from the customer, implementation, project organisation (Scrum), test environment and the continuous build process. They reported that the project allowed them to see how tests and automation fit into the development process, how easily test aspects (or testing itself) can be forgotten, and the consequences of starting testing later on. I must admit I had a personal interest in this talk, as I knew about the project they were completing – Achim Brede from BREDEX played the role of their customer and they used GUIdancer as their automation tool. It was great to talk to<br> Jonas and Markus afterwards (I was one of many who did!) and hear about how positive and helpful their experiences were doing a full-scale project for the first time.</p> <p><strong>Talk 5: Automated GUI Tests in functional levels</strong></p> <p>Lunch came and went, and we sat down for the second half of the day. The afternoon began with a talk that combined technology and process, given by Patrick Möller from Bitmarck Software GmbH. Their interesting predicament is the collaboration and communication between their field test team and the automation team. They outlined their current process and situation before describing steps they have implemented with the aim of receiving unambiguous regression Test Cases for automation. Their story is very much ongoing, and I will be interested to hear a follow up on it at a future date.</p> <p><strong>Talk 6: Understanding Eclipse-Plug-in Test Suite</strong></p> <p>The talk before the afternoon break was held by Micheala Greiler from the TU Delft. Michaela is person behind the Eclipse Study for testing and her name is highly associated with testing in the Eclipse ecosystem. She presented ETSE – Eclipse Plugin Test Suite Exploration – a tool for analysing which plugins, features, extensions and services are addressed by a test run. The demo showed that the visualisation of such complex content is clearly modeled, and I for one am excited to see how ETSE could be integrated into existing Eclipse test tools (Jubula comes to mind, for example <img title="Zwinkernd" src="http://www.bredex.de/plugins/tinyMCE/plugins/emotions/img/smiley-wink.gif" alt="Zwinkernd" border="0"> ).</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/pictures/img_4742.jpg" title="ETSE Talk" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/img_4742-3c8cc457.jpg" width="300" height="225" alt="ETSE Talk"></a></p> <p><strong>Talk 7: Testing different variants: Testing the Eclipse Packaging Project</strong></p> <p>The penultimate talk of the day was given by Felix Ziesel from BREDEX. He has been working on a proof of concept for automated GUI tests for the Eclipse Packaging Project using Eclipse for Testers. He demonstrated the structures used to create general Test Cases (applicable to all packages), parametrised Test Cases (that require data for specific packages) and individual Test Cases (to test functions only available in single packages). He concluded with a demonstration of an automated test for Eclipse for RCP and RAP developers making use of all three types of Test Cases.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/pictures/img_4748.jpg" title="EPP Talk" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/img_4748-cf47d906.jpg" width="300" height="225" alt="EPP Talk"></a></p> <p><strong>Talk 8: Beyond “Works-On-My-Machine” with PDE Build and Git</strong></p> <p>After starting the day with requirements, it seemed fitting that it should end with a talk about build and release processes. Matthias Kempka from EclipseSource spoke of how to avoid the “Works on my Machine” certificate. His talk was choc full of tips, tricks, tooling, patterns and information sources about getting a build up and running with PDE and Git. He’s written a <a href="http://eclipsesource.com/blogs/2011/09/08/announcing-a-full-featured-pde-build-example-from-a-git-repository/" target="_blank">blog entry</a> on the topic as well if you want to read in more detail.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/graphics/worksonmymachine.png" title="worksonmymachine" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/worksonmymachine-7dc35571.png" width="300" height="224" alt="worksonmymachine"></a></p> <p>After eight talks about testing, it was time for a well-deserved beer and some snacks to finish off the day. We BREDEX guys got back yesterday (Thursday) and immediately began looking at the feedback forms. The messages were generally very good – everyone seemed to find something that was relevant to them, and the breaks were definitely better structured this year. Next year we’ll maybe be looking for some interactive content for the afternoon to have a change of pace after a few talks, so we’ll be excited to hear your ideas for what you’d like to do.</p> <p>This has been a long blog entry, but before I finish up, a final thank you to all involved in the day. From the sponsors and organisers (Eclipse, BREDEX GmbH, Xored, GFB Softwareentwicklung and sepp.med) to the supporting organisations (Testing Experience, ASQF, Professional Tester and EclipseSource), to the Commundo Tagungshotel Neuss and ultimately, to the participants – thanks for a great, interesting and thought-provoking day. The slides will be going up in the near future on the <a href="http://wiki.eclipse.org/Eclipse_Testing_Day_2011" target="_blank">Eclipse Wiki</a>, and we look forward to seeing you next year!</p><ul class="tagged"> 	<li>Eclipse</li> 	<li>Eclipse Testing Day</li> 	<li>Successful testing</li> 	<li>Software testing</li> 	<li>Requirements to Test Cases</li> 	<li>Fokus!MBT</li> 	<li>ModelBus</li> 	<li>UX-Testing</li> 	<li>automated tests</li> 	<li>Test automation</li> 	<li>Automated GUI Tests in functional levels</li> 	<li>Eclipse-Plug-in Test Suite</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/eclipse-testing-day-2011-round-up.html</link><pubDate>Fri, 09 Sep 2011 14:44:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/eclipse-testing-day-2011-round-up.html</guid></item><item><title>Jubula Programming Competition at Eclipse Con Europe 2011!</title><description><![CDATA[<p>It’s party time! Jubula’s just been, erm, “born” and Eclipse has just reached its 10th birthday. What better reason to celebrate with a community programming competition at Eclipse Con Europe? <img title="Zwinkernd" src="http://www.bredex.de/plugins/tinyMCE/plugins/emotions/img/smiley-wink.gif" alt="Zwinkernd" border="0"></p> <p>On Thursday night at ECE, we want to see your extensions, add-ons or integrations for and with Jubula. You’ll have five minutes to demonstrate your work to a community audience, who will vote on their favourite idea at the end. The focus is definitely on innovation and fun – we want to see your ideas and proofs of concept for how you could provide Jubula integration or adaption for your project, process or tool-chain. The first prize will be an AR.Drone, and we’re pleased that the Eclipse Foundation is sponsoring some swanky Eclipse fashion items for runner-up prizes <img title="Lachend" src="http://www.bredex.de/plugins/tinyMCE/plugins/emotions/img/smiley-laughing.gif" alt="Lachend" border="0"></p> <p>Competition slots are limited, so register your entry soon! Details (prizes, ideas, tips, etc.) are on the registration page:<br> <a href="http://pimpyourjubula.eventbrite.com" target="_blank">http://pimpyourjubula.eventbrite.com</a></p> <p>Happy thinking and coding, and we’ll see you in Ludwigsburg!</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/logos/Jubula_Image_small.png" title="Jubula Logo" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/Jubula_Image_small-65d56721.png" width="300" height="337" alt="Jubula Logo"></a></p><ul class="tagged"> 	<li>Jubula</li> 	<li>Eclipse Con Europe</li> 	<li>Eclipse</li> 	<li>Jubula Programming Competition</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/jubula-programming-competition-at-eclipse-con-europe-2011.html</link><pubDate>Thu, 01 Sep 2011 10:22:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/jubula-programming-competition-at-eclipse-con-europe-2011.html</guid></item><item><title>Put your hand up if you don’t test &#40;enough&#41;…</title><description><![CDATA[<p>… or if you’ve ever kicked yourself because a bug made it to production that really shouldn’t have…</p> <p>Most of us know that our testing could be improved. The question is how? Do we need to find the right people, make our processes better, or just use the right tools? Maybe it’s a combination of the three…</p> <p>The best way to find out what has (not) worked for others, and to get concrete ideas for making your testing give you better results, is to come to the <a href="http://wiki.eclipse.org/Eclipse_Testing_Day_2011" target="_blank">Eclipse Testing Day</a> on 7th September in Neuss!</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/logos/TestingDayBanner2011.png" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/TestingDayBanner2011-48c521da.png" width="300" height="120" alt=""></a></p> <p>This is the second year of the Eclipse Testing Day, and we have a program including talks on test automation, testing Eclipse, build processes, requirements, test case design and writing ergonomic software.</p> <p>Our speakers are practitioners, researchers and experts. Come and learn from them, and from the discussions with other participants and sponsors in the breaks.</p> <p>Registration is open at: <a href="http://eclipsetestingday2011.eventbrite.com" target="_blank">http://eclipsetestingday2011.eventbrite.com</a>. Tickets cost 50 € or 40 € for Eclipse and ASQF members. We also have discounted tickets for students.</p> <p>Get signed up for an excellent day of testing talk: Your quality – and your customers – will thank you for it!</p><ul class="tagged"> 	<li>Eclipse</li> 	<li>automated tests</li> 	<li>Errors</li> 	<li>Eclipse Testing Day</li> 	<li>Software testing</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/put-your-hand-up-if-you-dont-test-enough.html</link><pubDate>Fri, 12 Aug 2011 13:25:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/put-your-hand-up-if-you-dont-test-enough.html</guid></item><item><title>Agenda online for Eclipse Testing Day – Register now!</title><description><![CDATA[<p>So, the preparations for the second <a href="http://wiki.eclipse.org/Eclipse_Testing_Day_2011" target="_blank">Eclipse Testing Day</a> are in full swing. It’s only a couple of months away (7th September, in Neuss, to be exact), so now is the time to have a look at the agenda and get signed up to come for an excellent day.</p> <p>This year we have eight talks over the course of the day. Topics range from acceptance testing and usability testing to build processes and test processes (requirements, test case definition…). In short, if you’re looking for a chance to hear from the experts for testing, test processes, and the tools and technology that go hand in hand with them, then you should come along!</p> <p>Alongside the talks you’ll also have the chance to chat to our sponsors and see what they have to offer in terms of testing and process. BREDEX are hugely grateful to all of our co-sponsors and supporters – including the <a href="http://www.eclipse.org" target="_blank">Eclipse Foundation</a>, <a href="http://www.xored.com/" target="_blank">Xored</a>, <a href="http://www.gfb-softwareentwicklung.de" target="_blank">GFB Softwareentwicklungsgesellschaft mbH</a>, <a href="http://www.asqf.de" target="_blank">ASQF</a>, <a href="http://eclipsesource.com/" target="_blank">EclipseSource</a>, <a href="http://www.testingexperience.com/" target="_blank">Testing Experience Magazine</a> and <a href="http://www.professionaltester.com/" target="_blank">Professional Tester</a> Magazine. If you want to be added to this illustrious list, then there are still sponsorship opportunities available.</p> <p>Full details (including the agenda) are available on the Eclipse Wiki at:</p> <p><a href="http://wiki.eclipse.org/Eclipse_Testing_Day_2011" target="_blank">http://wiki.eclipse.org/Eclipse_Testing_Day_2011</a></p> <p>Registration is open now via our <a href="http://eclipsetestingday2011.eventbrite.com/" target="_blank">Eventbrite site</a>. Tickets cost 40€ for members of the Eclipse Foundation or the ASQF, and 50€ for non members. We also have a limited number of student tickets at a reduced price. The ticket cost includes catering on the day.</p> <p>Looking forward to seeing you all there!</p><ul class="tagged"> 	<li>Eclipse Testing Day</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/agenda-online-for-eclipse-testing-day-register-now.html</link><pubDate>Fri, 15 Jul 2011 13:43:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/agenda-online-for-eclipse-testing-day-register-now.html</guid></item><item><title>Guidancer BIRT reports by command line</title><description><![CDATA[<p>One of the additional features that GUIdancer provides compared to Jubula is creating BIRT reports of test progress. There are some default reports provided with the installation but you can customize the reports or create your own. Creating a report using the GUIdancer Integrated Test Environment is straightforward (and you will find it documented in the user manual). As a fan of continuous integration, though, I run my GUIdancer tests overnight with Hudson/Jenkins. But what about my reports? How can I see my BIRT reports without having to open the ITE of a morning?</p> <p>The task for today is “Creating GUIdancer reports by command line” to be run by Hudson.</p> <p>If you are an experienced BIRT (http://www.eclipse.org/birt) user, this might be obvious, but for the others I will describe the steps:</p> <p>The short version is to do the following: download the BIRT runtime, find the GUIdancer report design files and run the report.</p> <p>The long version (tested with Linux and Windows) is below:</p> <h3>1. Detect the BIRT version</h3> <p>Look for org.eclipse.birt.* in the GUIdancer installation directory.<br> I found: guidancer\plugins\org.eclipse.birt.report.viewer_2.6.1.v20100913<br> The BIRT version is 2.6.1.</p> <h3>2. Download the Birt Runtime</h3> <p>Download 2.6.1 from http://download.eclipse.org/birt/downloads/ (look for “Report Engine”).</p> <h3>3. Find the report design files</h3> <p>Look for *.rptdesign file in the GUIdancer installation directory.<br> One of the report definitions I found was guidancer\plugins\com.bredexsw.guidancer.reporting.birt.viewer_5.0.00340\reportsGuidancerHistoryAbsoluteAndCoverage.rptdesign</p> <h3>4. Unzip the runtime and define BIRT_HOME</h3> <p>Set the environment variable BIRT_HOME to runtime directory.</p> <h3>5. Execute genReport script.</h3> <p>For windows:</p> <p>genReport.bat -f PDF -o outputfile.pdf -F insert_path\GuidancerShort.rptdesign</p> <p>Output:</p> <p>SEVERE: Required parameter P_START is not set.</p> <p>You will find a genReport.sh script for unix.</p> <h3>6. Define the report parameters</h3> <p>The report parameters are configured in file GuidancerLIB.rptlibrary.<br> We need</p> <ul> <li>P_START : Report start date in mm/dd/yyyy (format is locale dependent)</li> <li>P_END : Report end date</li> <li>DB_USER: database user</li> <li>DB_PASSWD: database password</li> <li>P_PROJECT: name of GUIdancer Project</li> <li>P_TS_NAME: name of GUIdancer Test Suite</li> </ul> <h3>7. Optional: Deploy jdbc driver</h3> <p>The runtime will need a jdbc driver to connect to the test database.<br> Looking for *jdbc*.jar I found:</p> <ul> <li>postgresql-8.4-701.jdbc3.jar</li> <li>ojdbc14.jar</li> <li>oda-jdbc.jar</li> </ul> <p>I need the Oracle driver and therefore copy ojdbc14.jar to birt-runtime-2_6_1\ReportEngine\plugins\org.eclipse.birt.report.data.oda.jdbc_2.6.1.v20100909\drivers</p> <h3>7. Run the report</h3> <p>Example for PDF:</p> <p>genReport.bat -p “P_START=01.02.2011″ -p “P_END=17.06.2011″ -f PDF -o outputfile.pdf -F GuidancerShort.rptdesign</p> <p>To create a HTML report use -f HTML.</p> <p><img title="Guidancer BIRT Report" src="http://www.bredex.de/tl_files/BredexBlog/screenshots/report.png" alt="Guidancer BIRT Report" width="250" height="161"></p><ul class="tagged"> 	<li>Eclipse</li> 	<li>GUIdancer</li> 	<li>BIRT Report</li> 	<li>Jubula</li> 	<li>automated tests</li> 	<li>Creating GUIdancer reports by command line</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/guidancer-birt-reports-by-command-line.html</link><pubDate>Wed, 13 Jul 2011 15:28:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/guidancer-birt-reports-by-command-line.html</guid></item><item><title>It’s twins! Jubula and GUIdancer released…</title><description><![CDATA[<p>*Drum roll….*</p> <p>The Eclipse Jubula Team is pleased to announce that Jubula version 1.0 is now available! It has been a year of challenges, the occasional surprise and, sometimes, a steep learning curve to get to this place, but the hard work (at BREDEX and at the Eclipse Foundation – thanks guys!) has paid off. Since making the decision to follow the release train, this date has been … erm … looming in the distance looking rather stern. We’re proud to be able to say we made it. Not only that, we also graduated from incubation (hence the 1.0 version) and managed to get GUIdancer 5.1, Jubula’s twin brother, released at the same time.</p> <p>So now it’s hot off the press, you probably want to get your hands on it <img title="Zwinkernd" src="http://www.bredex.de/plugins/tinyMCE/plugins/emotions/img/smiley-wink.gif" alt="Zwinkernd" border="0"></p> <p>You can get hold of Jubula in three ways:</p> <p>1. As a Feature via an Update Site<br> 2. Automatically as a part of the new Eclipse for Testers package<br> 3. As a Standalone Application</p> <p>All links are on the <a href="http://www.eclipse.org/jubula/download.php" target="_blank">Jubula download page</a>.</p> <p>If you’re planning on working with Jubula as a Feature (Eclipse for Testers or via Update Site), then you’ll also need to make sure you’ve got the following:</p> <ul> <li>the AUT Agent (server component) which is necessary to run tests, do object mapping etc. We’re already working on having this as a Feature, but you’ll have to take the AUT Agent from the Standalone application for now.</li> <li>the database drivers (for anyone wanting to work with other databases than the embedded database). These are available via the <a href="http://marketplace.eclipse.org/content/eclipse-jubula-database-drivers" target="_blank">Eclipse Marketplace Client</a>.</li> </ul> <p>Anyone wanting to use Jubula for HTML testing should probably use the standalone for now – the plugins for web testing are not currently available via the Marketplace.</p> <p>Remember you can get in touch with us via <a href="http://www.eclipse.org/projects/project_summary.php?projectid=technology.jubula" target="_blank">mailing lists</a>, Bugzilla and the <a href="http://www.eclipse.org/forums/index.php/f/208/" target="_blank">forum</a> if you’ve got any questions. The next training course at BREDEX is also coming up soon (25th -27th July), so if you fancy getting a thorough introduction to testing with Jubula or GUIdancer, then just drop us a line!</p><ul class="tagged"> 	<li>Standalone Application</li> 	<li>Jubula</li> 	<li>GUIdancer</li> 	<li>Eclipse for Testers</li> 	<li>Eclipse</li> 	<li>Release</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/its-twins-jubula-and-guidancer-released.html</link><pubDate>Wed, 22 Jun 2011 16:09:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/its-twins-jubula-and-guidancer-released.html</guid></item><item><title>Using Jubula to test multiple applications</title><description><![CDATA[<p>In follow up to <a href="http://jmhofer.johoop.de/?p=97" target="_blank">Joachim</a> <a href="http://jmhofer.johoop.de/?p=132" target="_blank">Hofer’s</a> <a href="http://jmhofer.johoop.de/?p=163" target="_blank">series</a> and <a href="http://devnotesblog.wordpress.com/2011/06/14/automating-eclipse-jubula-tests-with-jenkins/" target="_blank">Matt’s</a> post on Jenkins and Jubula, I thought I’d write a short guide with some tips on using Jubula to test multiple applications, or multiple instances of the same application, during one test run.</p> <p>The use case for doing this is more often than not some kind of shared data. Application A enters the data and application B should receive it. If someone is working on the data in application A, then a user in B should only have read privileges etc.</p> <p>Working with multiple applications for tests in Jubula requires the use of two constructs: Test Jobs and the <em>autrun </em> command.</p> <p>&nbsp;</p> <p><strong>Test Jobs – an overview</strong></p> <p>A Test Job is actually nothing more than a collection of Test Suites to be executed after each other. You can create a Test Job via the context-menu in the Test Suite Browser.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/NewTestJob.png" title="Creating a new Test Job" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/NewTestJob-2662ae18.png" width="300" height="176" alt="Creating a new Test Job"></a></p> <p>Once the Test Job has been created, you can open its editor via double-click and add Test Suites to it via Drag&amp;Drop. In the Properties View for each referenced Test Suite, you’ll have to select an AUT ID. This is the unique identifier used to be able to find the correct application at runtime. Every AUT you start has (or receives) an ID – more on IDs later.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/autid_tj.png" title="AUT ID" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/autid_tj-5b499c7f.png" width="300" height="76" alt="AUT ID"></a></p> <p><strong>What types of applications?</strong></p> <p>The first point to look at is whether the application(s) to be tested use the same toolkit (GUI library). If so (i.e. both are RCP applications), then there are no limitations on the interactions you’ll be able to perform in either application.</p> <p>If the applications use different toolkits (i.e. one application is Swing and the other is RCP), then you will have to set the toolkit for the Project to concrete.</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/concrete.png" title="Setting the Project level to concrete" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/concrete-f5b3a219.png" width="300" height="155" alt="Setting the Project level to concrete"></a></p> <p>This will allow you to start and test both applications but will mean that the RCP-specific actions usually offered in the modules for RCP and SWT are not available. You’ll not be able to perform actions such as working with a GEF canvas or tree tables, for example. The “unbound_modules_concrete” actions (which are valid for Swing and RCP, and contain most of the necessary actions to work with applications) are available for writing tests.</p> <p><strong>Getting the applications started</strong></p> <p>Before we get to the various ways of starting applications for testing, a tip in advance: If you will be starting the same application twice, then use two AUT Configurations (they will share an Object Map so you don’t have to repeat the mapping). If the applications you are testing are different, then create a new AUT Definition for the second.</p> <p>Once that’s cleared up, you can choose one of the ways below to make your applications available for testing:</p> <p><em>Testing interactively</em></p> <p>If you plan on starting the test manually (i.e. by pressing play in the Integrated Test Environment), then you can write AUT configurations for each application to be started, and start each application individually via the Start AUT button on the toolbar. The AUT IDs as defined in each AUT configuration can be selected for the individual Test Suites in the Test Job. As all the applications are started manually before the test, you don’t need to worry about starting any other applications via autrun. Having said that, this approach is usually only interesting when you are trying out your tests. Normally, it’s preferable for tests to be started via a CI tool (in our case, one that starts our Test Executor with the necessary parameters).</p> <p><em>Testing in unattended builds via autrun</em></p> <p>If you want to use the Test Executor to run your Test Job, then you’ll need to have some way of making sure that your applications get started. Unlike for Test Suites, the Test Executor cannot (currently) start an AUT from a configuration. The way to start an AUT without requiring an AUT Configuration is to use the <em>autrun </em> command. This is available from Java 5 for applications that can be started by an executable file.</p> <p><em>autrun </em> is a small program that can be found in the autrun folder in the installed (standalone) version of Jubula. Navigate to this folder in a command line client and enter the following:</p> <p><code>autrun.exe<br> –a &lt;the hostname of the agent you want to connect to&gt;<br> -p &lt;the port number for the agent&gt;<br> -w &lt;the working directory for the AUT&gt;<br> -i &lt;the ID that that AUT should receive when it is started&gt;<br> -&lt;TOOLKIT&gt;<br> -e &lt;the executable file&gt;<br> </code></p> <p>The options available for the toolkit parameter are –rcp, -swing and –swt (HTML applications can’t be started using the autrun option). For RCP applications (i.e. Eclipse), you will also need the parameter –k .</p> <p>Bear in mind that AUT IDs are unique throughout the Project. Start your AUT via <em>autrun </em> with a different AUT ID than those already used in the Project.</p> <p>An example <em>autrun </em> command for an Eclipse application could look like this:</p> <p><code>autrun.exe –a localhost -p 60000 -w C:\Programs\Eclipse -i Eclipse_autrun -rcp –k en_US -e Eclipse.exe</code></p> <p>If you are currently connected to the Agent on the port number specified, then you should see an entry in the Running AUTs View in Jubula when the AUT starts. If the AUT is not already declared in the project, then it will be displayed as <em>unknown</em>:</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/unknownID.png" title="unknown ID" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/unknownID-0ace2b32.png" width="300" height="82" alt="unknown ID"></a></p> <p>For any AUT started by <em>autrun</em>, you need to enter an AUT Definition (not a Configuration) in the Project Properties. There is a specific section for AUTs started by <em>autrun </em> and you can open the dialog by selecting the (as yet unknown) AUT and selecting “Create AUT Definition” from the context-menu.</p> <div class="wp-caption aligncenter"><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/createdefinition.png" title="create a definition" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/createdefinition-a2c150a7.png" width="300" height="88" alt="create a definition"></a> <p class="wp-caption-text">Create AUT definition</p> </div> <p>Fill in the necessary details and click OK. Now this AUT ID is known and can be used for this Project. You can select the AUT ID in the Test Job Editor for the necessary Test Suites.</p> <div class="wp-caption aligncenter"><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/AUTID_Select.png" title="AUTID Select" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/AUTID_Select-e9bcbb80.png" width="300" height="58" alt="AUTID Select"></a> <p class="wp-caption-text">Selecting the AUT ID</p> </div> <p>In terms of your test, you can now do the following:</p> <ol> <li>For the first AUT, make sure that it is started from your CI tool as a part of the test setup. This is a prerequisite for the Test Job.</li> <li>For any other AUTs in the test, you have a choice: <ul> <li>You can call autrun from your CI tool for each AUT required</li> <li>Or you can start a small script from within the test itself (via Execute External Command).</li> </ul> </li> </ol> <p>The former option has the benefit that the AUT gets started even if specific parts of the test don’t run, but does mean an overhead in the CI scripts. (You will, however, have to start the first AUT from the CI script, as the Test Job cannot run otherwise). Starting an AUT from within a test is usually lower overhead, but it does introduce a dependency between separate Test Suites in a Test Job. However, the very idea of a Test Job is to link dependent Test Suites, so the dependencies exist anyway.</p> <p><em>Applications that start other applications</em></p> <p>Some use cases have a different set up entirely. The AUT itself causes another AUT to be started. Jubula can deal with this situation based on the following assumptions:</p> <ol> <li>The AUT Agent has been started in Lenient Mode. This allows AUTs that are started by other AUTs to connect to the Agent. You can switch to lenient mode for the AUT Agent via the context-menu on the system tray icon, or you can start the Agent with the parameter <strong>–l</strong></li> <li>The AUT that is started has the same toolkit as the AUT it was started from (e.g. RCP)</li> <li>If multiple AUTs are started in this way, their order for the test is known.</li> </ol> <p>If these three assumptions hold true, then you can define and use AUT IDs for applications started in this way by declaring the newly started AUTs as ID+1 ID+2 etc.</p> <p><strong>Switching between applications</strong></p> <p>Once you’ve:</p> <ul> <li>made sure your applications will all be started</li> <li>declared the AUT IDs they will use in the Project</li> <li>created a Test Job containing the necessary Test Suites</li> <li>selected the correct AUT ID for each Test Suite (this is even necessary when you are testing different instances of the same AUT)</li> </ul> <p>… then you can start your test.</p> <p>What you will notice fairly quickly, however, is that you will most likely need some way of making sure the correct application is in the foreground. Jubula cannot force this, as there are no clear-cut platform- and window-manager-independent commands to do so. It is up to your genius as a tester to make a module that will always bring the correct application to the foreground.</p> <p>As luck would have it, we’ve worked with this construct a few times and have found the following module to be useful:</p> <p><a href="http://www.bredex.de/tl_files/BredexBlog/screenshots/eh.png" title="Module to switch applications" data-lightbox="[multi]"><img src="http://www.bredex.de/system/html/eh-7c3f05f4.png" width="300" height="109" alt="Module to switch applications"></a></p> <p>The Test Case performs a click in the active window – or tries to. If the window that receives the click is not the expected application (based on the AUT ID), then an “Action Error” is thrown. The Event Handler reacts to an Action Error and performs “Alt+Shift+Tab” using “External Key Combination”. This brings the next application to the front. The Event Handler is specified with the Reentry Type “Retry”, meaning that the failed Test Step (the click) is retried once the Event Handler has been executed. If the application that is now in front is the correct one (i.e. has the right ID), then the Test Step “click in active window” is marked as successful. The “Number of Retries” lets you define how often to do this loop. Once the AUT you require is in front, then the test is marked as successful and your actual tests can begin.</p> <p>If you’re working on Mac systems, then it is advisable to alter your settings to make Alt+Shift+Tab switch between your applications in order (Alt+Tab alone switches between two applications, and Mac systems use another key combination by default to tab through a list of applications).</p> <p>This little module lets you have as many windows and AUTs running as you like – you’ll always get to the right one eventually (just make sure the retries are set high enough)!</p> <p><strong>Test results and variables</strong></p> <p>Between each Test Suite, the test results for that Suite are written to the database (no accumulation of results for the whole Job as yet). However, if you want to work with variables between Test Suites, that’s no problem. A value stored as a variable in one Test Suite is available for the rest of the Test Job.</p> <p>Testing multiple applications is one of the more complex use cases to automate. Hopefully these steps will make it easier to get started. At some point I’d like to see support for starting AUTs from configurations for a Test Job and a cumulative test result for the whole Test Job, but the current system already let you start your AUTs and then run and analyze your multi-AUT tests to get those tricky use cases automated.</p><ul class="tagged"> 	<li>Test variables</li> 	<li>Test Suite Browser</li> 	<li>Test Suite</li> 	<li>Test results</li> 	<li>Test Job</li> 	<li>Test Executor</li> 	<li>Switching between applications</li> 	<li>Software testing</li> 	<li>Jubula</li> 	<li>Jubula Tutorial</li> 	<li>Errors</li> 	<li>GUI library</li> 	<li>Eclipse</li> 	<li>automated tests</li> 	<li>AUT Configurations</li> 	<li>Applications that start other applications</li> 	<li>Testing in unattended builds via autrun</li> 	<li>Testing interactively</li> </ul>]]></description><link>http://www.bredex.de/index.php/blog_article_en/items/using-jubula-to-test-multiple-applications.html</link><pubDate>Tue, 21 Jun 2011 13:39:00 +0200</pubDate><guid>http://www.bredex.de/index.php/blog_article_en/items/using-jubula-to-test-multiple-applications.html</guid></item></channel></rss>
