I'm trying to identify the best approach to begin automating the testing of an existing software system, so that we can refactor as needed with more confidence.
We have some automated unit testing, but system testing is still a very manual and tedious process. It can take a week or more to completely test the system, so it is done very infrequently.
Since it is going to take a considerable amount of time and effort to automate this testing, I want to make sure that whatever test method/framework we choose is a good fit.
Some relevant characteristics of this system are:
- Core system consists of multiple background processes running as Windows services.
- Configuration files define the mode and various options for each process.
- Inputs to the system come in the form of data files or web service requests, or both.
- Outputs from the system can be web service responses or data files, or both.
A typical system test would be:
- Install new build on a test system.
- Set up configuration files for specific mode and options being tested.
- Start the processes.
- Copy input data file(s) to configured input folder(s).
- Wait for system to process the input and create output file(s).
- Verify output file contains expected data.
Web service APIs are optionally used to do things such as request status or trigger the processing of input data files.
I'm currently thinking that developing a custom test framework in PowerShell is the best option, but would be very interested in any other suggestions.