Monthly Archives: May 2014

Getting Better

When I take on a non-trivial testing task, my employer should get three things:

  • A test result.
  • A reusable test artifact.
  • A better tester.

So when I approach a new task, I ask myself:

  • How can I shape this work so it makes me better?
  • What new skills will I acquire? (And retain!)
  • What new knowledge?

(Hint: If I can’t think of anything else, I try to learn — really learn — two or three new keyboard shortcuts. I look for what mouse moves I’m repeating, and replace them with shortcuts I look up on the web.)

Something for a Friday Afternoon


Of fighting men they have full three score thousand.


There’s five to one; besides, they all are fresh.


God’s arm strike with us! ’tis a fearful odds.
God be wi’ you, princes all; I’ll to my charge:
If we no more meet till we meet in heaven,
Then, joyfully, my noble Lord of Bedford,
My dear Lord Gloucester, and my good Lord Exeter,
And my kind kinsman, warriors all, adieu!


Farewell, good Salisbury; and good luck go with thee!


Farewell, kind lord; fight valiantly to-day:
And yet I do thee wrong to mind thee of it,
For thou art framed of the firm truth of valour.



He is full of valour as of kindness;
Princely in both.

Enter the KING


O that we now had here
But one ten thousand of those men in England
That do no work to-day!


What’s he that wishes so?
My cousin Westmoreland? No, my fair cousin:
If we are mark’d to die, we are enow
To do our country loss; and if to live,
The fewer men, the greater share of honour.
God’s will! I pray thee, wish not one man more.
By Jove, I am not covetous for gold,
Nor care I who doth feed upon my cost;
It yearns me not if men my garments wear;
Such outward things dwell not in my desires:
But if it be a sin to covet honour,
I am the most offending soul alive.
No, faith, my coz, wish not a man from England:
God’s peace! I would not lose so great an honour
As one man more, methinks, would share from me
For the best hope I have. O, do not wish one more!
Rather proclaim it, Westmoreland, through my host,
That he which hath no stomach to this fight,
Let him depart; his passport shall be made
And crowns for convoy put into his purse:
We would not die in that man’s company
That fears his fellowship to die with us.
This day is called the feast of Crispian:
He that outlives this day, and comes safe home,
Will stand a tip-toe when the day is named,
And rouse him at the name of Crispian.
He that shall live this day, and see old age,
Will yearly on the vigil feast his neighbours,
And say ‘To-morrow is Saint Crispian:’
Then will he strip his sleeve and show his scars.
And say ‘These wounds I had on Crispin’s day.’
Old men forget: yet all shall be forgot,
But he’ll remember with advantages
What feats he did that day: then shall our names.
Familiar in his mouth as household words
Harry the king, Bedford and Exeter,
Warwick and Talbot, Salisbury and Gloucester,
Be in their flowing cups freshly remember’d.
This story shall the good man teach his son;
And Crispin Crispian shall ne’er go by,
From this day to the ending of the world,
But we in it shall be remember’d;
We few, we happy few, we band of brothers;
For he to-day that sheds his blood with me
Shall be my brother; be he ne’er so vile,
This day shall gentle his condition:
And gentlemen in England now a-bed
Shall think themselves accursed they were not here,
And hold their manhoods cheap whiles any speaks
That fought with us upon Saint Crispin’s day.



My sovereign lord, bestow yourself with speed:
The French are bravely in their battles set,
And will with all expedience charge on us.


All things are ready, if our minds be so.


Perish the man whose mind is backward now!


Thou dost not wish more help from England, coz?


God’s will! my liege, would you and I alone,
Without more help, could fight this royal battle!


Why, now thou hast unwish’d five thousand men;
Which likes me better than to wish us one.
You know your places: God be with you all!

I Feel Much Better Now, Really I Do

I’ve written about how overloaded the term “load test” is, and how we might spin off some of its meanings into other useful terms. The first was the endurance test.

The second spin-off can be the recovery test.

The idea of the recovery test is to deprive the application of a critical resource, then determine whether its behavior is acceptable.

Some such critical resources:

  • Memory
  • Disk space
  • Network connection
  • Database connections
  • Database integrity
  • Power

Desired behaviors:

  • Data is retained, especially user data.
  • The problem is logged as fully as possible.
  • Users are informed of the problem in a timely manner.
  • The application restarts, if necessary and appropriate.
  • The application resumes previous activities, if necessary and appropriate.

Something for a Friday Afternoon

If you’ve ever had dogs…

The Hidden Life of Dogs


(This classic Dave Barry column was originally published on Dec. 12, 1993.)

I want to talk about the hidden lives of my dogs.

Until recently, I wasn’t aware that my dogs had hidden lives. There were many times, such as when they’d take turns repeatedly eating a deceased lizard and throwing it back up, when I wasn’t even sure they had brains. Then I got ”The Hidden Life of Dogs,” the best-selling book by Elizabeth Marshall Thomas, who has some astounding insights into dog behavior. For example, in an effort to find out what dogs do when they’re on their own, she spent months following a husky named Misha as he roamed all over Cambridge, Mass. What Thomas discovered was that Misha, who at first appeared to be simply trotting around aimlessly, was in fact earning a degree from Harvard Business School.

No, I am joshing. Harvard does not accept huskies unless their parents are extremely wealthy. What Thomas discovered, after much observation, was that Misha spent his time — and here I will attempt to summarize two full chapters of ”The Hidden Life of Dogs” — sniffing other dogs and peeing a lot.

This might not strike you dog-owners as all that deep of an insight. But trust me, it seems like one when you’re reading the book. Because where you might see just a plain old dog engaging in non-rocket-scientist behavior, Thomas sees a highly sophisticated organism responding to elaborate socio-biological stimuli and performing complex problem-solving tasks. It’s not her fault that the solution to the problem is usually to pee on it.

Anyway, reading this book got me to thinking about my own dogs. Did they have a hidden life? If so, could I discover it, and — more important — write a best-selling book?

To find out, I removed my dogs from the confined, controlled environment of our house and put them outside, where they were free to reveal their hidden lives. I observed them closely for the better part of a day, and thus I am able to reveal here, for the first time anywhere, that what dogs do, when they are able to make their own decisions in accordance with their unfettered natural instincts, is: Try to get back inside the house. They spent most of the day pressing sad moony faces up against the glass patio door, taking only occasional breaks to see if it was a good idea to eat worms (Answer: No).

Of course, the dogs have important and complex socio-biological reasons for wanting to get back into the house. For one thing, the house contains the most wondrous thing in the world: the kitchen counter. One time a piece of turkey fell off of it. The dogs still regularly visit the spot where it landed, in case it shows up again. There’s an invisible Dog Historic Marker there.

Another reason is that the house provides a better echo for barking. Dogs employ barking as a vital means of communicating important messages, such as: ”bark.” Barking also serves a vital biological purpose: If a dog does not release a certain number of barks per day, they will back up, and the dog will explode. (Whenever you hear an unexplained loud noise in the distance, it’s probably a dog exploding.)

Our large main dog, Earnest, spends her day sleeping directly under my desk, and three or four times a day she’ll have a pressure buildup, causing her to wake up, lift her head, release a bark and immediately go back to sleep. Her bark, traveling at the speed of bark, quickly reaches our small emergency backup dog, Zippy, who is sleeping elsewhere in the house. He wakes up and rushes up to the outside of my office door and starts barking at it, because there is clearly something wrong inside. (Why else would Earnest have barked?) This in turn awakens Earnest, who leaps up, bonks her head against the bottom of my desk, then rushes over and starts barking at her side of the door. Each dog is firmly convinced that there is Big Trouble on the other side, possibly involving their arch-enemy, the U.S. Postal Service truck. It comes around every day, and usually Earnest and Zippy are able to drive it off by barking at it and getting spit all over the windows by our front door, but now apparently the truck somehow has GOTTEN INTO THE HOUSE and is ON THE OTHER SIDE OF THIS DOOR BARK BARK BARK BARKBARKBARKBARK!!!

This is what my dogs are thinking (if ”thinking” is the word I want here) as I get up, walk past Earnest, who is now insane with rage, and open the door. Instantly Earnest charges BARKBARKBARK into the hall, narrowly missing Zippy, who is charging BARKBARKBARK into my office. Each one goes about five feet, then — WAIT a minute!! — skids to a stop, whirls around, and charges back the other way, still barking. Sometimes they’ll pass each other three or four times before they run out of momentum and lie down again, confident that, thanks to their alertness, the house is once again safe. This is the hidden dog world that goes on every day in our house. I admit that, socio-biologically, it is not as interesting as the things that Elizabeth Marshall Thomas’ dogs do. But Earnest and Zippy are the only dogs I have. Make me an offer.

Barnacles? What Barnacles?

The term load test (along with stress test) is so very overloaded that any conversation that uses it is more likely to confuse than clarify — because the term can mean so many different things to different testers. I’ll try to spin off some of the meanings in this and other posts.

One of the spin-offs can be endurance testing. (Some testers like to say soak test, but I think it’s better to keep the slang out.)

So. A new ship has no barnacles. And what we get from the nightly build is exactly like a new ship.

Only over time do barnacles attach to the ship’s hull, growing, accumulating, increasing friction and turbulence, slowing the ship. In the same way, problems can accumulate in an application over time. And that’s why we need the endurance test.

In an endurance test, the application under test is run in a perfectly normal environment, with a perfectly normal workload. The purpose of the test is to determine whether the application continues to operate sensibly over a long period of time. (We already know that it behaves sensibly over shorter periods because of our functionality testing, right?)

There are two main things to look for in an endurance test:

  • Degraded performance
  • Resource leaks

Degraded Performance

To discover degraded performance, look for worsenings in: server response time, rendering response time, server throughput rates. A sharp change in any of these may point to a problem, but a trend is especially ominous and should be investigated thoroughly.

Resource Leaks

To discover resource leaks, monitor usage of: memory, handles, sockets, and other resources that the application uses. As in performance degradations, sharp change is an important indicator, while a trend is a serious warning.

Getting Better

Exploratory-testing evangelist Jon Bach once told me this:

  • Only one tester in ten that he’s interviewed claims to do anything at all toward professional improvement.

One way to become a better tester is to write.

Writing is the occasion for a serious review of your thinking. When you write, you learn — even if no one reads what you’ve written.

I’ve recently been documenting the architecture of the Coded UI Test apparatus I’m building. In doing so, I’ve found several refinements that were easy to implement, and were definite improvements.

Long years ago, a friend and I started making notes toward a book about debugging software (there were no good debugging books then). It changed the way we wrote code. Among other things, we did far more “defensive” coding.

Writing posts for this blog also clarifies my thinking. As a bonus, readers may have something helpful to contribute. (See here).