Final answer:
The main objective of software testing is to uncover software errors to ensure the product functions as intended. While testing can provide indirect insights into development practices, it does not aim to assess programmer productivity, nor can it eliminate all future program maintenance or every error before release.
Step-by-step explanation:
Software testing has several objectives, but the primary one is to uncover software errors. This ensures that the product functions as intended and helps maintain quality. Option A, determining the productivity of programmers, is not a direct objective of software testing, though testing outcomes can indirectly provide insight into development practices. Option B, eliminating the need for future program maintenance, is unrealistic since maintenance is an ongoing part of a software's lifecycle. Option C, eliminating every error prior to release, is an ideal but not practical goal, as it is very challenging to find and fix every single error, especially in complex systems where some issues might only arise in specific, unforeseen circumstances.