A Day in the Life of a Robot Test Engineer

Who Builds Robots Series

Areeya Taylor
MistyRobotics
6 min readJun 12, 2018

--

I call myself a test engineer, but that’s just a way of covering a lot of possibilities quickly. I’ve held titles ranging from “Software Quality Assurance Engineer” to “Software Engineer in Test” to “Head of Quality”. All these different titles can be confusing, but they’re all about the same thing: using engineering to make software and hardware projects as good as they can be.

The job of leading test engineering for a robot project is my biggest challenge yet. Our robots are as complex as mobile phones, running two different operating systems. But robots also move around and interact with physical objects. Those real-world challenges are part of why test engineering for Misty is everyone’s job all the time, not just the QA department.

Debugging Misty’s electronics.

Software quality

On the software quality side, we’re not very different from any typical tech startup company. We run automated continuous integration (CI) builds and unit tests when engineers check their approved code into the repository. We try to keep the builds running regularly and successfully, add as many unit tests as we can in each sprint, while keeping up with all the software, firmware, hardware, and tool changes that also happen continuously.

We’ve recently implemented a “build sheriff” system, where engineers take turns being the one who ensures that the CI builds are passing and that fixes happen as soon as possible. This is one of the ways that we ask everyone to pitch in to help maintain the quality of our product.

For us on the QA team, our focus is on developing automated tests for our Home Robot application, APIs, tools, as well as mobile applications. We’re responsible for validating each weekly software and firmware release (yup, weekly).

Hardware quality

On the hardware side, QA works with the hardware and our manufacturing teams to design and build test fixtures to find issues with printed circuit boards (PCBs), as well as assembly and mechanical issues. The internal assembly line for our prototypes can then use these test fixtures as they build Misty I prototype robots, which is another way that quality is everyone’s job here at Misty.

We work closely with the hardware engineering team on the electronics design of the test fixtures. And we write software that integrates different test tools such as a USB-based microcontroller development system (Teensy) that sets and reads the voltage value of pins on the test fixture.

Once we build a test fixture prototype in Boulder, we work with our manufacturing partner so they can duplicate the setup. This requires a lot of conference calls and travel, as we help them bring up and debug the test fixtures.

Our post-assembly validation tests for robots include things like:

  • a driving test (ensuring the robot can drive in straight line)
  • an edge detection test (ensuring the sensors detect when the robot is at an edge or a drop)
  • a radio test (to validate its 2.4 and 5 GHz radios)
  • a charging test (to validate that the robot can charge itself via the charger)
  • vision calibration and testing
  • an acoustic test to validate speaker installation

One day at a time

With that many things to keep track of, every day is different when you’re a test engineer on a robot project. Here’s one:

7:00 am: Wake up when my dog, Max, starts to wake up. We both lay in bed for a bit. I check my phone. Max is just a sleepy-head.

7:30 am: We both finally get up, and I let Max out to the backyard.

7:49 am: Both Max and I have breakfast. Mine is homemade Sundubu-jjigae (Korean tofu stew) and Max’s is leftover chicken with nibbles.

Max enjoys another lovely morning in Boulder.

8:14 am: Take Max out for a walk. I’m grateful to be living in beautiful Boulder.

8:45 am: Back from our walk, it’s time to bike to work.

9:15 am: Got to work and make myself some tea. We have quite a few tea drinkers here at Misty, almost as many as coffee drinkers.

9:30 am: Time for the daily standup. Each person quickly goes over what they did yesterday, what they’re doing today, and whether they need any assistance. Today the Personality team is talking about how to make Misty’s eyes be expressive according to the robot’s current emotion. The Vision team is working on a new algorithm to get the robot to recognize its charger. The Programmability team is working on the new skill system. I’m working closely with the Core and Mobile teams on validating issues with network onboarding, so users can use the mobile app to put the robot onto the wifi network reliably.

9:47 am: Finish the standup. Today we also have an “after party” regarding outstanding issues with our current release. My action item is to work with the Mobile team on validating Bluetooth communication on the Qualcomm® Snapdragon™ 820.

10:15 am: Finish getting the Mobile team set up with a test version of a Misty I prototype robot that we call a “dead rabbit”. It’s essentially all the inner electronic components of the robot spread out, without its outer plastic case. This setup makes debugging issues a lot easier, since you have direct access to all the components and can swap things out easily if they don’t work. I explain all the components to the Mobile team and let them know how to connect to it to load code, etc.

Me, working on the “dead rabbit”.

10:45 am: Take this time before lunch to continue my work on implementing a continuous integration build script to create a Windows IoT Store package of our Home Robot application. There are a lot of moving pieces and versioning that need to be tracked, and we’ve been building this by hand.

11:52 am: Heat up and eat lunch quickly before my afternoon meetings.

Noon — 3:00 pm: Time for some backlog refinement meetings. Each of the engineering sub-teams have their own meeting with the Product team and Quality team. During the meeting, everyone syncs up, asks questions, gets clarification on “user stories” currently being worked on, demos features to close out any stories completed, and plans stories for next sprint.

3:00 pm: We’d previously discovered an issue with moving the robot head up and down with the Companion app. While debugging, we discover that the firmware actually sets the default head position value when the robot boots up, so the value initially set by the companion app has to be larger than the default value. In the long term, a better fix would be to implement an API that can read the current head position, so the app can just increment or decrement from the current position.

5:05 pm: Realize it’s getting near time to go home, so I quickly return some emails and walked over to chat with Lauren about the status of our current software release.

5:20 pm: Time to bike home!

More pictures of Max, what can I say?

5:50 pm: Get home and finish up some work. Keep our tech support Slack channel open to see if I can help with anything. Get a ping from our manufacturing partner about the test fixture setup. They have questions about some of the pins being used.

7:30 pm: Unplug from work, call it a day. Time to make some dinner.

8:30 pm: It’s tea and Downton Abbey time with Max and my (English) boyfriend.

10 pm: Get ready for bed. Currently reading “Watching the English” by Kate Fox. It’s helpful for insights into my English boyfriend, but it usually puts me to sleep after about two pages.

--

--