The Test Masters series is created to experience testing in a fun and new way. Play games, use robots, experience new tooling and techniques to make yourself a better tester! During the meetups we organize you can try out these new tools and techniques and engage in a friendly competition with your peers. In the first serie we will dive into the Robot Challenge.

The Challenge

The Robot Challenge is a mix of feature/software/hardware testing that will make the Testers think out of the box. The Testers will work together in teams to work out the features presented by the Product Owner. When all features are worked out the teams get the chance to test the features on the presented robot. The biggest challenge will be having working software but still seeing the hardware responding differently. How will the teams handle that?

The Robot

For this challenge we wanted to do something totally different from the standard Lego Mindstorm. We wanted a robot that is fun, challenging but also easy to understand, after some searching we came up with the mBot.

The mBot is an educational robot from Makeblock. The core of the robot is a modified Arduino Uno board which enables you to add the Makeblock components like motors, controllers and sensors with ease. The mBot comes with a graphical programming language called Scratch in which they made a custom library for all the mBot components.

How do you program a mBot?

After assembling the mBot and installing Scratch it was time for the robot to move. Just like the Makeblock site specified you drag and drop functionalities, press upload and voila the robot does what you created. The question we asked ourselves was how do you test something that comes with software where you cannot create bugs? Luckily scratch had another feature: you can export the code to C++.

But looking at the code and the fact that C++ is not the latest and greatest programming language for testers we found a Node.js framework called Johnny Five. Johnny-Five is a library of JavaScript components that know how to talk to an Arduino through the “Firmata” protocol – a standard protocol for computers to communicate with hardware devices. Because the framework runs in Node.js all the devices have a mode to keep record of their own state. So if one sensor records a change the whole bot will handle according to that change.

Checking behaviour vs testing code

One of the challenges we faced during development was working with a robot sensor. The mBot is equiped with a sensor that could detect black and white. We wrote a small test: If the sensor detected black then the test should pass. With a working test it is time to deploy our software on the robot. But how do you test the color black and how black is black? First thing we did was get a white piece of paper and draw a black line with a marker pen.

But, as you may have guessed, the bot did not respond. Our black line was not black enough, so even though the code worked as designed the bot did not respond. So we tried other scenarios, a purple napkin, a printed black line and a grey shining table. The printed line and grey table were seen as black by the sensor. So even if you think your code works you still have other factors when it comes to testing a bot.

TestMasters

If you think you are a TestMaster and want to have a fun evening where you can work in a team and test a robot, please join our meetup on 18th of May. Show us that you can hit the Bullseye.

20160506_164243