Testing a Point of Sales (POS) Application

How to test POS Applications?

Testing point of sales (POS) systems is something that we have done a lot of here and I wanted to share an overview of what POS application testing entails.

A POS is a computer that is used instead of an old fashioned cash register. It’s more like a personal computer connected to a receipt printer, cash drawer, credit/debit card reader and a bar code scanner.

Goals of a POS Application Test Plan

A good POS test plan should ensure the following:

  1. The system makes the process of paying for an item simple and fast. This can be accomplished by scanning the item with a barcode scanner, totaling the purchase and accepting payment easily through credit, debit, gift cards or by cash.
  2. It gives the customer the option to pay part of the bill by cash and part of it by a Credit/Debit/Gift card. The process of paying with multiple options should be simple and fast so that customer does not have to wait to process their orders.
  3. A good POS system allows you to suspend a transaction for a particular customer with one touch in case the customer forgets something while letting the cashier help other customers who are waiting for the checkout. When the customer with the suspended transaction returns, the system should retrieve the transaction and complete it without re-entering all the items.
  4. The system keeps track of what your customers are buying and who they are. It keeps track of what’s selling, at what times of day or week, to which types of customers and by which sales people. The data collected from POS terminals is useful in planning of long term strategies. A good POS System will also have reminder dates for each customer so you can call or e-mail them prior to an anniversary or birthday.

Testing of POS applications

In today’s competitive business, a POS can be a key differentiator for retailers. It needs to meet changing business needs under tight budget and aggressive timelines. So it is very important for POS applications to be reliable, scalable, easily maintainable, highly secured, and easily customizable by the customer.


  1. Multiple Configurations: Testing a POS application with different settings and configurations is a cumbersome task. Test cases should be designed covering each and every scenario (valid or invalid) in detail. Therefore significant budget should be put in testing of such applications to prevent any major issues at the customer end.
  2. Peripheral issues: The peripheral issues may be related to devices which are connected to a POS like barcode scanners, scales, printers, towers and cash drawers.
  3. Complex interfaces: Integration of POS System involves numerous interconnected systems and third party elements. Systematic test design techniques are followed to reduce the complexity of interfaces
  4. Test Lab Maintenance: As a significant amount of hardware is normally connected to a POS, so it requires a large amount of space to house this hardware. You also have to put some effort and expense in to keeping the hardware is in good repair.
  5. Upgrades: Rapid technological advancements necessitate a frequent hardware and software upgrades which requires more infrastructure.
  6. PCI Compliance: Care must be taken to adopt of PCI-compliant, tamper-proof infrastructure at all POS terminals to protect cardholder data and identity.

POS Test Stack

  1. System Testing: System testing involves testing the complete, integrated system against the requirements specified in the requirement documentation. It aims at finding defects within the system as a whole. It includes testing of complete workflows from ordering an item to settling of checks through different modes of payment and generating reports.
  2. System Integration testing: It aims at evaluating the software in terms of its co-existence with other third party software. For instance, in POS applications third party software like CRM systems are integrated and tested to find major flaws in their interactions.
  3. Business layer testing includes testing of:
    • Hardware Settings and Hardware Units: Testing of hardware devices connected to a POS application with different and configurations.
      Barcode Scanner: Testing of barcode scanners to check whether it reads the code of an item correctly and displays price corresponding to that item.
      Printers: Testing of printers to verify whether the correct information related to an item is printed on various receipts generated at the printer. Correct information related to the customer, his ordered items and total should be printed on the receipts.
      Scale: Testing of scales used to weigh items sold by weight. The scale should display the exact quantity of an item which is placed on it to weigh and its price should appear according to the weight of the item.
      Cash Drawer: Testing of Cash Drawer to check whether it opens when an order is placed or when a check is settled.
      Tower: Testing the tower that displays the ordered item and its price. This helps customer to see what he has ordered. It also displays the due amount, tendered amount and the change given to the customer. A tower is tested against this information to check if correct information is displayed on it.
    • Normal and Abnormal Scenarios: This involves testing of POS application with valid and invalid data. This testing is performed keeping in mind that the application does not crash on entering the invalid data.
    • Business Transaction flow tests: These tests involve testing the complete workflow from ordering an item to the settlement of the check.
  4. Reporting Tests: This involves testing of reports. The reports are an important part of the POS application which keeps track of all the transactions that take place on a particular day, in a particular week, month or year. These reports need to be verified to check that they show the correct information related to sales, transactions etc… The reports must also be tested to see if they are properly apply any filters.
  5. Regression Testing: This is testing which is performed to verify the application after a new functionality has been introduced into the application to checks that this has not hampered other parts of the application which were working correctly earlier. Regression testing may also be performed as a result of some bug fixes.
  6. Performance Testing: Performance of the system should not degrade with the increase in size of data in the database.


(Note: This blog post has been updated with new information.)