Perl System Test (PEST) is a test harness, written in Perl, that enables running processes locally or on remote hosts via SSH. Test processes are defined in a simple config file for execution on remote hosts, allowing a tester to run tests serially or in parallel. The harness redirects (streams) standard out and standard error process output to an individual log for each process and logs process metadata in a separate file for each process. This means that processes don't compete for log or console output. See [Logging] for a complete explanation of the logs. The harness captures the return code and execution parameters of each remote process in its metadata log.
PEST makes extensive use of the YAML markup language for Configuration Files, a language that can be parsed by a variety of programming languages. The Test Contract, the interface between PEST and the processes it launches, is inspired by Unix's crontab and designed to be command line based, making it as simple and flexible as possible. This allows test automation to be written in any language.
While PEST was designed with System Testing (serial and parallel process execution) in mind, it can also be used for Functional Testing when one follows some simple Best Practices.
Note: PEST is not a test framework. It doesn't provide you modules to help you write individual test cases. It is only a harness, with a simple, well-defined command line interface.
pest.pl -c path/to/user.yaml -t path/to/testbed.yaml -s path/to/testbatch.yaml
Read the Design Requirements to understand PEST's origin.
Wiki: ConfigFiles
Wiki: DesignRequirements
Wiki: FunctionalTesting
Wiki: Logging
Wiki: SystemTesting
Wiki: TestContract