Final answer:
Option D is correct as functional and non-functional testing can be carried out at any test level, whereas white-box testing is restricted to component level and integration testing.
Step-by-step explanation:
The correct statement about test types and test levels is option D. Functional and non-functional testing can be performed at any test level, including unit, integration, system, and acceptance levels. However, white-box testing is generally performed at the component (or unit) level and at the integration testing level.
White-box testing involves looking into the code structure and is often used during initial development phases like component and integration testing. This is because the knowledge of code and internal workings are essential for conducting white-box tests effectively. On the other hand, functional testing – evaluating the system against the functional requirements/specifications – and non-functional testing – checking the system attributes such as performance, usability, reliability, etc. – can be applied at any level to verify and validate the expected outcomes of the system in its entirety or of a particular function.