How to Test a Robot Vacuum?

True to form, I’ve recently bought a new piece of technology and while watching it operate I thought “I wonder how you’d test this?” :thinking:

The new technology in question is a robot vacuum :grin:

At the face of it, this looks like a simple piece of kit, there’s a switch on the side to power it up and then an On/Off button on the top to start vacuuming. I know it’s not as simple as it seems and thought I’d open the floor to suggestions of how you would test a robot vacuum?

1 Like

Around here it’s usually the torture test: with 3 cats, one of them long-haired, the floor needs a lot of sweeping.

“Oh, wait, the Roomba’s still running after an hour? That’s one dedicated little robot… Hang on, it just tried to eat the Husband’s headphone cable. The cats knocked the headphones to the floor. Again.”

1 Like

Interesting question! I can imagine these companies could have thousands of tests. To save costs and speed up delivery I’d use pyramid approach:
For example,

  • Test all firmware, Sensors, alarms, memory, Mobile app, floor coverage algorithm, fall/bump/corner detection logic and re-routing etc at unit level e.g. by mocking or using stubs etc. This is where I imaging 80-85% of tests would happen in automated way
  • Some integration tests between app and hardware (again can be partially or fully automated depending on what response / signals are sent by hardware)

Then comes the interesting real-world experiments:

  • Physical sensors test using different materials,fabric, liquid, glass, wood, carpets , stone, sand, etc
  • tests for wheels, sweepers, on various material
  • corner detection
  • floor coverage (algorithm), floor slopes, material transitions,
  • battery tests, range test,alarms, circuit board quality checks
  • durability, stress tests,
  • App UI/UX, device support

I’m sure I might have missed a few categories but these are some I could think of to start with.


Alarms is an interesting one. I’m still struggling to match the alarms that our one emits with the descriptions in the user manual

The closest I’ve come in real life came some time before my “official” testing career, where I spent some months testing the software for car windows and sun roofs. Before then I never even knew those things HAD software.

The reason I mention this is that my test approach might be similar. We’re dealing with a motor, some moving parts, and potential access to things which aren’t supposed to go in there!

It’s that last point which I would likely approach first. If everything else on Floor-a is perfect, but some kid loses a finger, then your business is done. If Floor-a (by the way, great name, I’m using it for all Roombas forever now) is loud and only picks up half of what it’s supposed to do, you will lose customers, but you may recover.

So the first thing I will do to the thing is pick it up. When I pick it up, does the motor stop? And not just go into coast mode and spin to a halt… It has to STOP. (Don’t have one of my own, but my in-law’s robot grass mower does just that).

My next bit of test tooling would probably involve a ruler. Are there any gaps big enough to fit a baby’s finger in? How about a cat’s paw? (and no, as a software tester, this isn’t technically my job, and yes, I would STILL DO IT)

Even if there isn’t enough room for curious appendages to find more trouble than they want, I would still put big things in the brushes. For the windows thing, we used sticks of balsa wood. That might be appropriate here too. We don’t want to require a lot of force to trigger even more safety features. (This being said, elastic is a fun testing tool, as it could gum up the works. My daughter’s hair is a brilliant tool for killing hoovers.)

I could go on, but I won’t. But after a seemingly absurd time thinking about ways someone could hurt themselves or their house, I could then start thinking about “does it do what it’s supposed to do?”


aha, these are really good points @brian_seg :+1:

The reason I like this one is that it takes risk into account. The impact of this risk is high, so it should be tested first, just like you say.