|Mar 13, 2009||–||
April: Minneapolis: Build Engineer Bootcamp & CITCON
On this blog when we talk about developer testing we have an ongoing assumption that you're going to use continuous integration in both senses of the phrase: you're going to check-in frequently and you're going to have an automated system like CruiseControl running your tests.
But, perhaps surprisingly, many teams have as much trouble getting the automated system up and running as they do in writing the tests in the first place. The problem is their build. They have a system that is sufficient for assembling their software but that isn't ready for the demands of an agile team, demands like continuous integration, unit tests, functional testing, software metrics, etc.
If you have this problem then you should take a look at the Build Engineer Bootcamp that we have scheduled for Minneapolis in April to coordinate with CITCON, the Continuous Integration and Testing Conference. These two events should pair very nicely: attend the bootcamp to learn the basics, then attend CITCON to delve into the state of the art.
Hope to see you there!
|Feb 17, 2009||–||
Cross-browser testing with SafariWatir and FireWatir
I've written up my account of how I spent my time at Elisabeth Hendrickson's Open Source Test Automation Tool Love In. My goal was to have a single script using Watir to drive both Safari and Firefox. With a bit more work I'd like to have the same script driving Celerity. I like the idea of a continuous integration setup where the Celerity tests run first for fast feedback and then the tests run in the browser to ensure compatibility.
|Nov 21, 2008||–||
CruiseControl 2.8 Released
2.8 is now available for download.
Along with a number of bug fixes and enhancements (release notes) there have been a number of significant below the surface changes that should be invisible out of the box but will be a GoodThing:
"The properties file does not support some advanced configuration options like Filters, custom ErrorHandlers and a special type of appenders, i.e. AsyncAppender. ErrorHandlers defines how errors in log4j itself are handled, for example badly configured appenders. Filters are more interesting. From the available filters, I think that the level range filter is really missing for property files."
In addition to these change there quite a few little hygiene cleanups that made me happy.
|Sep 18, 2008||–||
Final days to register for CITCON Amsterdam
CITCON Amsterdam is October 3rd & 4th and the final day to register is tomorrow, September 19th. We currently have 124 people registered from across Europe, ready to talk all about Continuous Integration, Testing and related topics. Hope to see you there!
|Sep 15, 2008||–||
Mundane excellence in software, intensive care, and bombing missions
In this blog entry I talk about how simple changes can produce dramatically different results. Developer testing is one of the practices, one of those little things, that add up to excellence:
"… there is no secret; there is only the doing of all those little things, each one done correctly, time and again, until excellence in every detail becomes a firmly ingrained habit, an ordinary part of one’s everyday life."
|Apr 9, 2008||–||
CruiseControl 2.7.2 Released
CruiseControl 2.7.2 is available for download.
Lots of bug fixes, lots of changes to the Dashboard.
See detailed release notes here.
|Mar 31, 2008||–||
Introducing... State Coverage
The other software metric to come out of Agitar, CRAP is simply too much fun. So David Kao (a former Agitar intern) and I decided to take the levity down a notch.* The result?more »
|Mar 12, 2008||–||
Register for CITCON Denver
CITCON Denver is just around the corner, April 4th and 5th. This the 3rd annual CITCON North America event, the previous years having been in Chicago (2006) and Dallas (2007). CITCON events have also been held in London (2006), Sydney (2007) and Brussels (2007).
For those who haven't heard about it CITCON is the Continuous Integration and Testing CONference, an open spaces (or "unconference") event that attracts an energetic and enthusiastic crowd of CIT practitioners from around the US, Europe and Asia. If you've never been to an open spaces event you can think of it as the best part of a normal conference -- the hallway conversation -- dialed up to 11!
|Mar 3, 2008||–||Webinar: Making the Business Case for Continuous Integration and Testing This week on Wednesday March 5th I'll be giving a webinar on Making the Business Case for Continuous Integration and Testing. This webinar is a bit different than previous ones I've given on CIT. I wanted to address this topic because I've talked to a number of people at places like CITCON who believed that CIT was the right thing to be doing but they were inexplicably (to them) unable to convince others that continuous integration and the automated testing that goes with it were something worth investing in. So to try and help people I've put together what I see as the most compelling information and also some advice on how to tailor your case based on specific situation in your company. Following the slide portion of the webinar I'm going to answer questions from the audience. In addition to questions about the slides I'm also interested in hearing from people who've encountered obstacles in adopting CIT and I'll try and provide specific suggestions for getting around the problems. If you're interested in this material you can register for this webinar today.|
|Jan 28, 2008||–||
Survey on Business Benefits of Unit Testing
Artur Hildebrandt is a MBA student at the University of Liverpool and currently running a survey on the business benefits and risks of unit testing. His goal is to identify and measure benefits software development organizations can gain by actively practicing unit testing. I think it would be great to have more information available to persuade management on the benefits of unit testing so I'm happy to promote his survey. If you'd like to take part his questionnaire available at online.
|Jan 27, 2008||–||
Continuous Integration at JaSST'08 Tokyo
I'm sitting here in SFO waiting for my flight to Tokyo. I'll be speaking this week at JaSST, the Japanese Symposium on Software Testing. This will be a bit different from my normal talks on CI because I'll be focusing on the benefits of CI for testing groups rather than my normal focus on developers. And there will be translation into Japanese which makes for a very different presentation experience. But I'm very excited about giving this talk because Continuous Integration is less well known in Japan than in Europe, Australia or the US, so it will be fun to be bringing the message to a new audience.
|Jan 16, 2008||–||AgitarOne available as a downloadable eval! more »|
|Jan 14, 2008||–||
Hoorah for XSLT!
It would be handy to have a report of all the unexpected exceptions that get thrown.
I've lost count of the number of times I've heard that. I've even said it myself a few times.
It seemed like it would be pretty easy to do using the
|Jan 8, 2008||–||
Crap4j 1.1.6 Released
Crap4j 1.1.6 is out. The new version features historical trends of CRAP metrics, and comparison by similarly tagged projects. Exciting!
|Jan 3, 2008||–||
JUnit Factory is a Jolt Award Finalist!
First we generate over a million free JUnit tests and then we get nominated for a Jolt Award.
What a great end to the first year of JUnit Factory!
|Nov 16, 2007||–||
Configuring CruiseControl the CruiseControl Way
Configuring CruiseControl the CruiseControl way from ThoughtWorks Studios presents what should be a standard practice. Checking your cruisecontrol configurations into version control and having cruisecontrol bootstrap with them.
Now I could see it getting tricky if you have multiple build machines, but it seems like that would be pretty easy to handle as well by using different config files for different machines, or something similar. That might violate the DRY principle, so it would be good to think a little more about it. How do others deal with this?
|Oct 31, 2007||–||
Crap4j v1.1.4 Released, Available as an Ant Task now
Like the title says.
This is particularly exciting because now it can be included in continuous integration setups.
One natural next step would be to set a threshold value so that crap4j would throw an error that would fail the build. I would be curious to hear comments on how people would like that to work.
Anyway, find out how to get the latest version at the blog.
|Oct 25, 2007||–||
Visualizing Complexity and Coverage
At CITCON Europe in Brussels last week one of the sessions I enjoyed was on CRAP4J and other metrics for bad code. (I've put my notes up on the CITCON wiki.) Today Kevin reminded me that Clover has a similar metric for identifying risky code, a tag cloud that uses complexity to size the tag and the coverage level to color it. They have posted a sample using Lucene here. This is a pretty neat looking approach... but honestly? I don't really like it.
|Oct 24, 2007||–||
Crap4j 1.1.3 released
A new version of crap4j has been uploaded to it's new home at http://www.crap4j.org/!
Please check it out and give us your feedback!
|Oct 18, 2007||–||
CITCON Europe 2007 Starts Today
CITCON Europe 2007 starts today in Brussels, Belgium. We're in a nice central location, very close the Brussels North train station. As an open space event everyone has the opportunity to propose a topic for discussion. The one I'm most interested in is talking about Crap4J and other ideas for metrics to spot bad code.
|Oct 15, 2007||–||
qu’ils mangent de la brioche
It is a curious fact that, if you say
Let them eat cake!
at an international gathering, the French-speaking people will have no idea what you are talking about. Even if you say it in French.
|Oct 13, 2007||–||
In Praise of Abstraction
A History of Build Systems
In my younger days, before I knew any better, many projects I worked on compiled and published their software manually.
One day, I discovered the discipline of daily builds and tools like make and my life got a whole lot better. Make gave us, in Elizabeth's handy phrase "a place to put things".more »
The Commitment Principle
Elizabeth Hendrickson is a tremendous facilitator and a canny manipulator.
In Influence: The Psychology of Persuasion, Robert Cialdini describes various techniques for making people do things that, if they were thinking clearly, they would otherwise not do because of lethargy, laziness, or because it would offend their better judgment.
One of those techniques is The Commitment Principle which was used on American POWs to great effect by the Chinese during the Korean War.
|Oct 5, 2007||–||
What Jar? NoClassDefFoundError
My normal response to a NoClassDefFoundError is to ask google. This generally gives me a thread I can follow and eventually solve the problem, but it isn't very efficient. It looks like a better solution would be the What Jar? website... if only there were more jars in the index.
Have some extra time on your hands? How about uploading a bunch of the jars to save me some time in the future? :)
106 Books Meme
Kevin says all the cool kids are doing it...more »
|Oct 2, 2007||–||
No Software Heuristic for Implementability and Testability
Alberto blogged today about our free tool Crap4J. You might think that the last thing software development needs is another metric, but our goal here was a bit different. We were looking for a metric that would be simple and actionable like the cholesterol index: if you know your cholesterol score is over 200 you know you need to do something, it is a call to action. By the same token, you can't say that just because your score is under 200 that you're healthy. The cholesterol isn't a perfect indicator of health, and yet it is still useful.
Did we succeed in our goal? Check it out and let us know...
(And thanks to the writeup on The Server Side for my title.)
|Sep 25, 2007||–||
Coverage for Nothing
Kevin pushed a new version of JUnit Factory yesterday. The coolest new feature is that you can now execute your hand-written tests remotely on our server and get a coverage report out of it, such as this dashboard report for CruiseControl.
To make this work safely for us we run the tests under a security manager and restrict what the tests can do, so some tests will fail. But if your tests are clean according to Michael Feathers' Set of Unit Testing Rules you'll be just fine.
|Sep 6, 2007||–||
I have just generated unit tests for some code that would have taken months or years to do manually and I did it in under 30 minutes including registering on your server and waiting for the reply email.
That is truly awesome!"
Getting this kind of feedback is the fun part about having free (as in beer) software up on the web where anyone can try it out. In this case Nick had a great experience with JUnitFactory and let us know with a post to our forum.
|Aug 13, 2007||–||
As Kevin posted on the Agitar Developer News page, three of us will be at Agile 2007 this week. Bob is offering his tutorial "To Catch A Bug, Think Like a Bug" and I'll be leading a discovery session with Alistair Cockburn on "Creating Change One 'Tic-Tac' at a Time". The rest of the time you'll find me at the Agitar booth, so if you'd like to talk unit testing, continuous integration, or just hang out, stop on by and say hi.
|Jul 28, 2007||–||
Twitter as a Replacement for Beer
The problem is the tyranny of the pending entry. I typically have a queue of dev/testing/ci topics I want to blog and I find it hard to let more personal items jump the queue. In theory I could ignore that I still haven't shared the advice in On Writing Well that sounds like refactoring and dash off a note that Leanne has started he own softgoods workroom... but only in theory. My mind just doesn't seem to work like that.
Today though I read Rands description of Twitter as a yard sale for casual information and was interested. Then I read "I'd prefer to be drinking with y'all, but I'll take what I can get" and knew I had to sign-up.
If you're thinking it's been too long since we've had a beer together maybe you should sign up too?
|Jul 25, 2007||–||
Presentation tonight at BayXp
I might also show off the new crap4j tool that we have been working on lately.
|Jul 24, 2007||–||
InfoWorld Review and Open Source Example
InfoWorld has just published a review of AgitarOne version 4.1.1 where we received a rating of 8.1 or "Very Good". The reviewer spent plenty of time getting his hands dirty and came up with an evaluation we're proud of:
"…AgitarOne is an easy-to-use workgroup product that greatly facilitates the use of unit tests and helps sites get as much benefit as possible from this activity. The result is shorter QA and debugging cycles and much better predictability of the software process. For many sites with large, important Java projects, this solution is attractive and compelling. All such sites are likely to derive value that far exceeds the cost."more »
|Jul 10, 2007||–||
CITCON Sydney Registration At 100!
I'm very excited that with two weeks remaining before the conference we've reached the 100 mark for registrations for CITCON Sydney. This is our fourth CITCON event but our first in Australia, so it is great to see so many people registered. We'll take up to 150 so if you're interested in attending, it's not too late to register. The conference will be July 27th and 28th, Friday night and then all day Saturday.
Btw, if you're not familiar with the Open Space conference format you might want to read this description. If you're still not sure if this format or event is for you, you might want to see what people have posted about past CITCONs on the web, or read the feedback from Dallas earlier this year.
|Jul 2, 2007||–||
Are you an Agitator?
We're always looking for bright engineers to add to our already amazing engineering team - but we're specifically looking to fill two positions ASAP - Senior Software Engineers for our core engine development and quality engineering teams.
Those of you familiar with our product would know that we solve some very tough problems ... most of our products work on problems which are defined NP-hard and then solve them to a reasonable and usable level.
So, if you're looking for a challenge and want to be surrounded by equally smart and bright individuals, if you dream algorithms, and if you have a passion to write and test software, then read the posting and apply for either the Senior Software Engineer or the Senior Quality Lead Engineer; other positions are also listed at http://www.agitar.com/company/careers.
If you know someone else that could be a better fit, I would appreciate your forwarding this post to them ... thanks for your help!
|Jun 22, 2007||–||
CruiseControl 2.7 Released
The recent 2.7 release of CruiseControl sees CC join the modern age with a completely new web application called the dashboard. The dashboard provides an attractive web 2.0/ajax interface, a widget based extension system, and a bunch of new features like updating your CC configuration via the web. The old reporting application is still there -- meaning all the 3rd party tools still work -- so there is no reason not to update and check out the new features. Enjoy!
|Jun 14, 2007||–||
Wiki Blog Community
I like how Alistair is bluring the lines between Wiki and Blog on his site. Martin does something similar, but his Bliki is read only. Alistar, otoh, is using MediaWiki to run his full site, including his blog, and encouraging people to post their thoughts on the discussion page for the related blog.
I like the informal collegial feel and I'll be interested to see if a community does in fact develop.
|Jun 6, 2007||–||
Are You Mad at Your CI Build?
Reading Paul Duval's blog entry I found him making a comparison I use frequently: "CI provides you with a mirror of your software under development." His point is that if you find yourself getting mad at the build you might want to check yourself.
If you don't like what you see in the mirror, do you blame the mirror or do you start thinking about spending more time at the gym?
|May 15, 2007||–||
Tomorrow night, I will be giving a talk at the Association of C and C++ Users in Silicon Valley entitled, "To Catch a Bug, You have to Think Like a Bug". This is a new and improved version of a talk I gave at SD West, so if you didn't get to go there, you get another opportunity to check it out. I hope to see some Agitator's there. You can find out more of the details at the ACCU's website.
|May 8, 2007||–||
Fast Start at JavaOne
I'm encouraged by the number of people who are interested in unit testing and want to hear our pitch. We've been handing out JUnitFactory business cards like candy -- the ability to generate dashboards is a killer new feature -- and the printed copies of The Way of Testivus are popular as well. (I'm still waiting to see someone put on our karma > dogma t-shirts. Maybe tomorrow..)
I've been mostly busy occupied describing AgitarOne to people but in between I've managed to catch up a bit with Paul Hammant (who is pleased I finally have the include.projects working so he can Branch by Abstraction) and Andy Glover (who is threatening to join us in Belgium). Andy introduced me to prolific traveling speaker Neal Ford, who must enjoy being on the road far more than I do. I got within handshaking distance of ASM
Looking foward to my next break and the opportunity for some longer conversations...
|May 7, 2007||–||
I am going to be attending sessions at JavaOne this week, and would be happy to meet with any Agitators or testing enthusiasts at the conference, according to Sun's Event Connect tool, I can paste this code and you can link to me in their event tool to set up a meeting.
I also set up a topic proposal for the JavaCamp, unconference that is happening Tuesday and Wednesday nights, on Adding JUnit to the Java Platform.
Here's the blurb for anyone interested:
Many language platforms, like Ruby and Microsoft .NET ship with a unit testing framework as part of the platform. Why not include JUnit in the Java Platform, or at least include it in the JDK? Code quality is a constant sore spot for commercial applications, so it seems like making the tools that contribute to higher quality more widely available will encourage better code. While we're at it, lets put in a code coverage tool as well, so we can see how well we're testing. We already have some profiling and management tools built in, so this seems like a missing piece of the puzzle.
Scorecard for Bowling Scorer
JUnit Factory has a new feature - project dashboards - and I thought I'd try it out on my bowling code.more »
At JavaOne This Week
Reading John's post reminded me that I should let people know I'll be at JavaOne this week on booth duty for Agitar. My favorite parts of these events are all the side conversations so if you want to talk about CruiseControl, CITCON, developer-testers/tester-developers, OIF, how to run an open spaces conference, JUF, adopting developer testing, introducing change in general (I'm looking for material for my 'Tic-Tac' session with Alistair Cockburn at Agile 2007), or The Way of Testivus (PDF) stop by the booth or send me an email and we can set up some time to talk. (Following Bret's session I'm really interested in hearing from people who have had good experiences using RSpec on a Java project.) See you there...
|May 4, 2007||–||Open space conference format Rocks This weekend I had attended the first open space format conference CITCON. Before attending CITCON this year, I was little unsure about the format of the conference. Now I am totally convinced that this is the way to do lots of conference. It was invigorating experience to be meeting so many of my peers in the business and also surrounded by lots of thought leaders in the field of continuous integration and testing and share their experiences. more »|
How much test coverage do you need? - The Testivus Answer
Referring to "The Way of Testivus" entry:
Here you go Morgan:
Early one morning, a programmer asked the great master:
“Don’t worry about coverage, just write some good tests.”
The programmer smiled, bowed, and left.
The great master pointed at a pot of boiling water and said:
“How many grains of rice should put in that pot?”
The programmer, looking puzzled, replied:
“How can I possibly tell you? It depends on how many people you need to feed, how hungry they are, what other food you are serving, how much rice you have available, and so on.”
“Exactly,” said the great master.
The second programmer smiled, bowed, and left.
Toward the end of the day, a third programmer came and asked the same question about code coverage.
“Eighty percent and no less!” Replied the master in a stern voice, pounding his fist on the table.
The third programmer smiled, bowed, and left.
After this last reply, a young apprentice approached the great master:
“Great master, today I overheard you answer the same question about code coverage with three different answers. Why?”
The great master stood up from his chair:
“Come get some fresh tea with me and let’s talk about it.”
After they filled their cups with smoking hot green tea, the great master began to answer:
“The first programmer is new and just getting started with testing. Right now he has a lot of code and no tests. He has a long way to go; focusing on code coverage at this time would be depressing and quite useless. He’s better off just getting used to writing and running some tests. He can worry about coverage later.”
“The second programmer, on the other hand, is quite experience both at programming and testing. When I replied by asking her how many grains of rice I should put in a pot, I helped her realize that the amount of testing necessary depends on a number of factors, and she knows those factors better than I do – it’s her code after all. There is no single, simple, answer, and she’s smart enough to handle the truth and work with that.”
“I see,” said the young apprentice, “but if there is no single simple answer, then why did you answer the third programmer ‘Eighty percent and no less’?”
The great master laughed so hard and loud that his belly, evidence that he drank more than just green tea, flopped up and down.
“The third programmer wants only simple answers – even when there are no simple answers … and then does not follow them anyway.”
The young apprentice and the grizzled great master finished drinking their tea in contemplative silence.
|May 2, 2007||–||
The Way of Testivus
In May 2006, an ill-prepared international expedition to the Himalayas lost its way. After two weeks of wondering around, hungry, thirsty, and smelling like inexperienced expeditioners who got lost for two weeks, they stumbled upon the entrance to an ancient cave.
Once inside, they saw a maze of ancient, and messy, cubicles. Each cubicle had a wooden desk, an ergonomically correct bamboo chair, a Dilbert™ calendar, and a strange computer-like mechanical device. In one corner of the office they found barrels of dark liquid which they later identified as early examples of carbonated and highly caffeinated drink and a ping-pong table. They realized that the cave was an ancient software start-up. The oldest one on record. Older even than Netscape.
Among the many things they discovered inside the cave was a note left by one of the programmers. The expedition’s guide, while not very good at guiding, knew how to read the ancient language and translated the note for them:
We have finished the release ahead of schedule – again. All the tests pass, so we are taking the rest of the week off. We are going sailing. Since it’s a team building exercise, we hope we can get reimbursed for it.
The explorers looked at each other in astonishment. Not only had they discovered the oldest software start-up in history, they had also discovered a team of programmers who, apparently, completed their code ahead of schedule ... on a regular basis!
What was the secret of these ancient programmers?
And what had happened to them?
The expeditioners searched each cubicle for clues and found two mysterious booklets. One of them was called "Learn To Sail In 30 Minutes”, which explained the fate of the programmers. You are holding in your hands a translation of the other booklet: “The Way of Testivus”.
Who wrote this mysterious booklet? What is Testivus? Only Google™ knows for sure.
Is the content of this text responsible for these ancient programmers being able to complete projects ahead of schedule?
We can’t be sure, but we believe that the amazing prowess of these programmers was probably due to a combination of the Testivus philosophy, and the consumption of large amounts of the dark caffeinated liquid found in the cave.
Read the booklet and draw your own conclusions.
Alberto Savoia, April 2007, Mountain View, Camore »
|Apr 27, 2007||–||
CITCON Dallas, Open Spaces, Conversations
I'm in Dallas now and most of the really hard work is done: we have space, we have sponsors, we have people coming. There are signs up, rooms, chairs, flip charts. We have drink tickets, food vouchers, and a continually replentished break station. What is left are some fiddily details like putting together almost 100 bags to handout to the attendees with sponsor materials, gifts and t-shirts. That leaves plenty of energy and attention leftover to spend on nervous anticipation...
|Apr 11, 2007||–||
Final Days to Register for CITCON Dallas 2007
This Friday the 13th is the final day to register for CITCON, the Continuous Integration and Testing Conference. CITCON Dallas/Ft. Worth will be held Friday April 27th and Saturday April 28th at the American Airlines Training and Conference Center which is right outside the Dallas/Ft. Worth airport in Texas.
CITCON is different from a standard conference in a couple of ways:
If you've ever attended a conference and left feeling that the best part of the conference was the hallway conversation, then you should understand the appeal of the CITCON format. (At least this is the appeal for me!)
Past CITCON events (Chicago & London) had a fantastic mix of people, including CI and testing tool makers, very experienced authors and consultants, new and experienced Agile practitioners. CITCON Dallas promises more of the same.
Hope to see you there.
|Apr 9, 2007||–||Dell XPS Showing JUnit Status Jason Yip pointed me to Eclipse Plug-in by Litrik de Roy that'll let you use use your Dell XPS to show the results of your JUnit tests. I can imagine telling the team "please don't interrupt me when my laptop is red."|
|Apr 6, 2007||–||
What Color Are My Tests?
I came across a nice quote from Ron Jeffries in answer to the eternal question about the color of the tests that result from TDD.more »
Triangular Honey from Triangular Bees
I hosted a JUnit Factory presentation a few days ago (you can watch it online if you missed it first time around) and spent a fair amount of time talking about the Triangle sample in the JUnit Factory demo.more »
|Apr 5, 2007||–||
Web Technology Cheat Sheets
There are a handful of web technologies that I use a lot. It's handy to have a cheat sheet around for when I can't remember whether it's switch-case or choose-when or if-test-else.
Here are a few that I use all the time:
Any more I should know about?
|Apr 2, 2007||–||
Good development depends on good testing
Sometimes an aphorism like “good development depends on good communication” doesn’t really sink in until it hits you upside the head. I experienced the reality behind this particular maxim recently when I expanded the number of developers on an open source project from one developer, myself, to two.
|Mar 22, 2007||–||Jolted!|
Coding in Public
I can code passably well and I am comfortable with public speaking - but there is something about combining the two that makes my brain just completely shut down.more »
|Mar 21, 2007||–||At SDWest Expo A couple of weeks ago I was here at the Santa Clara Convention Center for EclipseCon and now I'm back for SDWest. Rather than speaking, this time I'm just here on booth duty. (Bob is the one doing the talking this time.) If you feel like chatting about developer testing, CruiseControl, CITCON or even AgitarOne stop on by and say hi.|
|Mar 20, 2007||–||
Characterization Test Failures
For completeness, I run the characterization tests one last time. As you might expect, there are failures because the behavior of
I am impatient to be done now, so I'll try to get through the code for spares quite quickly so that I can review my findings.more »
How Are Those Characterization Tests?
Someone asked me how the characterization tests fared after such an extensive change. After all, I added new methods, new behavior to existing methods and I refactored extensively.more »
How Are Those Acceptance Tests?
With the code for strikes written, it's time to run the acceptance tests to see if they agree that we are done.more »
SD West Talk: To Catch a Bug, You Have to Think Like a Bug
Tomorrow morning, I'll be giving a talk at SD West 2007 on developer testing. It is a a very opinionated look at how to test your code. It should be fun and useful. If any Agitators or other test afficionados are going to SD West, it would be great to see you at the talk, or afterwards as well.
Here are the details:
According to the rules:
2.1.3 A strike is made when a full setup of pins is knocked down with the first delivery in a frame.more »
|Mar 19, 2007||–||
Characterization Tests Revisited
Before I move on to the next story, I want to revisit those tests and make sure we have not introduced any regressions.more »
How does the Score Sheet Look?
Before I move on to spares and strikes, it would be nice to see how the score sheet looks. In an earlier post, I claimed that one of the reasons for integrating the UI early is to make sure the domain model will satisfy the requirements of the user interface. Let's see if it does.more »
|Mar 16, 2007||–||
Are We There Yet?
My last post ended with this bold assertion:
If I am not mistaken, I have written enough code to pass the acceptance tests for this story.more »
|Mar 15, 2007||–||
First Design Your Data Structure
It's at about this stage of the bowling example that people usually leap into a discussion about the appropriate data structure to store the rolls and the APIs for exposing the results.more »
In which we design the score card
In the previous installment, I wrote the code that implements rule 2.1.1. For rule 2.1.2, I finally start to add up some scores and show them in the score card.more »
|Mar 14, 2007||–||
Avoid Shallow Eyes
Jared posted a cogent argument for peer code reviews that is worth reading if only for the killer line
With enough code, all eyes are shallow.
|Mar 12, 2007||–||
Testing Around the Edges
It's an interesting word, 'test'. It can mean so many things. Before XP came along it used to mean
find out whether something works correctlymore »
A game of tenpins consists of ten frames
In my previous blog entry, I posted a set of acceptance tests for the first few stories. It's time to start writing the code to pass those tests. I prefer to discover the design through TDD rather than code directly to the customer-facing tests.more »
|Mar 9, 2007||–||
Acceptance Test for Bowling Scorer
I have often written acceptance tests for code that has not yet been written (in fact, I wrote an article about it) but I have never written tests that will work with any number of implementations, each with their own architecture. I don't even know how to go about it, but that never stopped me before...more »
Bowling for Objects
"scoring a game of bowling" is probably the most common application used when demoing TDD. It's so commonly known among the JUnit crowd that I chose one of Bob Martin's efforts as a demo for JUnit Factory.
The topic comes up about once a year on the TDD mailing list and it just came up again. By an odd coincidence, we just celebrated the completion of a new release of AgitarOne with a trip to Homestead Lanes, so I am all fired up about bowling despite my dismal performance (there was beer involved).more »
|Mar 8, 2007||–||
EclipseCon and Ward Cunningham
For me today was my best day so far at an EclipseCon, but as usual for a conference (except CITCON!) the most interesting stuff was what happened outside the talks...more »
|Mar 6, 2007||–||
CITCON Dallas Registration Open
We are proud to announce that registration is now open for the next Continuous Integration and Testing Conference, CITCON Dallas on April 27th & 28th. Space is limited to the first 100 registrants and attendance is free. Registration is on-line and while it is open until April 13th we do expect to fill all the available slots, so sign-up soon to reserve your spot.
The conference will be following the same Open Spaces (or unconference) format as the 2006 CITCON in Chicago and London. These prior CITCON drew enthusiastic practitioners at all levels of experience, all looking to share what they knew and to learn what they could. We're looking for more of the same in Dallas.
Please help spread the word about CITCON and we look forward to seeing you there!
EclipseCon Panel on Developer Testing
If you're at EclipseCon this week you might be interested in stopping by the panel Making Unit Testing Part of Your Development Process: How to Get Your Team to Do It. I'll be there as a panel member... but it should be a good panel anyway. ;-)
|Mar 5, 2007||–||
CruiseControl 2.6.1 Released
Last week CruiseControl 2.6.1 was released. In this release there are several bug fixes but also an odd little plug-in that seeks to address a common problem with inter-project dependencies. Read on to learn about the new Veto plug-in and how it can help keep your projects building in the correct order.more »
|Feb 15, 2007||–||
Webinar Replay: Business Benefits of Unit Testing
I mentioned a couple weeks ago that I was going to be part of a webinar with Carey Schwaber of Forrester Research on the Business Benefits of Unit Testing. Well that webinar has now been posted so you can view the replay. You do need to register to view it but if you don't want to hear from us just put in bogus data. (So why ask for it? Because some people do want to hear from us and we're most interested in enabling those people.)
|Feb 6, 2007||–||
Testivus - Testing for the rest of us
Developers need to take more responsibility for testing their code. But the majority of developers are not willing, nor ready, nor able to jump on the bandwagon of the more extreme and demanding developer testing movements such as Test Driven Development. Testivus is a proposed developer testing movement "for the rest of us".more »
|Jan 26, 2007||–||
Mocks Aren't Stubs by Fowler
Mocks Aren't Stubs by Martin Fowler, is a very comprehensive look at two pairs of issues in testing: state-based verification vs behavior verification, and classical TDD vs Mockist TDD.more »
Testing Genes, Test Infection, and the Future of Developer Testing
Some developers are easily test-infected - they take to unit testing like a duck to water. Others need some time and encouragement, but eventually "get it". A third group appears to have immunity to test infection. I invent a test-gene model to categorize these groups and look at its implications for the future of developer/unit testing.
|Jan 25, 2007||–||
Floyd's Turing Lecture on Paradigms in Software
In light of the recent conversations about the adoption of developer testing on the junit list and Artima, this Turing Award lecture by Robert Floyd seems particularly appropriate. There's a particularly good quote where he is discussing a quote from Thomas Kuhn in "The Structure of Scientific Revolutions."
"Again from Kuhn:I suspect a large number of the adoption problems for developer testing are in organizations where the old boy at the helm is clinging to an outmoded paradigm of software development. Perhaps those guys would listen to Floyd -- (Robert, not Pink.)"The older schools gradually disappear. In part their disappearance is caused by their members’ conversion to the new paradigm. But there are always some men who cling to one or another of the older views, and they are simply read out of the profession, which thereafter ignores their work."In computing, there is no mechanism for reading such men out of the profession. I suspect they mainly become managers of software development. "
|Jan 23, 2007||–||
Late Notice on Webinar
I've been so self-absorbed with my travel travails that I forgot to mention I'll be part of a webinar tomorrow morning on the Business Benefits of Unit Testing with Forrester anaylst (and seemly very nice person) Carey Schwaber. I had read some of her previous reporting on the build market, because of her mention of CruiseControl, and meeting her in person confirmed what had come across in her reports: she's pretty clueful about the the development market.
So if you're interested in the topic I think it would be worth listening. And don't worry, Carey will be the star of the show -- this time I'm just the vendor shill.
|Jan 21, 2007||–||
Lessons From The Long Road Home?
Yesterday I rashly predicted it would take me about 28-ish hours to get home from Bangalore, but now I find myself writing this from a hotel in London. It seems the relatively good luck I've had in my traveling all came to an end on this trip and over the week I've had to deal with (1) my luggage not arriving with me in Bangalore, (2) my Chennai-Bengalore flight being delayed by four hours, (3) a two-hour sit on the tarmac in Bangalore waiting for the fog to lift, leading to (4) missing my connecting flight in London. Reflecting on these minor setbacks over my bland English breakfast (I miss those idli with sambar already!) I decided there was a lesson in here on one of my favorite development/process topics, which is feedback.more »
|Jan 20, 2007||–||
STeP-Ing Out of Bangalore
It is 3:55 AM and I need to head to the airport in about 30 minutes but before my lovely 28-ish hour journey back home I wanted to jot down a repeating theme from the STeP-In Conference that just concluded here in Bangalore...more »
|Jan 13, 2007||–||
On the Flat Road to STeP-IN
I'm in London right now, on my way to Bangalore where I'll be speaking at the STeP-IN Summit 2007 on Improving Quality Assurance through Developer Testing.
On the strong recommendation of Eddie Correia (editor of ST&P) I picked up Thomas Friedman's The World is Flat. That makes it his fault that I didn't sleep on my SFO-LHR flight! I'm not sure everyone would find is as compelling as I did, but for me it could almost be a companion book to my professional memoirs, or at least my memories.
I remember a long conversation the day Roger showed me NCSA Mosaic for the first time. It was the first time I heard the word Netscape (Flattener #2), and then we talked for hours about how the web was going to change everything! A few years later Jayson convinced me that there were some really big ideas there in Open Source (Flattener #4) and we started OpenAvenue, where we hoped to create a collaborative platform for Outsourcing (Flattener #5) and Offshoring (Flattener #6).
And as a parent who has watched the world change I've often felt The Quiet Crisis and wondered if I'm doing the right thing to prepare my children for the future. It is a question that I return to again and again. I'm living in the flat world and I know how to navigate it for myself. But as I hang up from calling my family via Skype on my way to "Asia Pacific's Largest Testing Conference" I don't know what to think about their future.
|Jan 12, 2007||–||CruiseControl 2.6 Released (Finally!) It took much longer than I had hoped, but CruiseControl 2.6 has been released, and there are some big changes. The release notes cover all of them but there are a few I wanted to highlight... more »|
|Jan 2, 2007||–||
Handy eclipse trick for importing classes into existing project
We get a lot of sample code that exhibits incorrect or unexplained behavior with AgitarOne - and many times we have to set it up in a debugger or import that code into an existing project. Recently I discovered that eclipse has a very easy technique for just this use case - thought I'll share it here.more »
|Dec 12, 2006||–||
Do Not Read This!
We are working on an early version of JUnit Factory and we learned some very alarming lessons about web usability this week.
The main lesson: no one reads anything.
|Nov 26, 2006||–||
This Week in Germany
I'm off to Germany this week to give a few talks, some of the public. First on Tuesday I'll be at the iX Konferenz in Frankfurt giving the talk AgitarONE – Automatisiertes Java Developer Testing. Then on Thursday (Frankfurt) and Friday (Munich) I'll be part of the seminar JUnit-Test Generierung auf Knopfdruck!.
I hope nobody will be disappointed to hear that I'll be speaking entirely in American; my knowledge of German is limited to "ich bein ein Berliner".
|–||ONE Reason for Not Blogging I'm just finishing a particularly crazy time and I felt I owed a small explaination about why I haven't blogged for the last several weeks. Here is the short version: AgitarOne.|
|Nov 22, 2006||–||Give it up for fallibility If there's anything I've learned from adopting agile software practices and working at a company that embraces them, it's to have respect for fallibility. more »|
|Nov 1, 2006||–||
In the path of Pagan Raiders
Brian Marick is a funny guy
Those in the Agile world all know of resistance to Agile from those middle managers who see it as a threat to their power to command and control. Telling such a person that her sabotage endangers the company's ROI is like an abbot standing in the path of Christian raiders and threatening them with loss of their immortal souls: sometimes it works, but nowhere near often enough. And it never works with the worshippers of Odin.
|Sep 18, 2006||–||
Final Days to Register for CITCON London 2006
CITCON London registration will be closing this week, it is just hard to know if we will hit the deadline of Friday September 22nd or the cap of 120 people first! At last count we have 85 people signed up and if history is a guide the remaining spots will go fast.
Given the open spaces format it is impossible to predict what the exact session topics will be but a sampling of the topics (and notes) from the CITCON Chicago event from earlier this year is available on the wiki. Also available are some photos, feedback, links to related blog entries and more... More than enough to be convinced that you should sign up today!
|Sep 12, 2006||–||SDBP: Clean Code by Robert Martin more »|
|Sep 11, 2006||–||
In Boston for SDBP
I'm in Boston tonight, in town for Software Development Best Practices. I'll be giving a talk on Wednesday, along with Alistair Cockburn, on "Creating Change One Tic-Tac At a Time". The idea for this talk grew out of a conversation that Alistair and I had back at the Jolt Awards in March and it incorporates information and ideas from a wide range of sources. For my part I'm drawing on The Moral Animal for the importance of status, Taking Charge of ADHD for the idea of a token economy, Flow for insights into what people consider rewarding, Influence for some "weapons of persuasion", not to mention a host of others I can't name, plus my own experiences leading development teams and our experiences at Agitar helping our customers adopt developer testing. These last two categories are probably the most important, because that is where I've come to believe that cultural change is simply the most difficult task anyone can undertake, and changing the practices of a development team in any significant way require a change of culture. Alistiar has a similar view on the importantance and difficulty of cultural change and brings his own diverse and illustrious experiences to bear on the discussion. If you're at SDBP hope to see you there, but if you're not I'd be interested in your thoughts on the topic (j t f at a g i t a r dot c o m).
|Aug 24, 2006||–||
Build Failures Policy
I just wrote a page on our internal wiki with our policy for dealing with build failures. We thought others might find it interesting so I am sharing it here (the links will be broken for obvious reasons).
If the build fails, fix it.more »
|–||Green Shift is Bull Shift|
BayXP Summary of Agile 2006
I know there was more but I didn't take notes, so that's all you get, unless some kind soul adds more info in the comments.
|Aug 21, 2006||–||
Webinar: Test-Driven Development in J2EE, with J.B. Rainsberger
In early August J.B. Rainsberger gave a webinar on TDD for J2EE:
Test-Driven Development is often introduced through simple examples, but many developers would rather dive into the deep end. This free webinar is for those people. J. B. Rainsberger, author of "JUnit Recipes," will show you architecture and design strategies to make it easier to "test-drive" J2EE components. You'll learn how to build a J2EE application while following the cardinal rule of Test-Driven Development: Never write a line of production code unless somewhere, a test has failed.
|Aug 20, 2006||–||
CITCON London 2006 Registration Open
We are proud to announce that registration is now open for the next Continuous Integration and Testing Conference, CITCON London 2006 on October 6 & 7. Space is limited to the first 120 registrants and attendance is free. Registration is on-line.
The conference will be following the same Open Spaces (or unconference) format as the very successful Chicago edition back in April 2006. The Chicago CITCON drew an enthusiastic group of practitioners, all looking to share what they knew and to learn what they could.
We would appreciate your help in getting the word out. Please blog/post/email/chat about CITCON London 2006!
We hope to see as many of you there as can make it.
|Aug 11, 2006||–||
Failing tests shouldn't always break the build
There are many reasons why you might not want to fix a failing test right away. Maybe it's an acceptance test for a feature that you haven't written yet. Maybe it's a regression that it's just not practical to fix right now.
But what to do with that failing test?more »
Old metrics never die
If a little bit of feedback is good, a lot would be even better, right?
Is there such a thing as too much feedback?
XP doctrine says that you should stop tracking metrics once they have served their purpose. You should only have 3 or four "Things To Focus On". There's a reason for that.more »
|Jul 21, 2006||–||
University Credit for Learning About XP
James Shore is involved in what seems like an great opportunity for computer science students at Portland State University to learn some real world sklls. Along with Dr. Andrew Black, PSU Professor of Computer Science, they are putting on the course Extreme Programming: Principles & Practices. If you're up in Portland, Oregon it looks worth checking out...
Dos Equis Driven Design is Not About Beer
It is critical to remember that Dos Equis Driven Design (XXD) is not about the beer. (I'm not saying there was no beer involved, but that isn't the point...)
|Jul 14, 2006||–||
Put Your CC config in Version Control
I got fed up with updating the 20 step instructions on our wiki for configuring a new cruise control machine so I wrote a script and checked it in to CVS. Obvious really.more »
|Jul 6, 2006||–||
Seeking Brave Alpha Testers (CC 2.6)
Are you up for it?
ps: As a side-effect of the switch to Saxon CC versions 2.6 and later will require JRE 1.4 or later (though you can still build projects under 1.3).
|–||Martin Fowler's "Continuous Integration" Updated Just today I learned that a couple of months ago Martin Fowler updated his "Continuous Integration" article with lessons learned from the last 6 years. (Thanks to Jerome Lacoste for the pointer.)|
"The lesson of the bloat trochar and the rulebook"
Brian Marick is at it again with a must-read post on the Agile Testing mailing list titled "The lesson of the bloat trochar and the rulebook", but unlike all the previous posts or messages I've directed my gentle readers to view this one is entirely unquotable. To me it is a single piece, to be consumed entire or not at all. The closest I can come to providing the flavor is the embarrassing situation of quoting the post quoting Whitehead:
It's like what Whitehead said about notation: "By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems, and in effect increases the mental power of the race."... but that doesn't do it justice. Maybe better is to quote Kevin's reaction:
Outstanding post, Brian. I always wondered what the little star was for in GMail. Now I know. Your post has a little gold one next to it.So... go read it already, 'k?
|Jun 27, 2006||–||
Karl's Tinderbox Corner
Hi, I'm Karl Pauls and my team runs Agitator on a Bonsai / Tinderbox system. I'll be sharing the continuous test and continuous integration techniques that we use.
To get right to it, here is our basic Agitator / Tinderbox setup courtesy of our Product Manager, Nicole Pauls:more »
|Jun 22, 2006||–||
Integrating Agitator and CruiseControl
Aaron Rhodes has posted a good message detailing how to integrate test results from Agitator into the CruiseControl html email and the web reporting application on the Agitar forums over here. The directions detailed are of obvious interest to people using Agitator but perhaps less obviously can serve as an example for other people looking to add custom information to the CC feedback. Enjoy!
|May 16, 2006||–||Free Coffee at JavaOne Thought I'd mention that we're offering free coffee (espresso, latte, etc) at the Agitar booth (#836). From the looks of a few of you this afternoon I think you need it... :)|
|May 14, 2006||–||Attending JavaOne? If you're attending JavaOne drop me a note (jtf at agitar.com) if you're interested in meeting up. I'll certainly be attending the lunch with Kent Beck but I'll also be around the Agitar booth off and on. See ya there?|
|Apr 30, 2006||–||A Plot for CVS -> SVN Migrations? Anyone who's active on a SourceForge project is probably well aware of the lengthy CVS outage that started over a month ago... more »|
Mocking a Singleton
Over on the TDD mailing list there is a thread about mocking a singleton. There are a few good suggestions given but the best answer (imho) is that provided by Michael Hill:
Mocking a singleton is relatively easy.
|Apr 27, 2006||–||
CruiseControl 2.5 Released
CruiseControl 2.5 has just been released and it has two huge bug fixes:
Along with those bug fixes there are a few new plugins:
So what are you waiting for? Go get it...
|Apr 21, 2006||–||
Webinar: What to Do if Your Code Has Few, If Any Tests?
Next week Agitar is hosting Ted Husted of the Struts development team (and iBATIS and MyFaces and Jakarta-Commons) in a webinar on What to Do if Your Code Has Few, If Any Tests?. I'm curious to hear what Ted has to say but his talk illustrates the kind of trade-off that exist as our company grows. One the one hand we can having interesting speakers and topics like this, but on the otherhand we're now scheduling the webinars for a global audience, so the scheduled times (7 am and 5 pm PDT) probably work better in just about every other timezone than this one. (</whine>)
|Apr 13, 2006||–||
Test vs Spec or ForAll vs ThereExists
Brian Marick says that tests are not specifications but I believe there is a more fundamental distinction.
|Apr 12, 2006||–||
Tests Vs Specifications
Reading Brian Marick's post on Tests and Specifications made me wonder about how to describe the assertions in Agitator. They certainly are of the form Brian describes:
In math geek terms, specifications are universally quantified statements, ones of the form "for all inputs such that <something> is true of them, <something else> is true of the output." Tests are constant statements, ones with no variables. They look like this: "given input 5, the output is 87."This distinction comes into play when we use TDD with Agitation. The tests help us move forward one case at a time and then Agitiator helps us review if we've accurately captures the specification of the system, or if we've missed boundary cases. It is a shift from the "There Exists" to the "For All" mindset.
|Apr 9, 2006||–||
testtools for Pythonists
While still basking in the afterglow of CitCon I read a message by fellow attendie Kumar McMillan introducing the new open source (LGPL) python module testtools. Kumar said:
The main focus is fixtures but it also has some helpers for creating continuous integration scripts. This was all designed around subversion post-commit hooks and there is even a handler for you to run a SimpleXMLRPCServer.Documentation of the 7 submodules is here.
|Apr 1, 2006||–||
Refrigerator Code or Girl Code or ...
It doesn't matter if you call it Refrigerator Code or Girl Code or Beautiful Code or simply Clean Code, the meme is out there that is isn't enough to say the code works and then leave it at that. Even if you find yourself unmoved by Kathy's aesthetic arguments you should weigh Uncle Bob's assertion that "keeping your code clean is not just cost effective; it’s a matter of professional survival."
|Mar 31, 2006||–||
...The Simplest Thing That Could Possibly Work Is An Object
If you ever feel yourself drawn toward writing a static method, obey Kevin's Maxim: "in an object-oriented language the simplest thing that could possibly work is an object."
Continuous Integration at Better Software Conference
If you're going to be at the Better Software Conference & Expo (and why wouldn't you?) and you want to be infected with the Continuous Integration meme then do stop by my talk titled The Power of Continuous Integration with Automated Unit Tests on Thursday June 29th.
Agitator is Not a Test Generator
Agitator is not a test generator. It is an exploritory testing tool for developers. You turn to it to answer the questions "what does this code actually do? what did the author forget to consider?"
|Mar 29, 2006||–||
Ed Gibbs is My New Hero
He's actually practicing two of the best practices I know of: regular one-on-ones and code reviews. In my own management career I found it very hard to stick w/the weekly one-on-one schedule even though I believe it is hugely important. And code reviews are probably the best sofware development practice that (virtually) nobody does. This guy is obviously working very hard to put theory into practice and for that he has my respect.
|Mar 27, 2006||–||
Clicker Trained by Continuous Integration
Kathy Sierra's Clicker trained by our email blog entry just closed a synaptic loop for me. When I give my CI/CA talk I try and make the point that developers quickly become addicted to the positive feedback of that "build successful" email, that even this little reward, given quickly enough after the behaivor you want to encourage, is enough to reinforce the habit. When I spoke to Alistair Cockburn about this at the Jolt Awards he even used the phrase clicker training to describe it. But now reading Kathy's entry something new springs to mind -- in that same CI/CA talk I make the point that the real Return On Investment in developer testing comes when the test fails... and that's an intermittent reward!
So if you want to adopt developer testing as part of your standard practices make sure you're using Continuous Integration. In the beginning it is the "build successful" messages you'll be looking for, but for the long term you'll be hooked on those times the lamp goes red.
|Mar 23, 2006||–||EclipseCon: Want More Headless Eclipse?|
|Mar 15, 2006||–||Jolt Award and Alistair Cockburn I went down to SDWest tonight for the Jolt Award ceremony where Agitator was one of the finalists. We won the award for our category last year but this year we had to be content with a productivity award which is still a nice honor -- yay us. (Winner in our Testing Tools category was VMTN Subscription from VMWare -- yay them.) While at the post-ceremony VIP bash (no, not sure why they let me in) I was introducted to Alistair Cockburn. I was pleased to meet him because I quote him a lot in my "Continuous Integration, Continuous Agitation" talk that I've been giving all over the place (and I've got pictures to prove it). more »|
|Mar 13, 2006||–||Project Dependencies Using Ant On the CruiseControl user mailing list there was another instance of the FAQ "how do I build by dependent projects", and Joe Schmetzer linked to his recently posted article on Project Dependencies Using Ant. Neat technique and worth a read if only as an illustration of clever use of common Ant scripts.|
|Feb 28, 2006||–||CruiseControl 2.4.1 Released Our first attempt at a timeboxed release, version 2.4.1 is now available for download. The most noticeable difference in the release will be the new (and hopefully improved) index.jsp in the reporting application, but there are some new plugins as well: ExecBuilder, Maven2Builder, PropertyFileLabelIncrementer, and WeblogPublisher.|
|Feb 22, 2006||–||
A Recipe For Making Developers Write Tests
This is the only thing that has ever worked for me.
1. Test your own code as well as you can
It won't be long until everyone will want to have tests.
Most developers will not make the investment until they have seen proven returns. The management challenge is to find the early adopter with the courage and vision to take that first step.
|Feb 20, 2006||–||CC, CI and CA in Asia-Pacific I still haven't gotten around to writing up a summary of my trip from December but this Friday I'm heading out again, this time going West instead of East. This'll be a bit longer trip, starting with a week in Japan and then with a second week in Austrialia and New Zealand. For the most part I'll be speaking on the same topic that I did on the last trip: Continuous Integration and Continuous Agitation. This talk went over very well eacy of the half-dozen or so time I gave it in Europe so I'm excited to be able to offer it on two new continents! If you live in these countries check these cities and dates and maybe you can join us. more »|
|Feb 18, 2006||–||Software Development Learning from the Spacecraft Business Glen Alleman was reading Development of the Space Shuttle and got to asking "is there anything we can learn from the spacecraft business that is applicable to software development?" (via Lasse Koskela)|
|Feb 16, 2006||–||Sharing Pre-configuration After I posted my blog entry on Template Projects with CruiseControl 2.4 Greg Gipson asked an interesting question on the CruiseControl users mailing list about sharing pre-configuration information across multiple CruiseControl servers that turns out to have an elegant answer (if XML Entities can be considered elegant). more »|
|Feb 10, 2006||–||Template Projects with CruiseControl 2.4 At the end of January CruiseControl 2.4 was released. Among all the new features and bug fixes one of the most interesting to me is the idea of using plugin preconfiguration to create template projects. By coincidence over the last few weeks Kevin has been doing major surgery on our build system to make everything more standardized and logical, so it turned out to be a good time for us to try out this template project idea of ourselves. more »|
|Feb 9, 2006||–||Headless Hello World at EclipseCon 2006! Way back in August I wrote a pictorial guide to creating a headless hello world eclipse plug-in, and then in December I tapped the power of my massive blog fanbase to shill for votes for my EclipseCon short talk proposal. Today I'm happy to report that our efforts were a success and to invite you, if you're going to be at EclipseCon, to stop by March 22nd at 4:15 (that's 16:15 for my international audience) and listen to the very exciting short talk "Hello World" as a Headless Eclipse Plug-in. I promise it will be worth all 9 minutes of your time.|
|Feb 8, 2006||–||Invitation to Continuous Integration and Testing Soiree This message is being sent to announce an upcoming event for everyone interested in continuous integration and the type of automated testing associated with it. (Entry updated Feb 16th with dates and website.) more »|
|Feb 6, 2006||–||
So you want to build a spice rack?
"A hammer?" he asks. "Nobody really buys hammers anymore. They're kind of old fashioned."
(Now try testing it...)
|Jan 20, 2006||–||CruiseControl 2.4 RC3 Just a quick note that CruiseControl 2.4 release candidate 3 is now available here. The target release date is Friday, January 27th, so take this opportunity to get in feedback before the release! Lots of new features and bug fixes (see the change list here). Having just tried out release candidate 2 today I'll endorse the new jsp status page as much improved.|
|Dec 18, 2005||–||
Humane Interface or Minimal Interface ?
Bruce Eckel weaves together the two hot topics in blogland this week. One is the Humane Interface vs Minimal Interface discussion which pits Java's List API against Ruby's. The other is the "Death of Java" topic.more »
|Dec 8, 2005||–||CC, CI and CA in London, Antwerp and Stockholm Tomorrow I head out on my first ever european adventure, flying to London to spread the word about Continuous Integration and Continuous Agitation using CruiseControl. You can catch me on the morning of the 13th in London (location and registration here), on the 14th I'll be speaking at JavaPolis in Antwerp, and on the 15th in Stockholm (location and registration here). I'm hoping these events will attract some of the people I've interacted with on the CC mailing list and maybe even some blog readers. As a special bonus to my loyal readers, if you have a particular question you want answered go ahead and ask it here and I'll try and work it into my presentation. See you there!|
|Dec 1, 2005||–||Shameless Plugs|
Utility Functions as a Code Smell
Headless Hello World at EclipseCon 2006?
Back in August I wrote a pictorial guide to creating a headless hello world eclipse plug-in; now I've proposed to cover the same information in a short talk at EclipseCon 2006 and I've decided to use my massive blog fanbase ("hi mom!") to shill for votes. If you're interested in the content (or just an adoring fan) you can vote for me here (registration required to vote).
Oh, and if you're really really interested in learning more about this topic than can be covered in 5 - 10 minutes (the duration of a short talk) then you might be interested in voting for Paul Dzilenski's Creating an Eclipse IDE Command Line Interface long talk proposal.
|Nov 18, 2005||–||
Influence of Other Languages on Design
The Pragmatic Programmers recommend learning a new language every year. Not because you need to know a whole bunch of languages, but because other languages use idioms that you might not think of using in your everyday language.more »
What's the Use of Coverage
There is a discussion on the JUnit list about whether coverage tools are valuable.
I ran a coverage tool on a project of mine last night and found that almost all the coverage gaps were in boilerplate code. An interface required me to return false in a whole bunch of classes.
The duplication was already bothering me. The duplication plus coverage gaps bothered me enough to extract a common base class. Coverage was back up to almost 100% and I liked the new design better.
|Nov 17, 2005||–||
New Goal: Refigerator Code
Dennis van der Stelt lead me to this article by Bob Koss where he defined Refigerator Code:
What’s that? It’s code that you’re so proud of that you want to take it home and hang it on the refrigerator, right alongside of your children’s drawings.
|Nov 5, 2005||–||
Inspired by A Thought Inspired by the CSS2 Specification
Brian Marick was inspired by the CSS2 spec to note that:
That suggests that a specification should not be written to a consistent level of precision. Precision is needed only where disputes have already occurred or are likely.Translating that into developer testing I immediately thought "That suggests that unit tests should not be written to a consisten level of precision. Precision is needed only where disputes (or confusion or bugs) have already occurred or are likely."
|Nov 4, 2005||–||Open Quality Recognized Kevin Rutherford, on his blog Silk and Spinach describes our open quality initiative and hits the nail right on the head. more »|
|Nov 2, 2005||–||
Wacky Design Ideas
Every now again, I hear of a wacky design idea or a challenge to a deeply held opinion on design.more »
|Nov 1, 2005||–||
Domain Specific Language with a lifespan of 2 hours -- or basic data munging
Last night I needed to categorize all of the JVM opcodes according to their effect on the stack. Since there are around 200 of them, it seemed like it would be a tedious task. Fortunately, the JVM spec is online in an editable format. I thought, "Maybe I can parse the opcodes out of the spec and then put them into a format that I can use to build my categorization automatically."more »
|–||Show Me Your Tabs and I'll Tell You Who You Are A few weeks ago my friend Julio emailed me a picture of the stack of books he has on his desk waiting to be read. I thought this was a great thing and if I was a little better organized I would have sent him a reciprocal email already. I was reminded of his picture the other day when I looked at the stack of books on my desk at work -- Extreme Programming Explained (1st edition), Design Patterns, Slack and Unleashing the Ideavirus. It really struck me that this collection has got to mean something... more »|
|Oct 28, 2005||–||
Finalizers and with-open-file or File.open
Tom Ball has an interesting blog entry on a good use for finalizers. Library designers can use it to let users of their library know when they have not cleaned up a resource.
The comments on the entry are enlightening. One comments that this could slow down garbage collection. Another comments that they always make sure that any code in their library that has system resource handles manages the closing of that code. I have used this approach in the past, but it was somewhat ugly.more »
|Oct 19, 2005||–||
TDD is about Testing?
Alan Francis makes the bizare claim that TDD is about testing:
...one major advantage of TDD is the ability to answer the question "how will I know I am done?". We can aswer that question because we have a test that will fail if we are not done and pass if we are.Of course this is exactly what I was on about when I wrote about why I like the Continuous Testing plug-in so much. (Thanks to Jason Yip for the pointer.)
|Oct 18, 2005||–||An Interesting Forum Happened on the Way to the Home I have a fair commute from Mountain View over the hill to Santa Cruz County. So, I try to make good use of the time by listening to podcasts of technical presentations. Yesterday, I was driving home on Highway 17 listening to Tech Nation with Dr. Moira Gunn, It is a technical discussion program broadcast on NPR, but also available on IT Conversations as a podcast. more »|
|Oct 12, 2005||–||XP Stages of Acceptance My friend Kevin is a very smart guy. He did a talk that was an intro to XP and one of his slides was "XP Stages of Acceptance": more »|
|Oct 10, 2005||–||
Tests as Double Entry Bookkeeping
Uncle Bob gets it just right:
I have been consulting for a number of teams that have adopted Agile Methods, including TDD. One common issue I have found is that developers drop the discipline of TDD in the face of schedule pressure. "We don't have time to write tests" I hear them say. Before I comment on the absurdity of this attitude, let me draw the parallel. Can you imagine an accounting department dropping dual entry bookkeeping because they've got to close the books on time? Even before SARBOX such a decision would be such a huge violation of professional ethics as to be unconscionable. No accountant who respected his profession, or himself, would drop the controls in order to make a date.
|Oct 6, 2005||–||Ruby, Rails, Eclipse and a Link to Remember I posted before about the virtuous cycle I envision when I link to something useful from my blog: it'll be easy for me to find it later, my vast :) reader-base will be exposed to this useful thing, and it will be more likely to be found by people via some related google search. The useful item for the day are Brian Hogan's excellent directions on Setting up a Rails Development Environment on Windows Using Eclipse. If you're using Ruby/Rails but not on Windows don't let that stop you from taking a look because some of the best parts of about setting up the external tools in Eclipse. In fact I think the directions are worth looking at for any Eclipse user just to get a good idea about some of the options that are available. I've been using Eclipse off and on since 2.x and I learned quite a bit about things that I always knew were possible but didn't know exactly how. Jtf says "two thumbs up".|
|Oct 5, 2005||–||
Interviews in a Blink
Malcolm Gladwell, in Blink, tells a story about how some students were asked to evaluate their teacher after a semester.more »
Cheat Sheet for Interview Candidates
Just to make it easy for any potential candidates out there, here's my whole interview question for the J2EE position.
I want you to build a Hello World application in J2EE. I want you to do the simplest thing that can possibly work.more »
Tips for being a good interviewee
1. If you are interviewing for a company that makes tools for developer testing you should probably know something about developer testing.more »
|Sep 27, 2005||–||Stop: The Bar is Green I think it was repeated hints from Robert Watkins that finally got to me. I took the time to install David Saff Continuous Testing plug-in for Eclipse and I'll tell you now that I never want to be without it again, but not for the reasons I've heard from other people. more »|
|Sep 10, 2005||–||Cockburn, Goal Displacement, and Running Tested Features On Friday Alistair Cockburn posted an article with the provocative title "Are Iterations Hazardous to Your Project?"... more »|
|Sep 8, 2005||–||
Dogs and Doorknobs
William Pietri on the extreme programming mailing list:
Tight feedback loops provide excellent learning environments. Bacteria learn to beat an antibiotic in a decade or two. But it will be quite a while before dogs evolve their way around the doorknob.
|–||Patterns for Iteration Retrospectives Bill Wake's post to the extreme programming mailing list caught my eye... more »|
|Sep 2, 2005||–||
Test Driven Life
Test Driven Development isn't just for software anymore. It's for hacking your life.
I noticed recently that I tend to live my life outside of software development test-first. The idea originally came to me from a friend, Russ Rufer, founder of the Silicon Valley Patterns Group. I forget the circumstance, but nonetheless the practice stuck. more »
|Aug 27, 2005||–||CruiseControl 2.3 Available After a lot of work and a few false starts CruiseControl 2.3 has been released. Read on for some highlights or just go get it here. more »|
|Aug 24, 2005||–||
Late followup, but JavaOne was a lot of fun. My sessions went well and I got to attend several enjoyable sessions as well. Thanks to everyone who came to my talks.
For the talk about plugin writing, you can download the slides here
Grow Your Harness Naturally
I wrote this article for the March 2005 issue of Better Software. Now available for the first time online... enjoy!
I have worked with many testing common organizations where a common pattern is repeated over and over. It goes something like this — we realize there is more manual testing to do than time available, we decide to automate the testing, and we begin working on a test harness. Several weeks later, we have the start of a harness, but it’s barely useful and we still have not written any tests. At this point, we’re behind — so we abandon the harness and revert to manual testing.
Rules for Unit Tests
Michael Feathers gave this excellent set of rules for unit tests on the XP mailing list:
I have these rules that I use for unit tests, primarily because I encounter so many teams that start writing end to end tests, call them unit tests, and give up because "testing takes too long". To me, a test is not a unit test if:
|Aug 23, 2005||–||
Relentless Testing and The XP Oath
James Shore has reminded us what the extreme version of developer testing is about:
We will test everything that could possibly break. We will have tests at the customer level as well as at the programmer level. We will write our tests before we write our code, possibly moments before. We will automate our tests and provide a binary "pass/fail" mechanism for evaluating the result.Read the rest of his "Extreme Programmers Oath" over here.
|–||Headless Hello World in Eclipse Yesterday I needed to find out how to create a headless (console-mode, non-GUI) application plug-in for Eclipse, and while I could easily find information assuring me it could be done, I had more trouble finding out exactly how to do it. Turns out it is really easy. My "headless hello world" plug-in is here, and if you read on you'll get my pictorial guide to building your own headless hello world plug-in. more »|
|Aug 18, 2005||–||Joel (Still) Doesn't Know XP I love reading Joel On Software. He's a smart guy with lots of good ideas, which makes it all the more frustrating when he's wrong about something. The topic on which he is mostly likely to be wrong is XP, but that isn't too surprising as he's never actually done it, which makes it a bit like criticising someone using the Penhold-Style grip when you've only ever used the Shakehands-Style. You might be a very fine table tennis player, but you've now entered the realm of speaking out of your... ignorance. And that's about how it sounded in Joel's recent article on The Project Aardvark Spec... more »|
|Aug 17, 2005||–||CruiseControl Goodies We recently completed a new release of Agitator and Dashboard so I've had a bit of time to spend on my secret double life as a CruiseControl contributor. The obvious news is that we are nearing the release of 2.2.2 with lots of yummy new features (latest release candidate available here) but less obvious -- but more exciting to me -- are the neat 3rd party tools that are popping up. Here's a few that I know about... more »|
|Jul 20, 2005||–||Shipping It I love to read, to learn new things or even new ways of communicating old truths. An ancillary joy is then handing out the books I've read to other people, and then seeing their reaction. It is always nice if the recipient enjoys what they read, but it is a really special feeling when you give someone a book and it changes the way they think and act. So I'm really pleased to have just finished reading a book that I know I'll be handing out time and time again, and that's Ship It!, "A Practical Guide to Successful Software Projects". more »|
|Jun 25, 2005||–||
I would like to introduce myself as a new Agitator. I am Bob Evans and I am working on some of the next product features for the Agitator.more »
|Jun 15, 2005||–||Open Quality Data in the Annual Report? Kent Beck told me that he showed the Agitar Management Dashboards at a public company where he was consulting about software development process. Then he asked them what the impact would be on their software development organization if they had to track such data for their key software applications, and then publish it on their public website. And if they also had to refer to the data in their annual report and explain any changes in trends. more »|
|Jun 8, 2005||–||Creating a Value Type for Validation (epilog) Here's another good reason for using a type (Creating a Value Type for Validation) even for something as simple and unlikely to change as a class name ... more »|
|May 26, 2005||–||
InfoWorld's Jon Udell Interviewed Alberto Savoia
On Thursday May 26 Jon Udell interviewed Alberto Savoia. Alberto had just been selected by InfoWorld as one of the 25 Top CTO's in the US in 2005. Jon asks Alberto about his vision for Agitator and Alberto demos Agitator extensively.
You can see the replay now if you don't mind registering. If you do, come back in a few days and we'll point you to an unguarded version.
|May 8, 2005||–||
On The Cover!
Of course we were incredibly proud winning the Jolt Award by Software Development Magazine - but to be selected for the cover page was even better!
To be sure - the team that has created Agitator and is driving the innovations for the coming releases is (by now significantly) larger than the group on this cover page, but the contributors to Developer Testing were selected to represent the team.
Oh, and Alberto wants to be sure it is mentioned that he is not as small as he appears on the picture - he was sitting on a chair in front of the rest of the group. These vain CTO's!
|Apr 18, 2005||–||Sustaining Legacy Code Last month I visited some customers and prospects in India. One of them was an outsourced provider of software engineering services. Sure enough, some projects they get are to maintain and sustain an existing body of code. "So how does Agitator help?" they ask. more »|
|Apr 11, 2005||–||The Monty Hall Problem The Monty Hall problem comes up every now and again - it's currently being discussed on the XP mailing list. It's a great problem. The description of the problem is well discussed on the web, so I won't repeat it here. more »|
|Feb 18, 2005||–||Is it Wise To Aim for 100% NTF ? 10 steps on the journey to the perfect metric. more »|
|Feb 17, 2005||–||Needs and Wants Recently while chatting with Alberto the phrase "what the user needs and wants" came up in our talk. That got me thinking a bit, what's the difference. It struck me finally that, that's the core difference between a market success or not. more »|
|Feb 9, 2005||–||Failures in Unit Testing This morning on the Agile Testing mailing list someone pointed out Mike Clark's blog entry "Failures in Unit Testing". more »|
|Feb 6, 2005||–||The Developer Testing Burden I started at Agitar (Engineering Management) in August - but have been associated with the team at Agitar for the last several years. In my past life at SunTest (Sun Labs), I was responsible for creating several Java testing technologies (primarily focused towards load testing) - and being a geek at heart - the "toughness" of the testing problem has always kept me charged up about solving it. more »|
|Jan 31, 2005||–||Blind Spots, Frequent Testing, and Software Agitation Andrew Binstock's column Integration Watch in Software Development Times of January 15, 2005, reflects on the difficulty of writing developer tests for cases that the developer does not anticipate. more »|
|Jan 27, 2005||–||The Developer Testing Paradox Most software development organizations have compelling reasons to improve their quality, reduce their costs, and accelerate their schedules. Time after time, and year after year, the majority of software projects are of lower quality than desired, cost more than budgeted, and are completed later than planned. Many projects can only be branded complete failures and have to be restarted from scratch. more »|
|–||A Bad Day With Continuous Integration Yesterday we had a problem. Just before 6 pm someone checked in some changes that broke our unit tests... more »|
|Jan 13, 2005||–||What is Agile Testing ? A conversation on the agile-testing list made me think some more about the two types of testing that I blogged about in TDD and Agitation. more »|
|Jan 11, 2005||–||The Feng Shui of Developer Seating Over the past year we've had several different variations on our seating, with the common theme of an open workspace. Originally there was an 8 desk circle, which in time was supplimented with some cube space. Then we broke off a separate team for The XPeriment and added a separate 'pod' of 4 tables. With several minor variations all these seating options worked well and I felt pretty safe thumbing my nose at those people who advocate offices with doors that close as the best environment for development teams. more »|
|Dec 13, 2004||–||
Kent Beck, Google and Expert Panel videos from Developer Testing Forum
Agitar has posted the videos from the November 17th Developer Testing Forum--they are now online at www.unikron.com/agitar1/. Presentations include Kent Beck, Sriram Sankar (Google), and an Expert Panel (Russell Gold, Oracle; Rob Mee, Pivotal; Sri Muthu, Wells Fargo; David Vydra, Testdriven.com).
|Dec 10, 2004||–||
XSL, Whitespace, and a Link to Remember
XSL is one of those technologies that I need to interact with often enough that I care about it but not frequently to be good at it. Today while looking for something else -- anyone out there know if there is such a thing as a "breaking non-whitespace" in html? -- I came across this very useful page, which is part of XSL FAQ for Mulberry Technologies' XSL mailing list that Dave Pawson maintains. I get a kick that such serendipity can help me find something so useful, and that by posting about it I can both ensure that I can find it again when I need it and make it more likely for other people to find it. Aren't virtuous circles pleasant?
|Dec 9, 2004||–||TDD and Agitation I have been doing Test Driven Development (TDD) for about four years now and agitating for a little less (it's my second anniversary as an agitator today) and I have thought a lot about how to marry the two testing styles. A discussion on the TDD mailing list today (http://groups.yahoo.com/group/testdrivendevelopment/) finally gave me a name for what I have been doing for a while. The discussion centered around the relative merits of TDD versus Design by Contract (DbC) and a surprising - surprising to me anyway - number of people said that two are complementary and that they do both. That's exactly what I have been doing without realizing it. more »|
|Nov 17, 2004||–||Live blog from the Developer Testing Forum. I am here at the 350 seat PARC-George E. Pake Auditorium in Palo Alto, waiting for the Forum to begin at 9am. We're expecting a good sized crowd. Traffic was terrible, but already a lot of people are in the lobby...I hope the food holds out. The combination of Kent Beck plus talent from local companies such as Google, Wells Fargo, and Oracle has resulted a lot of interest. more »|
|Nov 16, 2004||–||DeveloperTesting to cover Kent Beck presentation at Developer Testing Forum with live blog Agitar Software and SDForum are co-sponsoring the November 17 Developer Testing Forum, to be held from 8:30am - 12:30 PST at the PARC-George E. Pake Auditorium in Palo Alto, California. I will be reporting from the Forum via a live weblog on DeveloperTesting.com. more »|
|Nov 9, 2004||–||Scott Adams, Agile Pioneer The combination of my blog entry yesterday and my drive home made me realize that the Agile pantheon is missing an important entry: Scott Adams, the creator of Dilbert. more »|
|Nov 8, 2004||–||Murphy's Law and NASA A couple of weeks ago Slashdot had a discussion "Murphy's Law Rules NASA". While the MSNBC article that was the occation for the topic was interesting in itself, what I found really notable was the writeup by the submitter. It contained the best summary argument I've seen for using Agile feedback-driven processes in favor of big up-front just-dont-make-a-mistake processes: "Human error is an inevitable input to any complex endeavor. Either you manage and design around it or fail."|
|Nov 5, 2004||–||Changing Machines Like Reusing Code? After a year with my Toshiba Satellite Pro I'm moving to a shiny new IBM T42 ThinkPad. The process reminds me quite a bit of starting a new project that you know is similar to an old project that you don't want to change. You have a choice between just copying everything over blindly, knowing that you're taking good useful stuff as well as useless out dated cruft, or you can painstakingly review what's there and take only what's worth taking. Does the approach someone takes as they migrate machines reflect the approaches they will take when developing?|
|Nov 4, 2004||–||CruiseControl 2.2 Last week the CruiseControl community released version 2.2 of this excellent continuous integration/build tool. This release adds scads of new features but at least as interesting, at least to me, are the stories behind some of the release highlights. more »|
|Oct 2, 2004||–||Individual Weblogs We have moved the developertesting.com site over to a new linux server and are now creating it with Movable Type 3.1. That gives us some capabilities we did not have before. One of the first changes we are making as a result is to give the contributors to the site their individual weblogs. This way they can write about more varied topics and decide per entry if it should appear on the main developertesting pages. more »|
|Sep 27, 2004||–||More Unlikely Heroes In the current Better Software cover article I describe our continuous integration process and I hope to persuade readers to adopt the practice of automated continuous integration. I don't know of any other agile process that is as easy to adopt or that will yield such immediate and significant benefits. But while my article focuses on CruiseControl I wanted to make two points: more »|
|Sep 13, 2004||–||Creating a Value Type for Validation (revisited) Earlier in the year I wrote about introducing a wrapper type to encapsulate the validation of a value that is essentially just a string (see Fight Complexity with Complexity). I just ran into the flip-side of this - the anti-pattern if you like - and I felt compelled to rant about it. more »|
|Sep 7, 2004||–||Oozing Confidence Mike Clark writes about his visit to Agitar's office: “I got an opportunity to visit Alberto's project a few weeks back and witness first-hand those infamous lava lamps. You really can't miss them. When I walked in, the red lamp was bubbling. And yet the managers weren't beating the programmers about the head and shoulders, as some might fear. Indeed, I didn't sense any sort of panic or condescension. What I did sense was confidence.” more »|
|Jul 16, 2004||–||Testing HTML Pages I started this article intending to talk about a technique we developed for testing Velocity templates but realized that there was enough background material for a separate article on testing html. So, this entry describes how we developed a harness for checking the output from the Management Dashboard. A second entry will talk about how we adapted the harness for testing Velocity templates. more »|
|Jul 15, 2004||–||JavaOne Pictures Looking over developertesting.com we certainly have been a bit slow with our postings recently. We do have a few excuses, but at the same time I promise we'll get back at it this month. About the excuses?: we shipped version 1.5 of the Agitator, started operations in Australia, India and Japan, did more customer briefings than ever before, and we did exhibit at JavaOne! more »|