How do you test BPM processes?

Hello.

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?

Any suggestion will be much appreciated!

Thank you

Hello,

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 (http://www.greenhat.com/solutions/test_softwareag.html). 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.

Regards,
Mathias

Hello Mathias.

Thank you for the information!

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.

Thank you once again!

Hi,

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.

Hope that helps a bit .

Regards,
Mathias

Hello Mathias.

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.