Thursday, March 10, 2016

Basics of Software Testing - Part-VIII : Firmware Testing with example

A little background about this - Each person may have their own way of testing or finding issues. They may not necessarily find my method helpful to understand the basics, this is something i'm trying to generalize for the newcomers in software/ firmware testing.  My intention is to make a series out of it, if i can and get enough motivation to write the basic stuffs.

So far we know what is a software, environment, SDLC, STLC, different types of software testing. Now, we will see how to test a firmware with example. This is purely educational purpose and not necessarily this directly apply to any device similar to this. I made this up just to give example. And i’m sure they have more robust test case scenarios to test the device than what I described.

The way I generally distinguish between a Software and Firmware is, firmware runs on device as embedded software. It directly interacts with the hardware and not necessarily needed to run on operating system/ with another software.  Similar to software, for firmware testing you have to understand what a firmware supposed to do.



Let’s try to describe a functionality of a firmware of a device. It’s a mechanical device that help patient to lift of some of the body weight and helps them to stand/walk. This machine has a bar that goes up and down using a pulley and bungee rope. That bar and the harness lifts up weight of the patient. Depending on the height and weight of the patient, it can be adjusted. To adjust the height and weight we have to press the up down button on remote. To adjust the weight automatically, we will have to use the auto unload option.  When the patient is set up normally in the harness, the patient support bar is raised by pressing button A until the rope becomes tight, then the bungee plate starts to move up.  The bar is raised until the bungee plate is in the middle between the green area.  During normal use the bungee plate oscillates up and down in this middle area as the patient walks along. Auto unload is a function that auto engages when it sense it needs adjustment between patient weight and bar height so that patient can walk with the assistance. When the auto mode on, the manual up down button will be disabled since auto take precedence.

(Courtesy: Biodex - they makes cool stuff! I used this pic just to visualize the product.).  



It has a remote that control the different movement of the bar and some other stuff. Particular button is supposed to do particular things:
Press button A to increase the load.
Press button B to decrease the load.
Press button C to raise the patient support bar.
Press button D to lower the patient support bar
Press button E to engage the auto unload
Press button D to turn off the auto unload
Now, we know what the system does. Let’s try to build some scenarios that we can start with the firmware testing.

For common operation -
  1. There are few buttons, 6 of them, on remote. Make sure buttons works/ reacts with your input.
  2. Make sure when you disconnect the cable of the remote, it does not changes anything on the machine.
  3. Check the timeout of the operation. Make sure it works accordingly.
  4. At any point of time, if the green bar shoots up, machine will immediately disengage the auto mode and allow to avoid any stangle situation.

For the Unweigh load operation-
  1. Make sure that when you press the A button, it works accordingly. It should increase the load.
  2. Make sure that when it reaches the highest limit, A button does not go beyond the limit and nothing happens after it reaches the limit.
  3. Make sure that when you press the B button, it works accordingly. It should decrease the load.
  4. Make sure that when it reaches the lowest limit, B button does not go beyond the lowest limit and nothing happens after it reaches the limit.
  5. Make sure when the auto mode on- it allows to act and does not turn off the auto mode.

For the Bar height operation-
  1. Make sure that when you press the C button, it works accordingly. It should increase the bar height.
  2. Make sure that when it reaches the highest limit, C button does not go beyond the limit and nothing happens after it reaches the limit.
  3. Make sure that when you press the D button, it works accordingly. It should decrease the bar height.
  4. Make sure that when it reaches the lowest limit, D button does not go beyond the lowest limit and nothing happens after it reaches the limit.
  5. Make sure when the auto mode on- it allows to act and turns off the auto mode since it’s the override of the auto mode.

These are some test case scenarios that we can think off. Depending on how to record or create your scenarios (using auto script or anything else) is up to you.

Testing firmware may not be that interesting as software testing, but think about when you test a firmware, for this particular example, you are saving a life of a patient. If you have not tested the product correctly then it can become very much of life threatening issue. Each of us needs to do our part of our job with responsibility. I know i get paid for testing, but i would not be able to go to sleep if i have not tested my product correctly since it involves people and life.

No comments:

Communication - it's very important in recruiting people

One of the common part of our professional life is we get mails from recruiters time to time regardless whether you are looking for job o...