Monday, January 12, 2009

Leave It Alone

I tend to think of testing as a very active thing: I am doing something to the system. Maybe I'm installing it, maybe I'm writing data to it, maybe I'm logging in to it, who knows... that point is that I'm doing something.

This misses an entire class of tests.... tests in which I do nothing.

Most systems, including the one I work on, are not ever really idle. Sure, the end user may be doing nothing at all, but the system is still doing things internally. It's doing integrity checks, heartbeat is running, it's rebalancing data, it's logging system information, etc. Your system probably does something else, so substitute your own background goings-on here.

So what happens to my system when I just leave it alone for a day? A week?

Things that I look for here:
  • Memory usage. You find a lot of slow memory leaks here because you can't dismiss the increased memory utilization as a consequence of system usage.
  • Space usage. Like memory, but for disk space.
  • Transition to idle. As the system goes idle - winds down from the last thing you did - what does it do? Do queues go to zero? Does memory utilization stop? Does the system start throwing errors because it's depending on utilization for monitoring?
  • Flushing. There are often queues and reserved space, and actions that are triggered when you have "2% used space" or "100 items in the queue". What happens when you stop adding new things? Do those processes still work on the last few items, or does the system fail to handle it's last requests?
Sometimes when you're not using a system, you really are doing a test. Go ahead, leave your system alone for a bit.

No comments:

Post a Comment