Test types are introduced as a means of clearly defining the objective of a certain level for a program or project. A test type is focused on a particular test objective, which could be the testing of the function to be performed by the component or system; a nonfunctional quality characteristics, such as reliability or usability; the structure or architecture of the component or system; or related to changes, i.e confirming that defects have been fixed (confirmation testing or retesting) and looking for unintended changes (regression testing). Depending on its objectives, testing will be organized differently. Hence there are four software test types: