Testing is meant to find defects in the code, or from a different angle, to prove to a suitable level (it can never be 100%) that the program does what it is supposed to do. It can be manual or automated, and it has many different kinds, like unit, integration, system / acceptance, stress, load, soak etc. testing.
Debugging is the process of finding and removing a specific bug from the program. It is always a manual, one-off process, as all bugs are different.
My guess is that the author means, that on Level 0, only manual tests are performed, in an ad hoc fashion, without a test plan or anything to ensure that the tester actually thoroughly tested the feature under test, and that the tests can be reliably repeated.
A process is a series of actions or operations leading towards a particular result. A technique is a practical method, skill, or art applied to a particular task.
Unit testing is both a process and a set of techniques. You employ the process to achieve your particular aim, which is to obtain a level of confidence that the software works as it should. But you apply a set of techniques to execute that process, which are the skills you developed to implement your unit tests.
Best Answer
According to the various answers found here and on Wikipedia, soak testing seems to be a test of normal sustained use for a long period of time. This is done to to ensure bugs or memory leaks do not appear after what is considered to be a relatively "normal" usage period.
Stress testing is also a form of reliability test that tests beyond normal usage of the application for a shorter time to see if it breaks or not. In that category you can typically find testing how the application behaves when a lot of concurrent users are connected and system resources start to lack (memory, processing time, bandwidth, etc.)