How many times have you been sitting around for hours in a hospital waiting room and wished that you could grab a quick snack without missing your appointment?
Or maybe when you wanted to grab a quick snack late afternoon when you’re feeling your sugar levels dip?
Or how about THAT morning when you have a client meeting, missed breakfast and are more worried about your stomach grumbling and embarrassing yourself?
Thankfully there’s a saving grace.
The Vending Machine!!!
Modern vending machines have been around since the late 1880’s.
Invented by Percival Everitt in London, they dispensed postcards which later became incredibly popular around the world.
In the US, the first vending machine was used in 1888 and dispensed gum.
In this article, I will give you a list of test cases for a vending machine as also talk about considerations from a testing perspective.
Table of Contents
Before We Begin – Context and Scope
Before we begin, I want to make it clear that the test cases discussed in this article primarily talk about a ‘generic’ vending machine.
The context of the test cases that are listed below are focussed on a machine that dispenses bars and bags. The Vendo Machine by Mars is a good example.
If you need to test anything specific, the concept is still the same, just ensure you add appropriate test cases.
Learn how to write test cases that even your Grandparent can write!
Before you start writing your test cases, you should take the following points into consideration.
Consult specific Documentation
In order to test the software correctly, you should ALWAYS consult any documentation for the specific model you have.
For example, requirements, user guides and operating manuals etc.
Innovations
Consider innovation and ever changing technology.
For example, contactless payment systems are now becoming the norm in Europe and in the Western world.
Digital currencies such as Bitcoin and Ethereum are also starting to take off so should be a consideration when testing vending machines.
In countries like the United Arab Emirates, vending machines are being used to vend gold bars and not just snacks and beverages.
As a result, you might also want to think about the capability of testing additional items your vending machines could dispense.
Funnily enough, I’ve even heard of vending machines that dispense cars. Yup, you heard that right.
Now just imagine if you made the wrong selection?
That would be one seriously annoyed customer.
It actually makes me laugh but also blows my mind.
Security Considerations
Whenever you have a product or service that involves money, it’s likely that it will be open to attack.
Therefore, security must be of high importance.
One of the things you need to look at is how someone can potentially get a product for free.
Being a skinny schoolkid and having the thinnest arms, I remember trying to put my hand in the bottom and trying to lift the flap to try and get a can of drink out.
It never worked.
Another trend in the early 1990’s was putting foil around two 5p coins in making the machine think it was a £1 coin.
That never worked either and often it got stuck in the machine.
You ended up losing your money.anyway.
You get my point.
People will always try to outsmart these machines, so you need to try and think with a similar mindset.
Uses for a vending Machine
The possibilities of what a Vending machine can be used for are endless.
I can’t list them all here or we’d be here all day.
However, I do want to add a few different types so that you can get a feel for what’s available, and to let your ‘testing’ brain get to work.
A coffee machine is one that instantly comes to mind.
I remember on a late evening in November 2019 when I had to visit Great Ormond Street Hospital in London and the canteen was shut.
I was starving and as I left the canteen, there standing in the corner was this bright shining vending machine where you could purchase ‘proper’ food.
I found it really intriguing.
I opted for the vegetarian curry.
So I put in the money in, out it came and then all you had to do was to warm it up in the microwave provided.
I’d never seen that before.
The curry tasted absolutely disgusting but thats beside the point.
It was very convenient and very user friendly.
No wonder these things are so popular.
Anyway.
Interesting Engineering wrote an article which is not only interesting (excuse the pun) but funny at the same time.
If you want to have a laugh, then watch the video below which also shows vending machines that you may not have known existed.
You should get some ideas on functionality and usability.
Functional test cases
So now that we’ve got an idea, let’s get down to the actual test case for your vending machine.
The purpose of the functional test cases is to ensure that you can run them during a System Test or System Integration Testing level and prove that each functional requirement has been validated.
You may need to break down each test case further into steps if you want to test to a granular condition level.
End User Selects a Product
We want to ensure that each functional area works individually before it can be tested end to end.
The test cases below consider an end user of the machine who wants to purchase a product.
TC ID | Test Case Description | Expected Result |
TC-SP-001 | Verify User can Select product on keypad | The keypad is working User selection is displayed on the keypad. The system will prompt the user to make a payment. |
TC-SP-002 | Verify User has inserted cash | System displays how much money user has entered on the keypad. The number is accrue as the coins are inserted. |
TC-SP-003 | Verify User has inserted correct money (exact change) | The system will display the amount entered is the amount required to dispense the product. |
TC-SP-004 | Verify Not enough money is inserted | System will display amount entered When user selects a product greater than the amount inserted, the system will display a message, for example “Not enough funds”. User will not be able to select the product. System will NOT dispense the product selected. |
TC-SP-005 | Verify change has to be given when user inserts more cash than product cost. | The system will display the amount entered on screen. The product will get dispensed first. The change will also be dispensed. For example, product cost is £0.70 and the user inserts a £1 coin. The vending machine will dispense the product followed by £0.30 in change. |
TC-SP-006 | Verify correct product is dispensed when selected | The product selected will also be dispensed, Note: You should visually check this to ensure the product selection corroborates with what has ACTUALLy been stocked. |
TC-SP-007 | Verify product selected is out of stock | The system will display a message informing the user that the product is out of stock and to make another selection. For example “Sold Out”. The system will not have accepted any payment at this point. |
TC-SP-008 | Verify refund/return money feature returns correct money | |
TC-SP-009 | Verify not enough change is available when user inserts enough money. | The system will display the amount entered in cash on the display. When the user has selected their product and there is not enough change, the system will; Return a message informing the user there is not enough change Not dispense the product. Or in some cases, the message rtutned may be; “Use Correct Change” Note: In some cases, I have noticed that some machines DO dispense the product but do not give change. Thieving toeags! |
TC-SP-010 | Verify shaking machine does not dispense any product | Message will be displayed telling the user that shaking machine will not dispense any products or money. The machine will NOT dispense any product. Note: In some cases, the machine may automatically switch itself off when it detects someone is tampering with it. |
TC-SP-011 | Verify shaking machine does not dispense any money | Message will be displayed telling the user that shaking machine will not dispense any products or money. The machine will NOT dispense any money. Note: In some cases, the machine may automatically switch itself off when it detects someone is tampering with it. |
TC-SP-012 | Verify contactless payment is approved | Product has been selected System is asking for payment When user taps Card, the payment is processed and ‘Approved’. Product is dispensed and you can happily enjoy your day. |
TC-SP-013 | Verify contactless payment is rejected | Product has been selected System is asking for payment When user taps Card, the payment is processed and ‘Rejected’. Product is NOT dispensed. You’re left annoyed, hungry and slightly embarrassed! |
TC-SP-014 | Wrong product was selected by mis-typing on keypad. | This is your fault and you should be a bit more careful next time. Enjoy your product! |
Back-End
Don’t forget that a Vending machine has a whole back-end system. In this section we’ll go through the more technical and admin features you need to look at testing.
Non Operational Mode
TC ID | Test Case Description | Expected Result |
TC-BE-001 | Verify vending machine can be put in service mode | The display will inform the user that the machine is currently ‘out of service’. No products can be purchased. |
TC-BE-002 | Verify machine can be put in operational mode. | Prerequisite: The machine must be in a non-operational mode to confirm this works. The system does not display the machine as ‘out of service’. User’s are able to purchase products. Post Requisite: Run a ‘stand up’ test to ensure product is dispensing as expected. |
Set Pricing
When setting pricing, ensure the vending machine is in a non-operational mode.
TC ID | Test Case Description | Expected Result |
TC-SP-001 | Set price for a specific product | The screen will display the current price and allow a change to a new price. The user should be able to select the row and price. Note: Please consult your requirements documentation on how to doi this. Post Req: Run a stand up to ensure the product dispenses at the correct price. |
TC-SP-002 | Set price by row | The entire row should have the same price. Note: Please refer your requirements on how to do this. Postrequisite: Run a stand up test to ensure that each item in the same row dispenses at the same cost. |
TC-SP-003 | Set the same price for all products | All products will be the same price. Note: Please refer your requirements on how to achieve this. Postrequisite: Run a stand up test to ensure that every item in the vending machine dispenses at the same cost. |
Temperature Control
TC ID | Test Case Description | Expected Result |
TC-TC-001 | Verify the vending machine is operating at the correct temperature | The system will display the expected temperature once the Admin/Engineer has logged into the systrem Note: Please check the requirements for what the temperature will be. This may vary depending on the type of product being dispensed. |
TC-TC-002 | Verify the vending machine is operating at the incorrect temperature | The system will display that the temperature is incorrect. Note: Please consult your requirements on how this will be achieved. Ultimately, the system must be able to capture that the temperature is incorrect and be able to let the Admin/Engineer know so it can be resolved. |
To get some ideas watch this
Or watch this to get an idea of the User Interface
Money Stock and Sales Reporting
Your test plan should also include test where the system verifies the money in the vending machine.
TC ID | Test Case Description | Expected Result |
TC-MS-001 | Verify Sales Data Note: To test, purchase a set number of items. Make a note of exactly all quantities of products available in the machine, all products purchased, their cost and total sales value. | The data the vending machine returns will corroborate with the number of items and sales made. Run a visual eye check to ensure it all reconciles. |
Replenishing / Stocking up
TC ID | Test Case Description | Expected Result |
TC-RS-001 | Verify alert when module is removed correctly | |
TC-RS-002 | Verify bar module(s) only accept bars | |
TC-RS-003 | Verify Maximum stock level has been reached | |
TC-RS-004 | Verify module is inserted correctly | |
TC-RS-005 | Verify alert when module is not properly closed | |
TC-RS-006 | Verify no more than one module is removed Assumption is that only 1 module can be removed at a time. |
Detect fake coins
Having fake money in vending machines it a loss for the business owner and encourages people to continue to commit fraud.
As a result, its important for machines to be able to reject fake money.
TC ID | Test Case Description | Expected Result |
TC-DC-001 | Enter an ineligible coin Disclaimer: Please DO NOT use counterfeit money. One of the best ways to test the vending machine is to check currencies of other countries that may be similar in size and weight. Only do this if you have permission and NOT on live machines. |
Payment considerations
When it comes to making payments, you might want to also consider the following options.
– Coins
– Contactless
– Card
– Apple Pay
– Crypto currency payment
Maintenance and Erros
Every now and again your system may have some technical issues.
The model that you’ll be testing may have a number of error codes.
You should test each error code by trying to create the correct test conditions to generate the error.
TC ID | Test Case Description | Expected Result |
TC-CODE-[CODE ID] | Verify Error Code Note: This test should be replicated many times until all error codes have been covered. | The error code is displayed on the screen. |
Notes / Observations
Check to make sure which products your vending machine can support. For example, can it only support, bars, bags and drinks?
Most vending machines will allow you to;
- Select a product and then enter payment
- Or enter payment (mostly cash) and then select product.
Just be mindful that you may have to tweak your test cases accordingly, especially when it comes to refunds.
Test Case Maintenance and Regression Test Pack Creation
We can’t talk about testing if we don’t mention a regression test pack.
Your Ultimate Guide to Regression Testing
As I mention quite a lot on this site, one of things I love about creating test cases is that you can use them over and over again.
Having a regression suite will allow you to spend less time developing test cases in the future and will also allow you to have a baseline of the system.
Please ensure that your post Test Execution housekeeping is done correctly to make your life easier for the future.
By that, I mean ensure you update the test cases before updating your regression test suite.
Summary
After writing this article, I have much more appreciation of vending machines and the technology that goes into them.
In fact, I’ll never look at them in the same way.
I thought that writing test cases for them would be quite straightforward but once I went down this rabbit hole, I realised how complex the subject can become.
Specialised vending machines that can dispense almost anything were particular interesting and this is exactly what will appeal to you as a Tester..
I hope you found this article as enjoyable as I did writing it.
The next time you ask yourself, “how would you test a vending machine?”…, hopefully you’ll remember this article.
Feel free to share with with other colleagues who you feel may benefit from this.