This, quite simply, is the process of placing someone in front of whatever is being tested and setting them a number of tasks to carry out. This can be done for websites, computer applications, mobile apps, marketing material, physical spaces and so forth.
The purpose in all cases is to find any areas where the person being tested struggles to complete a given task in order to allow some necessary re-design to ensure the everyday person trying to carry out the task, such as buying a product from a website, can be completed easily and provide a positive experience for them.
There is no single best option as each situation should be assessed on its own merits and the most suitable option chosen.
In-person user testing
When you have someone sitting beside you it is much easier to have them carry out precisely the tasks you need to. It is possible to see when they are struggling or becoming frustrated while ensuring their concentration is solely on the task.
The downside to in-person testing is that only one person can be tested at a time. It is time consuming and therefore can be costly if you need to test a large number of people.
Remote user testing
If the tasks can be designed to run in a web browser, then remote user testing may be an option. There is less control of both the task and the person (did they make a cup of tea during the task or did they struggle to complete it?) and fewer tools can be used to capture them completing the task.
However, it is an effective way to test a large number of people moderately cheaply. So what is lost in flexibility is gained in cost savings.