[TFUI] [ANN:] Approval Testing Talk in San Diego - Nov 6th @ 6:00PM

<[email protected]> Tue, 4 Nov 2008 12:07:12 -0800
Newsgroups gmane.comp.programming.test-first-user-interfaces
Message-ID <[email protected]>
--eeFNcEzkbfvDqFpOG5JECImg8goS1KaJNFLXx4o
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

This month at Extreme Programming San Diego (XPSD), Dan and Llewellyn will
teach us how to write Approval Tests. The meeting will take place at
Cardinal Health at 6pm on Thursday, November 6th.

** Approval Based Tests **

Write your code, run it, see that it works. This is a familiar process to
all programmers. The addition of 1 line of code can now make that a
repeatable automated regression test!

Well tested code has been shown, over and over, to improve the quality and
maintainability of software. Yet most projects are not well tested. Why is
this? Too often programmers feel that testing imposes too high of an
overhead on writing code.

In this talk, our goal is to make it easier and faster for you to write unit
tests.

We will show how using approval tests, in addition to asserts, will great
increase not only the ease and speed of writing a test, but the completeness
and maintainability of those tests; bridging the gap between people who
don't write tests, and test driven developers.

"I feel like I have to write my code twice." Right now, unit tests impose a
difficult step upfront of knowing exactly what you want. Asserting this
outcome then becomes cumbersome the more robust & detailed it is. After
that, maintaining the test becomes equally cumbersome. Because of this,
tests either get written, or get discarded, leaving untested code which is
fragile, error prone and leads to the nightmare of maintenance so many
experience.

After this talk, you should find yourself spending less time writing tests,
yet having better tested code, a proven way to increase successfulness of
your software.

"After I heard Dan & Llewellyn talk about approval tests, I tried it out. in
the first 4 minutes I was testing my code" - C. Monkey

"I find myself writing more code just so I can write more approval tests!" -
Script Kiddie

"All my life I'd sought approval from other developers, now I can approve on
my own" - Noself E. Steam

"With all the time I saved, I actually learned to talk to women" - Anonymous


The meeting will be held at Cardinal Health San Diego Headquarters (
http://xpsd.org/CardinalHealthDirections ) from 6-7:30 PM on Thursday
November 6th.


http://xpsd.org
http://llewellynfalco.blogspot.com/2008/10/approval-tests.html 


--eeFNcEzkbfvDqFpOG5JECImg8goS1KaJNFLXx4o
Content-Type: text/html; charset=US-ASCII
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: 470px; margin:0; padding:0 25px 0 0; float:left; z-index:1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->

    <div id="ygrp-text">
            <p>This month at Extreme Programming San Diego (XPSD), Dan and Llewellyn will<br>
teach us how to write Approval Tests. The meeting will take place at<br>
Cardinal Health at 6pm on Thursday, November 6th.<br>
<br>
** Approval Based Tests **<br>
<br>
Write your code, run it, see that it works. This is a familiar process to<br>
all programmers. The addition of 1 line of code can now make that a<br>
repeatable automated regression test!<br>
<br>
Well tested code has been shown, over and over, to improve the quality and<br>
maintainability of software. Yet most projects are not well tested. Why is<br>
this? Too often programmers feel that testing imposes too high of an<br>
overhead on writing code.<br>
<br>
In this talk, our goal is to make it easier and faster for you to write unit<br>
tests.<br>
<br>
We will show how using approval tests, in addition to asserts, will great<br>
increase not only the ease and speed of writing a test, but the completeness<br>
and maintainability of those tests; bridging the gap between people who<br>
don't write tests, and test driven developers.<br>
<br>
&quot;I feel like I have to write my code twice.&quot; Right now, unit tests impose a<br>
difficult step upfront of knowing exactly what you want. Asserting this<br>
outcome then becomes cumbersome the more robust &amp; detailed it is. After<br>
that, maintaining the test becomes equally cumbersome. Because of this,<br>
tests either get written, or get discarded, leaving untested code which is<br>
fragile, error prone and leads to the nightmare of maintenance so many<br>
experience.<br>
<br>
After this talk, you should find yourself spending less time writing tests,<br>
yet having better tested code, a proven way to increase successfulness of<br>
your software.<br>
<br>
&quot;After I heard Dan &amp; Llewellyn talk about approval tests, I tried it out. in<br>
the first 4 minutes I was testing my code&quot; - C. Monkey<br>
<br>
&quot;I find myself writing more code just so I can write more approval tests!&quot; -<br>
Script Kiddie<br>
<br>
&quot;All my life I'd sought approval from other developers, now I can approve on<br>
my own&quot; - Noself E. Steam<br>
<br>
&quot;With all the time I saved, I actually learned to talk to women&quot; - Anonymous<br>
<br>
The meeting will be held at Cardinal Health San Diego Headquarters (<br>
<a href="http://xpsd.org/CardinalHealthDirections">http://xpsd.<wbr>org/CardinalHeal<wbr>thDirections</a> ) from 6-7:30 PM on Thursday<br>
November 6th.<br>
<br>
<a href="http://xpsd.org">http://xpsd.<wbr>org</a><br>
<a href="http://llewellynfalco.blogspot.com/2008/10/approval-tests.html">http://llewellynfal<wbr>co.blogspot.<wbr>com/2008/<wbr>10/approval-<wbr>tests.html</a> <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/1020;_ylc=X3oDMTM0Zm9wdDZiBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BG1zZ0lkAzEwMjAEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMjI1ODI5Mjk5BHRwY0lkAzEwMjA-">
            Messages in this topic          </a> (<span class="bld">1</span>)
        </span>
        <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/post;_ylc=X3oDMTJwc3YxY3VqBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BG1zZ0lkAzEwMjAEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMjI1ODI5Mjk5?act=reply&messageNum=1020">
          <span class="bld">
            Reply          </span> (via web post)
        </a>  | 
        <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/post;_ylc=X3oDMTJlbWZvMjQ1BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTIyNTgyOTI5OQ--" 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=X3oDMTJlMTlvbzVhBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA21zZ3MEc3RpbWUDMTIyNTgyOTI5OQ--">Messages</a>  
            |    <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/files;_ylc=X3oDMTJmbTFsZHB1BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2ZpbGVzBHN0aW1lAzEyMjU4MjkyOTk-">Files</a>  
            |    <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/photos;_ylc=X3oDMTJlaTg5dXJrBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA3Bob3QEc3RpbWUDMTIyNTgyOTI5OQ--">Photos</a>  
            |    <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/links;_ylc=X3oDMTJmNWJhcGVuBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2xpbmtzBHN0aW1lAzEyMjU4MjkyOTk-">Links</a>  
            |    <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/database;_ylc=X3oDMTJjaW04cWI0BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2RiBHN0aW1lAzEyMjU4MjkyOTk-">Database</a>  
            |    <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/polls;_ylc=X3oDMTJmbnZ1OWNsBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA3BvbGxzBHN0aW1lAzEyMjU4MjkyOTk-">Polls</a>  
            |    <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/members;_ylc=X3oDMTJlcGExZTF2BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA21icnMEc3RpbWUDMTIyNTgyOTI5OQ--">Members</a>  
            |    <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/calendar;_ylc=X3oDMTJkaXZmdjlsBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2NhbARzdGltZQMxMjI1ODI5Mjk5">Calendar</a>  
    </div>  
    <!-- |**|end egp html banner|**| -->

                <div id="ygrp-grft">
                  

              </div>
    
    <!-- yahoo logo -->
    <!-- |**|begin egp html banner|**| -->
    <div id="ygrp-ft">
      <a href="http://groups.yahoo.com/;_ylc=X3oDMTJkODZ0Y2Z1BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMjI1ODI5Mjk5">
      <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=X3oDMTJmNDg0NjlpBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA3N0bmdzBHN0aW1lAzEyMjU4MjkyOTk-">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=X3oDMTJkOTF0cnMxBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2hwZgRzdGltZQMxMjI1ODI5Mjk5">
        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:160px; float:right; clear:none; margin:0 0 25px 0; background:white;">
    <!-- Network content -->
    
<!-- Start Recommendations -->
<div id="ygrp-reco">
     </div>
<!-- End Recommendations -->

	    <!-- Start vitality -->
	    <div id="ygrp-vital">
	      		<div id="vithd">Recent Activity</div>
		<ul style="list-style-type:none; padding: 0; margin: 2px 0;">
		    
		    
		    
		    
		    
		    
		</ul>
	      	      <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces;_ylc=X3oDMTJlNWdyYjYwBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTIyNTgyOTI5OQ--">
		Visit Your Group	      </a>
	    </div> 
	    	    	      
	    <!-- Network content -->
	    	          <div id="nc">
              <div class="ad">
                        <div id="hd1">Give Back</div>
  <p><a href="http://us.lrd.yahoo.com/_ylc=X3oDMTJtZTFnMmtuBF9TAzk3MzU5NzE0BF9wAzEEZ3JwSWQDODc0NDcwNARncnBzcElkAzE3MDUwMDcyMDcEc2VjA25jbW9kBHNsawNicmFuZARzdGltZQMxMjI1ODI5Mjk5;_ylg=1/SIG=11314uv3k/**http%3A//brand.yahoo.com/forgood">Yahoo! for Good</a></p>
  <p>Get inspired</p>
  <p>by a good cause.</p>
                  </div>
                    <div class="ad">
                        <div id="hd1">Y! Toolbar</div>
  <p><a href="http://us.lrd.yahoo.com/_ylc=X3oDMTJvcnR0MmE2BF9TAzk3MzU5NzE0BF9wAzIEZ3JwSWQDODc0NDcwNARncnBzcElkAzE3MDUwMDcyMDcEc2VjA25jbW9kBHNsawN0b29sYmFyBHN0aW1lAzEyMjU4MjkyOTk-;_ylg=1/SIG=11c6dvmk9/**http%3A//toolbar.yahoo.com/%3F.cpdl=ygrps">Get it Free!</a></p>
  <p>easy 1-click access</p>
  <p>to your groups.</p>
                  </div>
                    <div class="ad">
                        <div id="hd1">Yahoo! Groups</div>
  <p><a href="http://groups.yahoo.com/start;_ylc=X3oDMTJvNm1hbzY1BF9TAzk3MzU5NzE0BF9wAzMEZ3JwSWQDODc0NDcwNARncnBzcElkAzE3MDUwMDcyMDcEc2VjA25jbW9kBHNsawNncm91cHMyBHN0aW1lAzEyMjU4MjkyOTk-">Start a group</a></p>
  <p>in 3 easy steps.</p>
  <p>Connect with others.</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=1020/stime=1225829299/nc1=1/nc2=2/nc3=3" 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-reco {
	margin-bottom: 20px;
	padding: 0px;
	}
	#ygrp-reco #reco-head {
		font-weight: bold;
		color: #ff7900;
	}

	#reco-grpname{
        font-weight: bold;
        margin-top: 10px;
  	}
	#reco-category{
        	font-size: 77%;
	}
	#reco-desc{
        	font-size: 77%;
	}

	#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 -->


--eeFNcEzkbfvDqFpOG5JECImg8goS1KaJNFLXx4o--