<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rss [<!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">]>
<rss version="0.92" xml:base="http://www.testingreflections.com">
<channel>
 <title>testingReflections.com - design &amp; development</title>
 <link>http://www.testingreflections.com/taxonomy/view/or/48</link>
 <description></description>
 <language>en</language>
<item>
 <title>De-smelling by refactor or rewrite: some thoughts</title>
 <link>http://www.testingreflections.com/node/view/8427</link>
 <description>&lt;p&gt;Is there a tipping point when rewriting code should be favored over &lt;a href="http://www.refactoring.com/"&gt;refactoring&lt;/a&gt; ?  It is often hard to decide. There are some important factors that can help.  Code smells cluster, whether as bugs that are detected, or potential failures lurking in immature code that may break during future updates or maintenance. &lt;a href="http://www.stevemcconnell.com/articles/art04.htm"&gt;Steve McConnell&lt;/a&gt; wrote (in &amp;#8220;Rapid Development&amp;#8221;) that &amp;#8220;Error prone modules tend to be more complex than other modules in the system, less structured and unusually large.  They often were developed under excessive schedule pressure and were not fully tested&amp;#8221;.  He also quotes indicative studies that these modules are much more expensive to develop. Steve&amp;#8217;s metric is 10 defect per 1000 lines of code to mark a module for further work.  If it appears to be an error prone module, he advises rewriting it.  Other indicators are large concentrations of bugs, large number of checkins, or large amounts of fix time spent in comparison to similar modules. While error-prone modules are typical in traditional development, agile practices like well executed TDD should minimize them.  &lt;a href="http://blogs.msdn.com/mswanson/articles/154460.aspx"&gt;High cyclomatic complexity&lt;/a&gt; of code is also a good indicator of the need for simplification. 
&lt;p&gt;The hard thing is determining the tipping point between refactor and rebuild.  The easy thing is that because of clustering, there is often a lot of low hanging fruit, and focused effort on a small portion of the code should have a massive impact on the code quality.
&lt;p&gt;
For more on bug clusters and other productivity ideas, see my Google tech talk &amp;#8220;Building Software Smarter&amp;#8221;, http://www.tinyurl.com/80-20-rules &lt;/p&gt;</description>
<pubDate>Sun, 17 Jan 2010 01:14:39 +0000</pubDate></item>
<item>
 <title>Short and long game thinking, tests driving design and CRAP metrics</title>
 <link>http://www.testingreflections.com/node/view/8108</link>
 <description>&lt;p&gt;Kent Beck recently posted &lt;a href="http://www.threeriversinstitute.org/blog/?p=187"&gt;To Test or Not to Test? That’s a Good Question&lt;/a&gt; on the complex &amp;#8220;theory versus practice&amp;#8221; issue of always automating tests, where he states,&amp;#8221;Then a cult of [agile] dogmatism sprang up around testing–if you can conceivably write a test you must&amp;#8221;.  By classifying projects into long game and short game, he argues that ROI becomes a major issue on whether a test stays manual. He says &amp;#8220;Not writing the test for the second defect gave me time to try a new feature&amp;#8221;, but several people commented that this was a technical debt tradeoff, and Guilherme Chapiewski noted he had done the same thing with a Proof of Concept that went live then he had to rewrite major chunks later.
It is interesting that this ROI discussion is reflecting the experiences of the pre-agile functional automation community. Back in November 2001 (Wow! Long time ago!!), I posted to the Agile Testing list some &lt;a href="http://tech.groups.yahoo.com/group/agile-testing/message/82"&gt;considerations for not automating&lt;/a&gt; .  While many of these were from the context of two separate development teams and the automaters using expensive test tools, the risks of incomplete automation and insufficient ROI dominate. The benefits of having the same people both develop the code and the tests are great, and beyond my experience when I wrote that post. &lt;p&gt; 
I think the ROI issue for code-based tests will go away over time.  Much of the creation of code-based tests is mechanical.  Just as programming languages replaced assembler and took care of fiddly details (what registers to use, low level comparisons etc) and build utilities replaced simple text file include statements, I think that soon it will be standard practice to have tool-created unit testing to handle mocking, dependency injection and assert-based testing. Mocking was originally very manual, then tools were developed.  Dependency Injection was very manual,then tools were developed.  For assert-based testing, we&amp;#8217;ve already seen &lt;a href="http://www.linux-mag.com/id/5349/"&gt;Agitar&amp;#8217;s tools&lt;/a&gt; , &lt;a href="http://www.linuxjournal.com/article/7776"&gt;zentest&lt;/a&gt; and now &lt;a href="http://devblog.petrellyn.com/?tag=pex"&gt;pex&lt;/a&gt;  amongst others.  I think these tools will become standard, just as coverage tools are now standard in IDEs when they originally were luxuries costing tens of thousands of dollars.  Another variation of this is tools like &lt;a href="http://celerity.rubyforge.org/"&gt;Celerity&lt;/a&gt; recently &lt;a href="http://www.developertesting.com/archives/month200902/20090217-SafariWatirFireWatir.html"&gt;blogged about&lt;/a&gt; by Jeffrey Frederick. Celerity is a fast way to run GUI web tests, but could be handled as a mechanical translation not a manual one. Some meta language could generate Celerity and selected browser tests in a single step.&lt;p&gt;
Mechanically generated tests are cheap to produce and overcome ROI issues. However, they only reflect the current code.  The benefits of test design infusing the coding approach are missing.  If tests are not being automated for whatever reason, some analysis of the refactoring risk should be done, at least to know where and what the error-prone code is.  One way of doing this is using the Agitar-created &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=215899"&gt;CRAP metric&lt;/a&gt; , which Bob Martin recently &lt;a href="http://blog.objectmentor.com/articles/2009/05/20/clean-code-and-battle-scarred-architecture"&gt;blogged about&lt;/a&gt; as a way to keep design clean.  While I currently believe all code should be created test first wherever possible, techniques like the CRAP metric can highlight the complicated bits for refactoring  where possible. While it may be a great intellectual challenge, there is no need to refactor a complex industry standard algorithm. [Aside: is there an inherent advantage to doing test first design all the time?  Perhaps, just as renaissance masters only painted and sculpted hand and faces and left the rest to their workshop staff, we only need to focus on core functions for test first and do the rest test last?]&lt;p&gt;
As Kent says,&amp;#8221;By insisting that I always write tests I learned that I can test pretty much anything given enough time.&amp;#8221;  Time is often a rare commodity, so Kent argues compromises are often needed in short goal projects. As Ron Jeffries said in a comment on Kent&amp;#8217;s post, &amp;#8220;My long experience suggests that there is a sort of knee in the curve of impact for short-game-focused decisions. Make too many and suddenly reliability and the ability to progress drop substantially.&amp;#8221;  I hope that advancements in mechanical generation of tests don&amp;#8217;t push us into a short game perspective, impacting the use of hand crafting tests to drive design.  At the same time, metrics that can be run as part of the build to highlight areas for refactoring on all projects are proving valuable (and I&amp;#8217;m looking forward to &lt;a href="http://www-cs-students.stanford.edu/~kkoster/pubs/statecoverage.pdf"&gt;state coverage&lt;/a&gt; ).  By any measure, these are interesting times we live in.  Long live long game thinking! &lt;/p&gt;</description>
<pubDate>Thu, 28 May 2009 05:59:56 +0100</pubDate></item>
<item>
 <title>Software Performance Engineering</title>
 <link>http://www.testingreflections.com/node/view/7551</link>
 <description>Trying to make some suggestions for &lt;a href="http://www.cmg.org/cgi-bin/agenda_2008.pl?action=more&amp;token=8226"&gt;Building Responsive and Scalable Applications panel&lt;/a&gt; I contemplated for a while on this topic.  &lt;br /&gt;
&lt;br /&gt;
For a long time we have Software Performance Engineering addressing these issues. As it described in the books and papers of &lt;a href="http://www.spe-ed.com/"&gt;Dr. Connie Smith&lt;/a&gt; and &lt;a href="http://www.perfx.net/pubs.htm"&gt;Dr. Lloyd Williams&lt;/a&gt;, it looks rather as a methodology for me.</description>
<pubDate>Wed, 12 Nov 2008 04:34:31 +0000</pubDate></item>
<item>
 <title>The short and the long of IT:  two videotaped presentations</title>
 <link>http://www.testingreflections.com/node/view/7437</link>
 <description>&lt;p&gt;Since the middle of the year, I&amp;#8217;ve presented and facilitated about 12 hours of sessions at 2 traditional and 3 open space conferences, plus a Googleplex visit.  Two presentations are now on video, both filmed on the other side of the world from my usual location of Melbourne, Australia. 
&lt;p&gt;A lightning talk (at the functional tools workshop held before Agile 08 in Toronto, Canada) called &lt;a href="http://video.google.com/videoplay?docid=1922281420908038401"&gt;Shades of Green&lt;/a&gt; discusses how the &amp;#8220;green&amp;#8221; passing tests of functional automation may not be as green as they seem. Note the static pose to stay within camera range, compensated for by the wildly waving arm.  And yes, the audience was not limited to a leg and a foot.
&lt;p&gt; An order of magnitude longer at around 50 minutes, a Google Tech Talk (filmed at the San Francisco Googleplex) called &lt;a href="http://au.youtube.com/watch?v=zXRxsRgLRZ4"&gt;80:20 Rules! Building Software Smarter&lt;/a&gt; looks at formal and informal ways to get significant improvements in creating software, including various puzzles and questions for viewers.  I had looked at some tech talks by other people I know, and they had been watched around 1000 times over a year or so.  It looks like I may hit that mark only a few days after the video was posted which is great.  I hope my talk inspires people to build their software smarter.  Can I turn &amp;#8220;shades of green&amp;#8221; into a similar talk? Probably not!&lt;/p&gt;</description>
<pubDate>Sun, 07 Jun 2009 05:58:45 +0100</pubDate></item>
<item>
 <title>ISubmitBlogPosts - a nice twist on Hungarian Notation for Interfaces...</title>
 <link>http://www.testingreflections.com/node/view/7234</link>
 <description>&lt;p&gt;I've been pairing with &lt;a href="http://andypalmer.com/"&gt;Andy Palmer&lt;/a&gt; over this last week. I have to say it's been a lot of fun... and I think we've learned a lot from the experience. One of the things I learned from Andy this week was an innovative use of Hungarian notation for interfaces... Andy told me about &lt;a href="http://www.udidahan.com/"&gt;Udi Dahan's&lt;/a&gt; presentation on &lt;a href="http://cid-c8ad44874742a74d.skydrive.live.com/self.aspx/Blog/Intentions%20and%20Interfaces.pdf"&gt;intentions and interfaces (PDF)&lt;/a&gt;&lt;/p&gt;</description>
<pubDate>Mon, 23 Mar 2009 06:17:34 +0000</pubDate></item>
<item>
 <title>Pitfalls of the "Waterfall" Approach to Performance Testing</title>
 <link>http://www.testingreflections.com/node/view/6784</link>
 <description>Looks like the pre-production validation approach to performance testing becomes typical for large corporations (if there is any at all):&lt;br /&gt;
&lt;br /&gt;
-get the system ready&lt;br /&gt;
-develop all scripts requested (sometimes offshore)&lt;br /&gt;
-run them all together  &lt;br /&gt;
-compare with the requirements provided&lt;br /&gt;
-allow some percentage of errors according to the requirements&lt;br /&gt;
-involve the development team if requirements were missed</description>
<pubDate>Mon, 24 Mar 2008 21:23:17 +0000</pubDate></item>
<item>
 <title>The P28 virtual fence: Borderline success or virtual vaporware?</title>
 <link>http://www.testingreflections.com/node/view/6685</link>
 <description>I&amp;#8217;ve already noted some of the issues around the virtual fence &lt;a href="http://www.testingreflections.com/node/view/6584"&gt;here&lt;/a&gt;.  In May 2006, George W. Bush called &lt;a href="http://seattletimes.nwsource.com/html/nationworld/2004247618_fence28.html"&gt;it&lt;/a&gt; &amp;#8220;the most technologically advanced border-security initiative in American history&amp;#8221;. In a flash of originality, the 28 mile virtual fence in Arizona was called Project 28, or P28 in Chertoff-speak.  Micheal Chertoff has now accepted the fence system, on the &lt;a href="http://www.businessweek.com/bwdaily/dnflash/content/feb2008/db20080224_162462.htm?chan=top+news_top+news+index_businessweek+exclusives"&gt;basis&lt;/a&gt; that &amp;#8220;all of the defects&amp;#8221; in the prototype project were either &amp;#8220;cured&amp;#8221; or &amp;#8220;immaterial.&amp;#8221;  He also &lt;a href="http://www.reuterssummits.com/news/articlenews.aspx?type=scienceNews&amp;#38;storyID=2008-02-23T023234Z_01_N22608938_RTRUKOC_0_US-USA-IMMIGRATION-BORDER.xml&amp;#38;pageNumber=1&amp;#38;imageid=&amp;#38;cap=&amp;#38;sz=13&amp;#38;WTModLoc=NewsArt-C1-ArticlePage1"&gt;said&lt;/a&gt; &amp;#8220;In some form or fashion, technology is going to be virtually every place on the border, but it&amp;#8217;s not necessarily going to be in the configuration of P28,&amp;#8221;  The chair of the House Committee on Homeland Security, Representative Bennie Thompson, sees it differently, &amp;#8220;The poorly structured contract that prevented the line Border Patrol agents from pointing out obvious flaws and caused an overreliance on contractors has resulted in a system that has been described as providing &amp;#8216;marginal&amp;#8217; functionality at best,&amp;#8221; I wonder if he was tempted to say the Border fence had borderline functionality. [grin]  
&lt;p&gt;The technology stack on top of each tower looks
&lt;a href="http://bp0.blogger.com/_gxNFoOtI86A/R8yjM8277-I/AAAAAAAAANA/zUPYOoBppps/s1600-h/virtual+fence.jpg"&gt;impressive&lt;/a&gt; . 
  The project is 
&lt;a href="http://blog.foreignpolicy.com/node/8292"&gt;anything but impressive&lt;/a&gt; , with many of the &lt;a href="http://www.pcworld.idg.com.au/index.php/id;1275789676;fp;4;fpid;782452;pf;1"&gt;issues&lt;/a&gt;  
 typical in the IT industry: badly underestimated effort, not involving users, and not enough testing,  While there was evidently a push for reuse of existing systems and components, it caused many difficulties: trying to base the system around a law enforcement dispatch system (!) that couldn't scale, trying to use off-the-shelf components that weren't designed to integrate, and a lack of standards for the sensors.  
The builder of the system, Boeing, has only taken 3/4s of the $20 million fee, granted a $2 million credit, and apparently paid $40 million to get this far on a project that will now finish in 2011, not the end of this year (which was already a year and a half past the original schedule). That will only be phase one!&lt;/p&gt;</description>
<pubDate>Wed, 05 Mar 2008 10:06:01 +0000</pubDate></item>
<item>
 <title>CMG Opens Its Content to the Public</title>
 <link>http://www.testingreflections.com/node/view/6572</link>
 <description>&lt;a href="http://www.cmg.org/national/about-cmg.html"&gt;The Computer Measurement Group (CMG)&lt;/a&gt; is making its conference proceedings from 1997 through 2005 available to the public. I believe that &lt;a href="http://www.cmg.org/conference/"&gt;CMG holds the best practical conference in performance analysis, capacity planning, and related areas&lt;/a&gt;. In addition to the areas listed below, I'd definitely add performance testing. Here is the official mail CMG sent:</description>
<pubDate>Tue, 12 Feb 2008 19:30:21 +0000</pubDate></item>
<item>
 <title>Education</title>
 <link>http://www.testingreflections.com/node/view/6501</link>
 <description>With great interest read &lt;a href="http://itmanagement.earthweb.com/career/article.php/3722876"&gt;Who Killed the Software Engineer? (Hint: It Happened in College)&lt;/a&gt; by James Maguire as well as the original article &lt;a href="http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html"&gt;Computer Science Education: Where Are the Software Engineers of Tomorrow?&lt;/a&gt; by Dr. Robert Dewar and Dr. Edmond Schonberg.</description>
<pubDate>Sun, 03 Feb 2008 05:08:05 +0000</pubDate></item>
<item>
 <title>Performance Requirements</title>
 <link>http://www.testingreflections.com/node/view/6397</link>
 <description>My performance requirements paper was published in &lt;a href="http://www.stpmag.com/issues/stp-2008-01.pdf"&gt;the January issue&lt;/a&gt; of &lt;a href="http://www.stpmag.com/"&gt;Software Test &amp; Performance&lt;/a&gt; (pp.18-24).&lt;br /&gt;
&lt;br /&gt;
It was simple: I just sent a draft – and now I am reading it printed. With a new name - or even two: it is referred as &lt;i&gt;You Can Gauge Performance Without Requirements&lt;/i&gt; in one place and &lt;i&gt;Gauging Performance in The Absence of Measures&lt;/i&gt; in another. Not to mention other minor improvement.</description>
<pubDate>Sun, 06 Jan 2008 23:08:27 +0000</pubDate></item>
<item>
 <title>From the Mailbox: Software Development: Art or Science?</title>
 <link>http://www.testingreflections.com/node/view/6091</link>
 <description>&lt;dl&gt;&lt;dt&gt;Here’s a question that I didn’t realize I had much to say about until I read my own response.&lt;/dt&gt;
&lt;dt&gt;&amp;nbsp;&lt;/dt&gt;
&lt;dt&gt;&lt;b&gt;The Question:&lt;/b&gt;&lt;/dt&gt;
&lt;dt&gt;&lt;blockquote&gt;Software Development: Is it an art or a science?  An age old question I know, but what do you think and why?&lt;/blockquote&gt;&lt;/dt&gt;&lt;dt&gt;&amp;nbsp;&lt;/dt&gt;
&lt;dt&gt;&lt;b&gt;My Response:&lt;/b&gt;&lt;/dt&gt;
&lt;dt&gt;&amp;nbsp;&lt;/dt&gt;
&lt;dt&gt;I refer to new software development as a scientific art. I've seen some maintenance work, platform porting, etc. that has been almost entirely mechanical -- I'm not sure what that counts as, but I certainly didn't witness anything "artistic".</description>
<pubDate>Thu, 18 Oct 2007 20:47:12 +0100</pubDate></item>
<item>
 <title>What Skills Performance Testers Need and How to Get Them?</title>
 <link>http://www.testingreflections.com/node/view/6037</link>
 <description>From time to time I see questions on different forums asking what skills are necessary for performance testers. There were pretty &lt;a href="http://www.sqaforums.com/showflat.php?Cat=0&amp;Number=47176&amp;an=&amp;page=0&amp;vc=1"&gt;interesting discussions&lt;/a&gt;. Looks like most experts agree that performance testing requires more skills than just knowledge about how to create a script for a particular load testing tool. While it is still possible to imagine a performance tester in a large corporation with deep specialization who only creates scripts and mechanically runs them while other performance experts monitor the system and analyze results, I don't see many perspectives neither for this person, nor for the approach. Systems become so complicated now that the sum of specialized expert views doesn't give the whole performance picture.</description>
<pubDate>Mon, 15 Oct 2007 15:31:39 +0100</pubDate></item>
<item>
 <title>Guerilla Approach</title>
 <link>http://www.testingreflections.com/node/view/6030</link>
 <description>&lt;a href="http://www.cmg.org/measureit/issues/mit44/m_44_18.html"&gt;&lt;br /&gt;
Mark Friedman reviewed Neil J. Gunther's new book "Guerilla Capacity Planning: A Tactical Approach to Planning for Highly Scalable Applications and Services"&lt;/a&gt;&lt;br /&gt;
in &lt;a href="http://www.cmg.org/measureit/"&gt;MeasureIT&lt;/a&gt; (free registration may be needed - I hate registrations, but this one is worth efforts if you care about performance: it is a very good newsletter).</description>
<pubDate>Thu, 04 Oct 2007 20:06:44 +0100</pubDate></item>
<item>
 <title>"Shot in the Dark" anti-pattern</title>
 <link>http://www.testingreflections.com/node/view/4093</link>
 <description>Kirk proposed the &lt;a href="http://www.kodewerk.com/proposed_antipattern_shot_in_the_dark.htm"&gt;"Shot in the Dark" anti-pattern&lt;/a&gt;. By my opinion, a must reading for all working with performance issues.</description>
<pubDate>Sat, 02 Sep 2006 03:00:50 +0100</pubDate></item>
<item>
 <title>Predicting the Path of the Storm</title>
 <link>http://www.testingreflections.com/node/view/3873</link>
 <description>Recently, three unrelated events have given birth to a new idea in my head, and I wanted to share it with you.  So, to properly set up the background, the three unrelated events:&lt;br /&gt;
&lt;br /&gt;
At the recent CAST, James Bach presented a keynote, “&lt;a href="http://www.associationforsoftwaretesting.org/conference/keynote.html#"&gt;Against Certification&lt;/a&gt;”.  During that presentation, one of the things he did was to review some of the “Body of Knowledge” documentation upon which such certifications were based.  As he reviewed this documentation, one of the things I was struck by was an underlying pattern of motive driving much of the documentation.  That motive was the ability to predict, manage, and control the SDLC.  Much of this “Body of Knowledge” for test certification was obviously written by managers, not testers.</description>
<pubDate>Tue, 27 Jun 2006 18:11:11 +0100</pubDate></item>
</channel>
</rss>

