During the design process, test engineers begin to design the corresponding
test cases based on an appropriate methodology. The test engineers and
design engineers work together to ensure that features have sufficient testability.
Often, the test engineer can point out problems during the design
phase, rather than uncover them during testing.
There are a wide range of testing techniques for unit testing, integration
testing, and system level testing. Any one of these test techniques can be
either insufficient or computationally unfeasible. Therefore, some combination
of testing techniques is almost always employed. [Source]