How do you test BPM processes? A short one is not a big problem, but a bigger one, with e.g. intermediate events, talking to some external systems, interacting with other processes etc. is a pain to run through. So how do you do it?
this is really a bigger issue. Testing business processes manually is very hard and time consuming. But Software AG has no answers here that come with the product. You might want to have a look at GreenHat ([URL]IBM Products). They provide a testing software that also has features for testing Sofware AG webMethods.
We build our own simple process testing framework so we are able to test our processes in an automated and repeatable way. I think it is crucial to have automated process tests.
OK, I’ll look into that. I’m not sure whether we can afford such a product in our project, but it may give some thoughts.
Oh, this is very interesting! Could you shed some light on the features of the framework (if you’re allowed to do so)? Not necessarily how, but at least what.
I’m coming from the Java world, and there automated tests were a commodity. I’m somewhat surprised that there is no common testing methodology for such an old product.
I also have a strong Java background and so we build a solution based on JUnit, XML and Maven. We also have Continuous integration in place.
Basically we define our tests in xml and run them using JUnit.
We have the following basic functionality:
Starting a process with a broker document or a JMS Message
[LIST]
Replace fields in the message with generated ids (because our processes have correlation ids and do not accept the same method twice)
[/LIST]
Checking if an expected task has been created
[LIST]
check the task exists
check input data
check the assignee
set output data
[/LIST]
Send Messages to a running process
Check for wait steps
[LIST]
we implemented wait steps as a custom sub process
we check if the wait step waits for the correct amount of time
we complete the wait step so the process continues
[/LIST]
This is the basic functionality we have.
The basic issues you have is the asynchronous character of the processes.
How do you find a started process?
How do you find a task that is started in the process hierarchy?
We addressed these issues by using business ids. All our process log a customId using pub.prt.log:logCustomId so we can find processes belonging to a business id.
Thank you for the insight into the framework. Yes, the asynchronous nature of the processes is a challenge to cope with in automated tests.
I didn’t quite understand what you mean by “we implemented wait steps as a custom sub process”. Also I didn’t understand how you “complete the wait step so the process continues”. By sending an appropriate message to the process? Or is there some API to let the process continue?
Anyway, that was a valuable input. I’m glad that I’m not the only one seeing necessity in some tools in this area.