This question was asked to me in an interview.
It simplifies to knowing what you want to measure and knowing how to determine when you have measured it.
Entry criteria include:
- Knowing what sort of performance you are looking at. Eg maximum load, use of system resources at various loads, affect on response times as load increases, long term stability (eg memory loss), and several others.
- Stability of the system's hardware and software. Do not want unexpected changes to the system during testing. On the other hand, some tests are about comparing performance of different configurations.
- Availability of system for running the tests. Commonly want it to be dedicated to the testing so that other users do not disturb the test process.
- Availability of key personal to monitor the system during the tests and be available to shut things down or to reset things in case of issues. (Anecdotally, there have been cases where supposedly isolated systems have actually used the same network resources as the active and live system. So a performance test that should have been isolated caused major distress to the live system.)
- Sufficient resources available for enough test runs for long enough duration to be confident in the results.
- Ability to restore the system's databases from backups so that each test or group of tests starts from the same state. (If restores are not done then how could you properly compare the results from different test runs?)
- How performance problems are to be handled. Is the test to just create a report and leave it to others to resolve? Will the tester(s) be expected to advise on how to resolve performance issues? Will the system's developers be expected to modify (ie tune or adjust configuration data in) the system between test runs to respond to performance issues.
Exit criteria include:
- Tests have been run.
- System performance has been assessed according to the goals of the testing.
- Test report written and passed to relevant people.
- Fault reports written for any issues. (Performance testing often finds functional or usage issues.)
- Performance goals have been achieved - only applies if the testers are working with the developers to (iteratively) test and tune the system until it meets the goals.
Ask clarification questions, and lead the other side to give you an answer.
It's always a good advice, but especially true for interview questions.
Let's use your question as an example-
How do you define performance testing ? what is our goal- do we want to verify the product can achieve X or do we want to investigate and find out what X is ?
What are we testing ? a product, submodule, system of systems ?
Do we want performance testing to catch functional problems as well or can we expect it to be functionally tested ? how stable is the product ?
In what stage is our product- an old product with a lot of performance data ? a new product under development ? a product going through perfornce improvement stage ?
I guess you understand where all this leads to...