Testing
It is essential to be able to confirm the system is delivering the right result. This may be as simple as listing and examining each standard function to see if an expected result is delivered.
For example, you might examine the last sale of (say) 10 units:
- Was an invoice raised to the right customer for 10 units?
- Did the right inventory item's stock level drop by 10 units?
- Was a purchase order raised to the right supplier for 10 units?
For new systems it is often possible (and prudent) to run the new system in parallel with the old/existing system for a period of time. In some cases, an existing system might just be a manual duplication of the same transactions or processes against which the results can be compared. More critical situations might require stripping down the system after a period of running checking each and every parameter and searching for any discrepancies, especially for potential left field effects like end of period aberrations.
Unit testing is another method of confirmation popular among developers. Essentially test cases and the expected results are developed for each functional unit of the application before any code is written. With each new addition, the application is assessed (often automatically) against the unit tests. Importantly the growing suite of unit tests ensures that any new additions haven't adversely impacted in any way the existing application. The integrated whole is confirmed as remaining in tip top shape.
Regularly confirming expected operation and results, by these or other appropriate methods, is an essential step towards a successful project.