Archive for December, 2007

Beachcombing

Here’s a quote from a book on beachcombing that ties perfectly with software testing: “a beachcomber’s life is a demanding one that calls for discipline and zeal… it’s the endless seeing that causes the psychic strain. It’s the richness of life in the tidal zone.” After working through numerous internal builds there is a psychic strain in keeping my eyes open to something I’ve seen what feels like (and may be) dozens of times.

I am literally getting close to the final round of testing on a project. I can’t write projects specifics but I can write about how it feels at the end of testing and tactics I use late in the game.

The end requires more discipline than creativity – my opinion. The bugs I find in the final cycles tend to be less interesting, less exciting but necessary to find and deliver.

I like the comparison to beach combing because I collect sea glass – ok here goes a digression (I didn’t really know I digress so often until I’ve been working with Mike Kelly who gracefully has pointed it out to me). I grew up in Boston and spent many summers on Cape Cod – being near water is important to me – now years later I live in a ‘burb of Chicago, a mile from Lake Michigan near a beautiful beach. I beach comb and collect sea glass even here in the Midwest. If you don’t know what sea glass is you can learn about here. I happen to have what I would consider a pretty decent collection that’s taken years to accumulate. Yes, years. Collecting sea glass takes patience. So does collecting the final round of bugs.

Software bugs are like sea glass – interesting small broken bits that we scavenge for. Consider this phrase from Wikipedia on beachcombing: “Sophisticated recreational beachcombers use knowledge of how storms, geography, ocean currents, and seasonal events determine the arrival and exposure of rare finds.” Certainly compares to what an experienced tester can have up their sleeve compared to someone new in the field. Knowledge of how bugs breed and cluster, how moving a build to a different environment (testing to production or preproduction) can uncover configuration issues and each release can expose rare finds.

I want to point out some distinct WIFFMs and be less abstract:

Recognize some testing requires raw discipline. Even sophisticated combers deal with the grueling aspect of many hours hunched before finding the final bits and sometimes without a find at all. I use the term raw discipline because in all honesty, the final rounds of testing can require more discipline and focus than earlier rounds (at least for me). I’m tired right? The big splashy bug finds are gone and now all that remains all the small shards. And here we go again with yet another build.

So what’s going on during these final rounds of testing? Like sea glass – when I think I’ve found a broken bit, I turn it over slowly and evaluate. Always be willing to discard a find.

Each build provides opportunity for new finds. I feel it is my obligation to stay focused and disciplined at the end of release cycle. But I am human and I get bored, I fidget, I long for the great finds from the early builds, I miss the gotcha bugs while I’m left combing through an application looking about for a small paltry bucket of low priority defects – these little low bugs are not as joyful to find. But then again, I remind myself that I’m part of a team that fine-tunes a product before it releases. I can part of what makes a product – shippable.

I would consider this combing process another element of what I introduced as sweep testing. For as broad as the strokes of testing are at the beginning, the strokes at the end are subtle, a fine filtering. It takes ingenuity in the beginning to feel like I’m outwitting the coders to think of conditions and permutations that make an application twist. But at the end, it’s about finding comfort for the team that product will stand well in production.

And my tactics are different too. I have to force myself to stay seated – yikes, do I want to admit this? But yes, I do because there is – or at least for me the reality that at the end of product build, it is simply a hard hoe. I have to stay focused and alert – after all late introduced bugs are possible and can destroy a release.

I have small personal tactics that work for me. And I will distinctly explain them. (I would have thought this might be dull but email tells me that people want specifics so here goes …)

I barter with myself– can I finish this cycle within X period of time? When I’m done this cycle, I’ll take a stretch. Late in the day, I’ll step out – buy a coffee and since I have the good fortune to work from home often and live near the beach I’ll head over to the Starbucks by the lake. Take 15 minutes, drink expresso, stare the water, and refresh my mind. And then it’s time to get back and go another round. I remind myself of my obligation to deliver, that sometimes it’s discipline which isn’t the brilliant or exciting part of testing but the commitment.

I use my notes. I’ve kept my notes all along the way and now I use them. I go back and I read. What were my first questions about the product? Sometimes I am amused to see how much I didn’t know in the beginning and how much more I know about an application after months or weeks of testing. But the basic questions from the beginning help me at the end – how? – because they’re centering questions – usually the high level questions are guidance to remember what’s important.

I look through my notes, where did I find issues? What areas was I confused about before, because confusion holds opportunity. I use my old Excel files where I’ve captured details. I use worksheets in Excel files to separate ideas by testing areas or categories and now I have those notes, thoughts, tests, bugs – it’s just a method of being organized and not that I’m advocating one method over another – it’s about returning to my notes, not what my notes look like or how I write them. When I’m highly organized I have notes from every release I touched, I know what tests found what bugs. It’s not a documentation heavy process, I write without effort.

I often re-run a short risk analysis in my head. I ask myself continually: what would be awful if it happened in production? I find this to be the single most centering sobering thought to focus my energies. The thought of a possible slip to production is what pulls me through the end.

Share
Posted in storytelling | No Comments »

CAST 2008: The Call for Papers

The official Call for Papers has been posted for the Conference for the Association of Software Testing – see the full CFP.

The theme is Beyond the Boundaries: Interdisciplinary Approaches to Software Testing. I’m excited about the theme – I’m looking forward to discussions and papers surrounding how we learn from different fields and bring that knowledge into the practice of software testing. As one of the program co-chairs for the conference, I’ll be able to review paper submissions and help ensure that the theme means something in terms of the overall spirit of the conference.

The entry on interdisciplinary is worth a read as refresher for what the term truly means. I especially like this phrase: “Interdisciplinary approaches typically focus on problems felt by the investigators to be too complex or wide-ranging to be dealt with using the knowledge and methodology of a single discipline…”

If you have any questions re: paper submissions please use the email address CFP@associationforsoftwaretesting.org . This way my program co-chairs (Doug Hoffman, Christelle Sharff, Morven Gentlemen) and I will see all questions and comments that come in.

Submissions deadline is February 4th.

Share
Posted in conferences | No Comments »

Dining philosophers and semaphores

Multi-user testing has been on my mind recently. I’ve tested three different applications within the last two months for MU issues and in all three applications I’ve found defects. One book I’m currently reading is The Little Book of Semaphores . I just discovered the book although its been around awhile. Its helping me generate ideas about MU testing. The book holds a collection of stories created over the years to describe concurrency issues and related problems and possible solutions.

Edsger Dijkstra created the first story in the series. He used the story format to explain and teach in a tale widely known as the dining philosophers problem. This story works well for me because concurrency is a topic of interest and I enjoy a good story. I like the dining philosophers problem because it’s so accessible. And I admire how Dijkstra stepped outside of any specific programming language and computer terms to build a story that illustrates a problem and possible solutions. Deadlocks, race conditions, and starvation of resources are makings for a good testing story.

I first learned about MU testing from a previous boss of mine, (thanks again Bob). And I continue to learn about MU testing. These are some of my unrelated thoughts about MU testing.

I don’t hear deadlocks or concurrency testing discussed very often even thought as recently as within the last two months, I’ve found issues in this category. How odd because I would think any category of testing that reaps bugs would be discussed more often.

I suspect, although I have no proof is when the word concurrency is raised, we leap to thinking about performance testing and volumes of users. In my mind and in my MU testing, it’s not about volume. It’s about timing. After all in the dining philosophers problem, there are only five philosophers mentioned – not a dozen or hundreds of philosophers and yet it’s enough resources to cause problems.

Another thought that comes to mind is how easy this form of testing is. Forget scripting, two keyboards and solo testing can cover a cycle of MU testing. I guess that’s my opinion but I think it’s a short fairly easy cycle to cover.

Very specifically the testing I do in this category can be reflected as 3-2-2. There are three operations I focus on: add, update, delete. There are two timings I focus on: same time and staggered timing. And two users because that’s all the users I need to simulate in order to find a problem.

Another reason the topic is on my mind is that I’ve written an article about MU testing which should be out early in ’08 as long as my editor is ok with what I’ve written.

Something I don’t know but would like to figure out is – are deadlocks more likely or less likely to take place with faster processing PCs and servers? My first inclination is no because the speed of grabbing and releasing a lock on an object might be faster. But then the more I think about it, perhaps with faster processing, collusion is more likely. I just don’t know. All I do know is when I grab two keyboards and test with frequently used objects in the applications I’m testing, I can usually hit some type of error. Good enough for me.

Share
Posted in SQL | No Comments »

In the back of the house

Someone asked me recently if I knew anything about data dictionaries and since I wrote one some years ago it started a trail of reminiscing. In fact, the more I thought about it the more I knew I likely had a copy of my work from the mid 90’s. I reassembled my oldest computer, the only computer that still has a floppy drive, dug in my attic and found a handful of floppies discarded in a box. I went hunting.

I found a stack of memories buried in test plans and assorted artifacts. It was an interesting experience reading my old work and being able to recall how I felt, read the ideas I had. I could hear my own voice in my head; watch my own thinking from the outside.

And for reasons, these old memories tie to a very recent experience. Let me explain – I’ve worked a short contract as a tester over the past couple of months. I’ve been someone’s virtual tester. I don’t know the team, they don’t know me. I don’t know the product that well either which was an unusual but interesting request. I was brought in at the finale in hopes that I could find bugs with little to no preamble. And I have completely enjoyed this contract. Why? And why would looking through old floppies make me think about this recent experience. From the outside these experiences have nothing in common. And yet on the inside these experiences tie perfectly together.

What did I find? I loved testing software. I loved being left alone to think, to ponder, to examine, and to try out ideas. I’d spend hours of planning and testing; working alone in the test lab. This was years ago, years before I would become a manager and begin fighting for resources, fighting for budget. I used to spend my time with equally quiet thoughtful developers who liked building products. And who, once I could show that I was trying to help, would seek my work and then I was a member of building something. I wasn’t yet a member of managers who spent their time fighting and in meetings. I was in the back of the house. I was considered a geek, typically considered as part of the Dev team not apart from the Dev team. This was a perfect fit for the INTJ of me, far from the maddening crowd.

And the recent project work gave me the same charge. Working from home in the quiet, hired for my brain not my politics. I want to find more clients like this. People, who will hire me as their virtual tester, let me stay in the back of the house. It was the quiet contemplative aspects of software testing that drew me in and fed me intellectually. And these are the aspects I miss when I get thrown into different fires. I work best for people who value what a tester finds which oddly is not every client.

I’m not as shy or as quiet as I used to be. I have more E than I ever did but at my core, I am still an I. (I, E and INTJ are references to Myers-Briggs testing.) And actual hands-on software testing affords me intellectual work that absorbs me.

If you went digging what would you find? It matters. It matters to you personally and without a doubt, it will show up in your work. Your aspects may be very different than mine but when we can find the elements we enjoy we’re in a better position to find those elements again. Do you know what elements of your work feed you?

Share
Posted in self-motivation | No Comments »

Switch to our mobile site