I work in finance and my firm would really like me to automate our execution platform's testing suite. Right now the tests communicate directly with the system; they are extremely brittle and tightly coupled to changes in the SUT (System under Test). I want to abstract it in the form of a testing framework, but I'm having a hard time thinking of a good design strategy to do so.
Right now the app has this kind of behavior:
- Listens for request from client
- Perform few operation(s) based on some logic on that request
- Modifies the message to be in the form of the specific exchange (vague because it is a complex process and the information added/modified isn't important)
- Sends it off to the exchange
The above is the general workflow, but it can also do internal rejects for things that range from bad client requests, invalid exchange definitions, etc. It also publishes updates from the exchange back to the client and several other internal systems.
Given the above application description, how would you design a framework to test it?
I am looking for answers that are at the design level. The implementation details are not important at the moment as I am looking for places to get started.