[TFUI] Re: Unit testing cost
Phlip <[email protected]> Thu, 12 Mar 2009 05:37:33 -0700
| Newsgroups | gmane.comp.programming.test-first-user-interfaces |
|---|---|
| Message-ID | <[email protected]> |
--54SiNfDiQCtYesggcq3Yf3cqnPNmoxkuqYy4e5U
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Hendrik Belitz wrote:
> Although I agree with that, I think that unit tests are not the answer
> to detect UI faults. Indeed, Integration and acceptance tests provide
> such capabilities in a much more usable manner, without significantly
> loosing test coverage.
Tests also help you go faster, not just detect faults. Consider this example:
<div style='color: red'>
<div style='background-color: green'>
To assert that your resulting color scheme is nauseating, you might just test
you have a red div followed by one with a green background.
You do not render that - physically, or virtually - then assert the contained
text appears red-on-green. You just assert you have two divs.
Now suppose a careless programmer changed their order:
<div style='background-color: green'>
<div style='color: red'>
The browser would render that correctly, and the user would see no bug. But the
test would fail - it is "hyperactive" - and that is a Good Thing. The test
allowed programmers to rapidly develop, knowing that if any test fails
unexpectedly they have the option to revert, without even debugging to figure
out _why_ the tests failed.
You can't go fast unless your car has brakes and your road has traffic lights!
--
Phlip
http://www.zeroplayer.com/
--54SiNfDiQCtYesggcq3Yf3cqnPNmoxkuqYy4e5U
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: 470px; margin:0; padding:0 25px 0 0; float:left; z-index:1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->
<div id="ygrp-text">
<p>Hendrik Belitz wrote:<br>
<br>
> Although I agree with that, I think that unit tests are not the answer<br>
> to detect UI faults. Indeed, Integration and acceptance tests provide<br>
> such capabilities in a much more usable manner, without significantly<br>
> loosing test coverage.<br>
<br>
Tests also help you go faster, not just detect faults. Consider this example:<br>
<br>
<div style='color: red'><br>
<div style='background-<wbr>color: green'><br>
<br>
To assert that your resulting color scheme is nauseating, you might just test <br>
you have a red div followed by one with a green background.<br>
<br>
You do not render that - physically, or virtually - then assert the contained <br>
text appears red-on-green. You just assert you have two divs.<br>
<br>
Now suppose a careless programmer changed their order:<br>
<br>
<div style='background-<wbr>color: green'><br>
<div style='color: red'><br>
<br>
The browser would render that correctly, and the user would see no bug. But the <br>
test would fail - it is "hyperactive" - and that is a Good Thing. The test <br>
allowed programmers to rapidly develop, knowing that if any test fails <br>
unexpectedly they have the option to revert, without even debugging to figure <br>
out _why_ the tests failed.<br>
<br>
You can't go fast unless your car has brakes and your road has traffic lights!<br>
<br>
-- <br>
Phlip<br>
<a href="http://www.zeroplayer.com/">http://www.zeroplay<wbr>er.com/</a><br>
</p>
</div>
<!--~-|**|PrettyHtmlStart|**|-~-->
<div width="1" style="color: white; clear: both;">__._,_.___</div>
<!-- Start the section with Message In topic -->
<div id="ygrp-actbar" style="clear: both; margini-bottom: 25px; white-space:nowrap; color: #666; text-align: right;">
<span class="left" style="float: left; white-space:nowrap;">
<a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/message/1040;_ylc=X3oDMTM0dGllYzZ1BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BG1zZ0lkAzEwNDAEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMjM2ODYxNDc1BHRwY0lkAzEwNDA-">
Messages in this topic </a> (<span class="bld" style="font-weight:bold;">1</span>)
</span>
<a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/post;_ylc=X3oDMTJwajlna203BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BG1zZ0lkAzEwNDAEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMjM2ODYxNDc1?act=reply&messageNum=1040">
<span class="bld" style="font-weight:bold;">
Reply </span> (via web post)
</a> |
<a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/post;_ylc=X3oDMTJlMjlpYzZyBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTIzNjg2MTQ3NQ--" class="bld" style="font-weight:bold;">
Start a new topic </a>
</div>
<!------- Start Nav Bar ------>
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vitnav" style="padding-top: 10px; font-family: Verdana; font-size: 77%; margin: 0;">
<a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/messages;_ylc=X3oDMTJlaXNkcjI5BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA21zZ3MEc3RpbWUDMTIzNjg2MTQ3NQ--">Messages</a>
| <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/files;_ylc=X3oDMTJmMmg4bW4wBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2ZpbGVzBHN0aW1lAzEyMzY4NjE0NzU-">Files</a>
| <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/photos;_ylc=X3oDMTJlbjJpbDJkBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA3Bob3QEc3RpbWUDMTIzNjg2MTQ3NQ--">Photos</a>
| <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/links;_ylc=X3oDMTJma2JrcmRuBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2xpbmtzBHN0aW1lAzEyMzY4NjE0NzU-">Links</a>
| <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/database;_ylc=X3oDMTJjOTkzM2o1BF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2RiBHN0aW1lAzEyMzY4NjE0NzU-">Database</a>
| <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/polls;_ylc=X3oDMTJmM2Q4bWNiBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA3BvbGxzBHN0aW1lAzEyMzY4NjE0NzU-">Polls</a>
| <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/members;_ylc=X3oDMTJlMWcwaGtpBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA21icnMEc3RpbWUDMTIzNjg2MTQ3NQ--">Members</a>
| <a href="http://groups.yahoo.com/group/TestFirstUserInterfaces/calendar;_ylc=X3oDMTJkbmo3NzdqBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2NhbARzdGltZQMxMjM2ODYxNDc1">Calendar</a>
</div>
<!-- |**|end egp html banner|**| -->
<div id="ygrp-grft" style="font-family: Verdana; font-size: 77%; padding: 15px 0;">
</div>
<div id="ygrp-mkp">
<div id="hd">MARKETPLACE</div>
<div id="ads">
<div class="ad" style="color:#628C2A; font-family:Arial; font-weight:bold;">
<hr noshade="noshade" size="1"><a href="http://us.ard.yahoo.com/SIG=14kgd2cg1/M=493064.12016295.13271503.10835568/D=groups/S=1705007207:MKP1/Y=YAHOO/EXP=1236868675/L=/B=5g.VGUPDhC8-/J=1236861475300320/K=zviu8r3I7PAc1SQIlutdHQ/A=5530388/R=0/SIG=11nuutlas/*http://explore.yahoo.com/groups/kraftmealsmadesimple/">From kitchen basics to easy recipes - join the Group from Kraft Foods
</a> </div>
</div>
</div>
<!-- yahoo logo -->
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-ft" style="font-family: verdana; font-size: 77%; border-top: 1px solid #666; padding: 5px 0;">
<a href="http://groups.yahoo.com/;_ylc=X3oDMTJkdXYycDJlBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMjM2ODYxNDc1">
<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=X3oDMTJmMzE5c2NwBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA3N0bmdzBHN0aW1lAzEyMzY4NjE0NzU-">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=X3oDMTJkOTFtM3VxBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2hwZgRzdGltZQMxMjM2ODYxNDc1">
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" style="background-color: #e0ecee; margin-bottom: 20px; padding: 2px 0 8px 8px;">
<div id="vithd" style="font-size: 77%; font-family: Verdana; font-weight: bold; color: #333; text-transform: uppercase;">Recent Activity</div>
<ul style="list-style-type:none; padding: 0; margin: 2px 0;">
</ul>
<a href="http://groups.yahoo.com/group/TestFirstUserInterfaces;_ylc=X3oDMTJlbDE4aHBsBF9TAzk3MzU5NzE0BGdycElkAzg3NDQ3MDQEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTIzNjg2MTQ3NQ--">
Visit Your Group </a>
</div>
<!-- Network content -->
<div style="background-color:#EEEEEE; margin-bottom:20px; padding:10px 8px;"> <div id="nc">
<div class="ad" style="color:#628C2A; font-family:Arial; font-weight:bold;">
<div id="hd1">Yahoo! Groups</div>
<p><a href="http://us.ard.yahoo.com/SIG=14hecl7qg/M=493064.12717544.13455789.8674578/D=groups/S=1705007207:NC/Y=YAHOO/EXP=1236868675/L=/B=5w.VGUPDhC8-/J=1236861475300320/K=zviu8r3I7PAc1SQIlutdHQ/A=5658267/R=0/SIG=11ptgj47g/*http://advision.webevents.yahoo.com/autoenthusiastzone/">Auto Enthusiast Zone</a></p>
<p>Love cars? Check out the</p>
<p>Auto Enthusiast Zone</p> </div>
<div class="ad" style="color:#628C2A; font-family:Arial; font-weight:bold;">
<div id="hd1">Yahoo! Groups</div>
<p><a href="http://us.ard.yahoo.com/SIG=14htbvuck/M=493064.12016263.12445670.8674578/D=groups/S=1705007207:NC/Y=YAHOO/EXP=1236868675/L=/B=6A.VGUPDhC8-/J=1236861475300320/K=zviu8r3I7PAc1SQIlutdHQ/A=5522131/R=0/SIG=11k97shp3/*http://advision.webevents.yahoo.com/domorefordogs/">Do More For Dogs Group</a></p>
<p>Connect and share with</p>
<p>dog owners like you</p> </div>
<div class="ad" style="color:#628C2A; font-family:Arial; font-weight:bold;">
<div id="hd1">Y! Groups blog</div>
<p><a href="http://us.ard.yahoo.com/SIG=14huo55ul/M=493064.12016258.12582637.8674578/D=groups/S=1705007207:NC/Y=YAHOO/EXP=1236868675/L=/B=6Q.VGUPDhC8-/J=1236861475300320/K=zviu8r3I7PAc1SQIlutdHQ/A=5191953/R=0/SIG=112mhte3e/*http://www.ygroupsblog.com/blog/">The place to go</a></p>
<p>to stay informed</p>
<p>on Groups news!</p> </div>
</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=1040/stime=1236861475/nc1=5658267/nc2=5522131/nc3=5191953" width="1" height="1"> <br>
<div style="color: white; clear: both;">__,_._,___</div>
<!--~-|**|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;
}
dd.last p a {
font-family: Verdana;
font-weight: bold;
}
#ygrp-vitnav{
padding-top: 10px;
font-family: Verdana;
font-size: 77%;
margin: 0;
}
#ygrp-vitnav a{
padding: 0 1px;
}
#ygrp-mlmsg #logo{
padding-bottom: 10px;
}
#ygrp-reco {
margin-bottom: 20px;
padding: 0px;
}
#ygrp-reco #reco-head {
font-weight: bold;
color: #ff7900;
}
#reco-category{
font-size: 77%;
}
#reco-desc{
font-size: 77%;
}
#ygrp-vital a{
text-decoration: none;
}
#ygrp-vital a:hover{
text-decoration: underline;
}
#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}
dd.last p span {
margin-right: 10px;
font-family: Verdana;
font-weight: bold;
}
dd.last p span.yshortcuts {
margin-right: 0;
}
div.photo-title a,
div.photo-title a:active,
div.photo-title a:hover,
div.photo-title a:visited {
text-decoration: none;
}
div.file-title a,
div.file-title a:active,
div.file-title a:hover,
div.file-title a:visited {
text-decoration: none;
}
#ygrp-msg p {
clear: both;
padding: 15px 0 3px 0;
overflow: hidden;
}
#ygrp-msg p span {
color: #1E66AE;
font-weight: bold;
}
div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
font-family: Verdana;
font-size: 10px;
font-weight: normal;
}
#ygrp-msg p a {
font-family: Verdana;
font-size: 10px;
}
#ygrp-mlmsg a {
color: #1E66AE;
}
div.attach-table div div a {
text-decoration: none;
}
div.attach-table {
width: 400px;
}
-->
</style>
</head>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</html><!--End group email -->
--54SiNfDiQCtYesggcq3Yf3cqnPNmoxkuqYy4e5U--