Testing Levels
There are many types of software testing levels identified and in use today; in fact Guru99.com lists 100 of them in alphabetical order. Testing levels have specific focus and goals, and there are benefits and limitations to each. It is important to note here that there is no testing level that guarantees successful, high quality software!
Common Testing Levels:
Unit: A functional testing level that examines the smallest pieces ("components," "modules" or “units”) of software code. Examples: entering a name and confirming it is saved to a field, or if the “ok” button is clicked the process moves to the next screen. Unit Testing's focus is to confirm that the software coding was done correctly and that individual pieces of the software work as designed. Unit Testing is often performed by the software developers as a way to check their work, although in large or complex projects a testing team may also be involved.
Integration: Also a functional testing level, that combines smaller test components to ensure that a user can correctly navigate through multiple software steps or processes. Later rounds of Integration tests focus on software correctly interacting with internal and external systems, and that data integrity is maintained as it passes through different areas of the code. Typically performed by a test team.
Performance: A non-functional testing level that examines software quality and its effects on existing systems. Does the software respond within a sufficient period of time? What happens when thousands of users are using the software at the same time? Is the software and systems able to be easily adjusted when more users or data are added, or if a key piece of hardware goes down? This type of test often involves automated tools to emulate and track hundreds or thousands of “virtual” users, and is usually performed by a test or technical team familiar with the automated testing tools.
User Acceptance: A high level test that is completed before the software is released to market. Usually performed by the area that created the software requirements or who will be using the software, to check that the final software and user interface look and work as intended, e.g., screen designs, error messages, navigation, etc.. Any issues found during this test are usually future enhancements to the software, and are fixed at a later time -- often as part of a different testing project.
Common Testing Levels:
Unit: A functional testing level that examines the smallest pieces ("components," "modules" or “units”) of software code. Examples: entering a name and confirming it is saved to a field, or if the “ok” button is clicked the process moves to the next screen. Unit Testing's focus is to confirm that the software coding was done correctly and that individual pieces of the software work as designed. Unit Testing is often performed by the software developers as a way to check their work, although in large or complex projects a testing team may also be involved.
Integration: Also a functional testing level, that combines smaller test components to ensure that a user can correctly navigate through multiple software steps or processes. Later rounds of Integration tests focus on software correctly interacting with internal and external systems, and that data integrity is maintained as it passes through different areas of the code. Typically performed by a test team.
Performance: A non-functional testing level that examines software quality and its effects on existing systems. Does the software respond within a sufficient period of time? What happens when thousands of users are using the software at the same time? Is the software and systems able to be easily adjusted when more users or data are added, or if a key piece of hardware goes down? This type of test often involves automated tools to emulate and track hundreds or thousands of “virtual” users, and is usually performed by a test or technical team familiar with the automated testing tools.
User Acceptance: A high level test that is completed before the software is released to market. Usually performed by the area that created the software requirements or who will be using the software, to check that the final software and user interface look and work as intended, e.g., screen designs, error messages, navigation, etc.. Any issues found during this test are usually future enhancements to the software, and are fixed at a later time -- often as part of a different testing project.