A common mistake that some IT professionals do is testing a product near the end of development. But in fact, testing a product should happen throughout the lifetime of the development process and not just before it is about to be finished. This ensures that anything wrong with the product can be caught early on and fixed, instead of it having all the defect discovered at the end of development. The process for software testing is to first do a unit test, next is an integration test, then a system test, and in addition, you can also do a user acceptance test.
A unit test is a test that is done to every individual part of a product to ensure that it has a little defect or problems as possible. Unit testing breaks down every part of the product and tests each part to ensure that nothing is overlooked while testing.
An example of unit testing is software is testing every method or function in your code to make sure that they each perform their correct tasks and to fix those that do not.
After the unit test is done, the integration test is next. Integration testing is taking those individual parts from unit testing and grouping them together, then test them to see how they interact with each other.
An example of integration testing is when there are different people coding for the same project, you would integrate groups of people's code to see how they interact and if there are any complications that derive instead of trying to test a whole system that can be many times larger and harder to pinpoint any errors that might arise.
After the integration tests are performed, testing the system as a whole is next. A system test is used to make sure that the entire system of what you are designing is working correctly. This can include both the software that gives commands to the system as well as the hardware that powers the system. This test anything that a user might ask the system to do and checks to see how the system will handle them.
An example of system testing is building test cases for your software to test how it will handle different inputs that are given to it and to see if any of the inputs are not covered inside of the code.
User acceptance tests are independent of the other test and are performed by end users of the product before they accept the final product. This test is more geared towards how the product will fit into their business. This is usually one of the last tests that a system will perform.
An example of user acceptance test is giving the software to end users who might be the ones using it to see if it is useful to them and to see how end users might use the system.