[TFUI] Re: [agile-testing] is Selenium the best choice
George Dinwiddie <lists-HLNzD44B1AikJOqCEYON2AC/[email protected]> Mon, 10 Dec 2007 07:36:48 -0500
| Newsgroups | gmane.comp.programming.test-first-user-interfaces |
|---|---|
| Organization | iDIA Computing, LLC |
| Message-ID | <[email protected]> |
--3cl67YzbfrpORWIyvSwJcjERGMX8n4irRgSbKDd Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Mark Waite wrote: > --- George Dinwiddie <lists-HLNzD44B1AikJOqCEYON2AC/[email protected]> wrote: > >> Ulrich Freyer-Hirtz wrote: >>> As I understood your GUI is a Swing GUI. Therefore you can try >>> jfcUnit (open source). I love to use qfTest from Quality First >>> Software (http://www.qfs.de/) with Swing-GUIs. It's not costly and >>> the money comes back soon through the efftive way of desinging the >>> tests. >> For Swing, I recommend Abbot over jfcUnit (see >> http://blog.gdinwiddie.com/2007/04/25/tdd-and-java-swing/). You can >> also use the Swing wrapper of JBehave >> > (http://blog.gdinwiddie.com/2007/05/09/making-tdd-and-java-swing-behave/). >> It's very nice, but not as full-featured as Abbot. Abbot has a bit >> more learning curve (at least for me) because some techniques weren't >> obvious to me. Be sure to see the comments on those entries. > > I used Abbot to create a regression test for a Swing application > whose user interface was not changing but whose implementation > was changing. While developing the Abbot tests, I often found that > I wanted to "program" something, but because I had initially chosen > to record the tests, I had tests written in XML which were not ready > to be refactored, extended, or changed. > > We left those tests alone, grateful that they continued running. They > continued that way for a year or more. > > When we switched to JDK 6, the tests stopped working. Rather than > dig deeply into the cause of the failure, I decided to try a different > automation tool in a scripting language I prefer. I switched to > Marathon (http://sourceforge.net/projects/marathonman) because it > lets me record scripts, the recorded scripts are written in Python, > and I'm comfortable with Python. Some of my initial observations are > http://blog.360.yahoo.com/blog-4B.afOU8erSVU28a2FPKRNU-?cq=1&p=215 > > The switch was about 2 days worth of work, including recording and > refactoring the tests to keep them simple, and switching our test > infrastructure to run the Marathon based tests instead of the Abbot > based tests. > > Others will probably have different experiences than I had. I know > that Abbot has a programming interface which allows Java programmers > to code their UI tests in Java. I assume that is preferable for Java > programmers in test, since they can use a familiar language. In my > case, Marathon was a better fit because I was more comfortable with > Python than with Java, and I didn't want to get any "closer" to the > Java GUI implementation than was absolutely necessary. > > The switch to Marathon has not been trouble free, but the two > Marathon questions I've asked on the sourceforge forums have been > addressed promptly and very well. > > This is not any statement against Abbot's style of testing, I think > it is a great program, and my first experiences with it a year or > two ago were quite positive. As I worked with it further, I found > that I wanted more programmable tests than I was getting with my > chosen implementation path on Abbot. Mark, that's something I hadn't thought about as I've never used the record/playback form of testing with Abbot. I used it for TDDing the GUI, so the tests were all programmatic. I'm curious, have you tried TDD using a testing framework in a different language than the implementation? I haven't done so, but I can imagine it might cause me difficulty. - George [cross-posted, because I think this might be an interesting question on TFUI, also] -- ---------------------------------------------------------------------- * George Dinwiddie * http://blog.gdinwiddie.com Software Development http://www.idiacomputing.com Consultant and Coach http://www.agilemaryland.org ---------------------------------------------------------------------- --3cl67YzbfrpORWIyvSwJcjERGMX8n4irRgSbKDd Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> </head> <body style="background-color: #ffffff;"> <!--~-|**|PrettyHtmlStartT|**|-~--> <div id="ygrp-mlmsg" style="width:655px; position:relative;"> <div id="ygrp-msg" style="width: 490px; padding: 0 15px 0 0; float:left; z-index:1;"> <!--~-|**|PrettyHtmlEndT|**|-~--> <div id="ygrp-text"> <p>Mark Waite wrote:<br> > --- George Dinwiddie <<a href="mailto:lists%40idiacomputing.com">lists@idiacomputing<wbr>.com</a>> wrote:<br> > <br> >> Ulrich Freyer-Hirtz wrote:<br> >>> As I understood your GUI is a Swing GUI. Therefore you can try<br> >>> jfcUnit (open source). I love to use qfTest from Quality First<br> >>> Software (<a href="http://www.qfs.de/">http://www.qfs.<wbr>de/</a>) with Swing-GUIs. It's not costly and<br> >>> the money comes back soon through the efftive way of desinging the<br> >>> tests.<br> >> For Swing, I recommend Abbot over jfcUnit (see <br> >> <a href="http://blog.gdinwiddie.com/2007/04/25/tdd-and-java-swing/">http://blog.<wbr>gdinwiddie.<wbr>com/2007/<wbr>04/25/tdd-<wbr>and-java-<wbr>swing/</a>). You can <br> >> also use the Swing wrapper of JBehave <br> >><br> > (<a href="http://blog.gdinwiddie.com/2007/05/09/making-tdd-and-java-swing-behave/">http://blog.<wbr>gdinwiddie.<wbr>com/2007/<wbr>05/09/making-<wbr>tdd-and-java-<wbr>swing-behave/</a>).<br> >> It's very nice, but not as full-featured as Abbot. Abbot has a bit <br> >> more learning curve (at least for me) because some techniques weren't <br> >> obvious to me. Be sure to see the comments on those entries.<br> > <br> > I used Abbot to create a regression test for a Swing application<br> > whose user interface was not changing but whose implementation<br> > was changing. While developing the Abbot tests, I often found that <br> > I wanted to "program" something, but because I had initially chosen<br> > to record the tests, I had tests written in XML which were not ready<br> > to be refactored, extended, or changed.<br> > <br> > We left those tests alone, grateful that they continued running. They<br> > continued that way for a year or more.<br> > <br> > When we switched to JDK 6, the tests stopped working. Rather than<br> > dig deeply into the cause of the failure, I decided to try a different<br> > automation tool in a scripting language I prefer. I switched to <br> > Marathon (<a href="http://sourceforge.net/projects/marathonman">http://sourceforge.<wbr>net/projects/<wbr>marathonman</a>) because it<br> > lets me record scripts, the recorded scripts are written in Python,<br> > and I'm comfortable with Python. Some of my initial observations are<br> > <a href="http://blog.360.yahoo.com/blog-4B.afOU8erSVU28a2FPKRNU-?cq=1&p=215">http://blog.<wbr>360.yahoo.<wbr>com/blog-<wbr>4B.afOU8erSVU28a<wbr>2FPKRNU-?<wbr>cq=1&p=215</a><br> > <br> > The switch was about 2 days worth of work, including recording and<br> > refactoring the tests to keep them simple, and switching our test<br> > infrastructure to run the Marathon based tests instead of the Abbot<br> > based tests.<br> > <br> > Others will probably have different experiences than I had. I know<br> > that Abbot has a programming interface which allows Java programmers<br> > to code their UI tests in Java. I assume that is preferable for Java<br> > programmers in test, since they can use a familiar language. In my<br> > case, Marathon was a better fit because I was more comfortable with<br> > Python than with Java, and I didn't want to get any "closer" to the<br> > Java GUI implementation than was absolutely necessary.<br> > <br> > The switch to Marathon has not been trouble free, but the two <br> > Marathon questions I've asked on the sourceforge forums have been<br> > addressed promptly and very well.<br> > <br> > This is not any statement against Abbot's style of testing, I think<br> > it is a great program, and my first experiences with it a year or<br> > two ago were quite positive. As I worked with it further, I found<br> > that I wanted more programmable tests than I was getting with my<br> > chosen implementation path on Abbot.<br> <br> Mark, that's something I hadn't thought about as I've never used the <br> record/playback form of testing with Abbot. I used it for TDDing the <br> GUI, so the tests were all programmatic.<br> <br> I'm curious, have you tried TDD using a testing framework in a different <br> language than the implementation? I haven't done so, but I can imagine <br> it might cause me difficulty.<br> <br> - George<br> <br> [cross-posted, because I think this might be an interesting question on <br> TFUI, also]<br> <br> -- <br> ------------<wbr>---------<wbr>---------<wbr>---------<wbr>---------<wbr>---------<wbr>-<br> * George Dinwiddie * <a href="http://blog.gdinwiddie.com">http://blog.<wbr>gdinwiddie.<wbr>com</a><br> Software Development <a href="http://www.idiacomputing.com">http://www.idiacomp<wbr>uting.com</a><br> Consultant and Coach <a href="http://www.agilemaryland.org">http://www.agilemar<wbr>yland.org</a><br> ------------<wbr>---------<wbr>---------<wbr>---------<wbr>---------<wbr>---------<wbr>-<br> <br> </p> </div> <!--~-|**|PrettyHtmlStart|**|-~--> <span width="1" style="color: white;">__._,_.___</span> <!-- Start the section with Message In topic --> <div id="ygrp-actbar"> <span class="left"> <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/message/1006;_ylc=X3oDMTM0MGllY2V1BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BG1zZ0lkAzEwMDYEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMTk3MjkwMjE5BHRwY0lkAzEwMDY-"> Messages in this topic </a> (<span class="bld">1</span>) </span> <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/post;_ylc=X3oDMTJwaWplZG1sBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BG1zZ0lkAzEwMDYEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMTk3MjkwMjE5?act=reply&messageNum=1006"> <span class="bld"> Reply </span> (via web post) </a> | <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/post;_ylc=X3oDMTJlbHM2cGppBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTE5NzI5MDIxOQ--" class="bld"> Start a new topic </a> </div> <!------- Start Nav Bar ------> <!-- |**|begin egp html banner|**| --> <div id="ygrp-vitnav"> <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/messages;_ylc=X3oDMTJldDVoNWIwBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA21zZ3MEc3RpbWUDMTE5NzI5MDIxOQ--">Messages</a> | <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/files;_ylc=X3oDMTJmODEyNm5iBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2ZpbGVzBHN0aW1lAzExOTcyOTAyMTk-">Files</a> | <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/photos;_ylc=X3oDMTJlOWY3MGYxBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA3Bob3QEc3RpbWUDMTE5NzI5MDIxOQ--">Photos</a> | <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/links;_ylc=X3oDMTJmbHIxZnN1BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2xpbmtzBHN0aW1lAzExOTcyOTAyMTk-">Links</a> | <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/database;_ylc=X3oDMTJjMm05MDRpBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2RiBHN0aW1lAzExOTcyOTAyMTk-">Database</a> | <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/polls;_ylc=X3oDMTJmYXJuNmJvBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA3BvbGxzBHN0aW1lAzExOTcyOTAyMTk-">Polls</a> | <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/members;_ylc=X3oDMTJlZ3FucWF2BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA21icnMEc3RpbWUDMTE5NzI5MDIxOQ--">Members</a> | <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/calendar;_ylc=X3oDMTJkNXNxams5BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2NhbARzdGltZQMxMTk3MjkwMjE5">Calendar</a> </div> <!-- |**|end egp html banner|**| --> <div id="ygrp-grft"> </div> <div id="ygrp-mkp"> <div id="hd">MARKETPLACE</div> <div id="ads"> <div class="ad"> <hr size=1 noshade><a href="http://us.ard.yahoo.com/SIG=12mtfi8bd/M=571476.11873916.12370328.11509771/D=groups/S=1705007207:MKP1/Y=YAHOO/EXP=1197297419/A=5086951/R=0/SIG=12k0vbbc9/*http://college-finder.net/index.cfm?key=yahoo_colfngrouptxt_11873916&c=CA152932587">Earn your degree in as few as 2 years - Advance your career with an AS, BS, MS degree</a> - College-Finder.net. </div> </div> </div> <!-- yahoo logo --> <!-- |**|begin egp html banner|**| --> <div id="ygrp-ft"> <a href="http://groups.yahoo.com/;_ylc=X3oDMTJkMWpkZTBwBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMTk3MjkwMjE5"> <img src="http://us.i1.yimg.com/us.yimg.com/i/yg/img/logo/ma_grp_160.gif" height="15" width="106" border="0" alt="Yahoo! Groups"></a> <br> <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/join;_ylc=X3oDMTJmaWsxODdoBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA3N0bmdzBHN0aW1lAzExOTcyOTAyMTk-">Change settings via the Web</a> (Yahoo! ID required) <br> Change settings via email: <a href="mailto:TestFirstUserInterfaces-digest-hHKSG33TihhbjbujkaE4pw@public.gmane.org?subject=Email Delivery: Digest">Switch delivery to Daily Digest</a> | <a href = "mailto:TestFirstUserInterfaces-traditional-hHKSG33TihhbjbujkaE4pw@public.gmane.org?subject=Change Delivery Format: Traditional">Switch format to Traditional</a> <br> <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces;_ylc=X3oDMTJkdm5qdHFiBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2hwZgRzdGltZQMxMTk3MjkwMjE5"> Visit Your Group </a> | <a href="http://docs.yahoo.com/info/terms/"> Yahoo! Groups Terms of Use </a> | <a href="mailto:TestFirstUserInterfaces-unsubscribe-hHKSG33TihhbjbujkaE4pw@public.gmane.org?subject="> Unsubscribe </a> </div> <!-- |**|end egp html banner|**| --> </div> <!-- ygrp-msg --> <!-- Sponsor --> <!-- |**|begin egp html banner|**| --> <div id="ygrp-sponsor" style="width:140px;float: left; clear: none; margin-left: 5px; background:white; margin-bottom:25px ;position:absolute; top:0; right: 0;"> <!-- Network content --> <!-- Start vitality --> <div id="ygrp-vital"> <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces;_ylc=X3oDMTJlYjNsZnNmBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTE5NzI5MDIxOQ--"> Visit Your Group </a> </div> <!-- Network content --> <div id="nc"> <div class="ad"> <div id="hd1">Yahoo! Finance</div> <p><a href="http://us.ard.yahoo.com/SIG=12j4gip0e/M=493064.10729649.11333340.8674578/D=groups/S=1705007207:NC/Y=YAHOO/EXP=1197297419/A=4507179/R=0/SIG=12de4rskk/*http://us.rd.yahoo.com/evt=50284/*http://finance.yahoo.com/personal-finance">It's Now Personal</a></p> <p>Guides, news,</p> <p>advice & more.</p> </div> <div class="ad"> <div id="hd1">Cat Fanatics</div> <p><a href="http://us.ard.yahoo.com/SIG=12jdcjqr6/M=493064.11292562.11840176.8674578/D=groups/S=1705007207:NC/Y=YAHOO/EXP=1197297419/A=4836040/R=0/SIG=11olbte0b/*http://advision.webevents.yahoo.com/catzone/index.html">on Yahoo! Groups</a></p> <p>Find people who are</p> <p>crazy about cats.</p> </div> <div class="ad"> <div id="hd1">Yahoo! Groups</div> <p><a href="http://us.ard.yahoo.com/SIG=12kgh30ck/M=493064.11675218.12153349.11323196/D=groups/S=1705007207:NC/Y=YAHOO/EXP=1197297419/A=4840958/R=0/SIG=11l77jq6u/*http://health.groups.yahoo.com/group/specialKgroup/">Special K Challenge</a></p> <p>Learn how others are</p> <p>shedding the pounds.</p> </div> </div> </div> <!-- |**|end egp html banner|**| --> <div style="clear:both; color: #FFF; font-size:1px;">.</div> </div> <img src="http://geo.yahoo.com/serv?s=97359714/grpId=8744704/grpspId=1705007207/msgId=1006/stime=1197290219/nc1=4507179/nc2=4836040/nc3=4840958" width="1" height="1"> <br> <span style="color: white;">__,_._,___</span> <!--~-|**|PrettyHtmlEnd|**|-~--> </body> <!--~-|**|PrettyHtmlStart|**|-~--> <head> <style type="text/css"> <!-- #ygrp-mkp{ border: 1px solid #d8d8d8; font-family: Arial; margin: 14px 0px; padding: 0px 14px; } #ygrp-mkp hr{ border: 1px solid #d8d8d8; } #ygrp-mkp #hd{ color: #628c2a; font-size: 85%; font-weight: bold; line-height: 122%; margin: 10px 0px; } #ygrp-mkp #ads{ margin-bottom: 10px; } #ygrp-mkp .ad{ padding: 0 0; } #ygrp-mkp .ad a{ color: #0000ff; text-decoration: none; } --> </style> </head> <head> <style type="text/css"> <!-- #ygrp-sponsor #ygrp-lc{ font-family: Arial; } #ygrp-sponsor #ygrp-lc #hd{ margin: 10px 0px; font-weight: bold; font-size: 78%; line-height: 122%; } #ygrp-sponsor #ygrp-lc .ad{ margin-bottom: 10px; padding: 0 0; } --> </style> </head> <head> <style type="text/css"> <!-- #ygrp-mlmsg {font-size:13px; font-family: arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;} #ygrp-mlmsg table {font-size:inherit;font:100%;} #ygrp-mlmsg select, input, textarea {font:99% arial,helvetica,clean,sans-serif;} #ygrp-mlmsg pre, code {font:115% monospace;*font-size:100%;} #ygrp-mlmsg * {line-height:1.22em;} #ygrp-text{ font-family: Georgia; } #ygrp-text p{ margin: 0 0 1em 0; } #ygrp-tpmsgs{ font-family: Arial; clear: both; } #ygrp-vitnav{ padding-top: 10px; font-family: Verdana; font-size: 77%; margin: 0; } #ygrp-vitnav a{ padding: 0 1px; } #ygrp-actbar{ clear: both; margin: 25px 0; white-space:nowrap; color: #666; text-align: right; } #ygrp-actbar .left{ float: left; white-space:nowrap; } .bld{font-weight:bold;} #ygrp-grft{ font-family: Verdana; font-size: 77%; padding: 15px 0; } #ygrp-ft{ font-family: verdana; font-size: 77%; border-top: 1px solid #666; padding: 5px 0; } #ygrp-mlmsg #logo{ padding-bottom: 10px; } #ygrp-vital{ background-color: #e0ecee; margin-bottom: 20px; padding: 2px 0 8px 8px; } #ygrp-vital #vithd{ font-size: 77%; font-family: Verdana; font-weight: bold; color: #333; text-transform: uppercase; } #ygrp-vital ul{ padding: 0; margin: 2px 0; } #ygrp-vital ul li{ list-style-type: none; clear: both; border: 1px solid #e0ecee; } #ygrp-vital ul li .ct{ font-weight: bold; color: #ff7900; float: right; width: 2em; text-align:right; padding-right: .5em; } #ygrp-vital ul li .cat{ font-weight: bold; } #ygrp-vital a{ text-decoration: none; } #ygrp-vital a:hover{ text-decoration: underline; } #ygrp-sponsor #hd{ color: #999; font-size: 77%; } #ygrp-sponsor #ov{ padding: 6px 13px; background-color: #e0ecee; margin-bottom: 20px; } #ygrp-sponsor #ov ul{ padding: 0 0 0 8px; margin: 0; } #ygrp-sponsor #ov li{ list-style-type: square; padding: 6px 0; font-size: 77%; } #ygrp-sponsor #ov li a{ text-decoration: none; font-size: 130%; } #ygrp-sponsor #nc{ background-color: #eee; margin-bottom: 20px; padding: 0 8px; } #ygrp-sponsor .ad{ padding: 8px 0; } #ygrp-sponsor .ad #hd1{ font-family: Arial; font-weight: bold; color: #628c2a; font-size: 100%; line-height: 122%; } #ygrp-sponsor .ad a{ text-decoration: none; } #ygrp-sponsor .ad a:hover{ text-decoration: underline; } #ygrp-sponsor .ad p{ margin: 0; } o{font-size: 0; } .MsoNormal{ margin: 0 0 0 0; } #ygrp-text tt{ font-size: 120%; } blockquote{margin: 0 0 0 4px;} .replbq{margin:4} --> </style> </head> <!--~-|**|PrettyHtmlEnd|**|-~--> </html><!--End group email --> --3cl67YzbfrpORWIyvSwJcjERGMX8n4irRgSbKDd--