"System under test" (SUT) is a broad term that means the programmer, or anyone else, is testing the system in question to make sure it works. This normally is used for error correction, because the programmer should be able to fix any problems that arise during the system-under-test phase. SUT usually is used for an entire program, but it also can be used to test only certain sections of a program. This normally is done after integration testing, which ensures the program can integrate with and install on a computer.
There rarely is a system, commercial or free, that does not become a system under test at some point. This means the programmer or someone else who is trusted to identify errors is using the current version of the program. The program is not finished at this point, so there still may be many changes before the system is ready for deployment. The program also may be scaled back to make it easier for the person to go through the system, though this is not always true.
The main reason for putting a system under test is to check for errors. This normally is done by going through every single function, command, tool and anything else offered by the program. Using the tools in combination with one another also may yield unexpected errors that should be fixed. Most programs have at least one error, which is why SUT often is an important step in the system development process.
Putting the system under test normally involves the entire program, especially the first few times, so the tester can go through every function. If there is only one function that needs to be tested, then the test can be scaled back so only that function is usable. This makes it easier and faster for the tester to check the function to see if the improved programming has fixed the issue.
Integration testing traditionally precedes the system-under-test phase. This is because integration testing is used to see if the program is able to install and properly integrate with the computer. If it is unable to install, then the program usually will not execute, meaning it cannot be used. At the same time, programmers are able to change this normal order around, or completely omit the integration test, though doing so can be a bad idea.