Design Requirements
PEST's design is the culmination of a lot of experience with distributed system testing. As always, mistakes are the best way to learn, so PEST corrects many of the mistakes inherent in other test harnesses by getting the requirements right.
- Leverage existing scripts.
- Don't prohibit tests being written in any language.
- Support Standard Testbed Descriptor to allow test portability.
- Remote process invocation.
- Minimize output buffering.
- Support threading/backgrounding.
- Allow continuous manual monitoring of individual test processes.
- Clear separation between the harness and test scripts with a standard interface contract. Execute test scripts outside of the harness for debugging and reproduction.
- Support standard execution synopsis.
- Clear separation of log metadata and data and harness debug logs.
- Easy debugging of individual processes.
- View exact command issued.
- Easy means to map scripts to test case database IDs.
- Easy to create a test case batch, mapped to a test case database 'run' or 'suite'.
- Support positive and negative test cases.
- Support system (parallel) and functional (serial) testing.
- Test execution should not require development skills.
- All config files must be copied along with the logs for reproducability.
- Logs should tell the user what's going on with the systems under test and not be obfuscated by framework control flow progress.
- The harness should optionally send the user an email with a summary of the test results and link to the logs.
- Harness log and harness output must summarize process activities and report totals.
- Harness log and harness output must report activities prior to execution.
- Harness log and harness output must report run metadata, including log paths at the beginning and end of the output.
- Minimal external module dependencies.
- Architecture must allow for local or network installation of the harness, the test framework(s), and the logs.